sigal 2.4__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.
- sigal-2.5/.github/dependabot.yml +15 -0
- {sigal-2.4 → sigal-2.5}/.github/workflows/publish.yml +7 -7
- {sigal-2.4 → sigal-2.5}/.github/workflows/python-tests.yml +5 -4
- {sigal-2.4 → sigal-2.5}/.pre-commit-config.yaml +4 -8
- sigal-2.5/.readthedocs.yml +20 -0
- {sigal-2.4 → sigal-2.5}/AUTHORS +9 -2
- {sigal-2.4 → sigal-2.5}/PKG-INFO +8 -13
- {sigal-2.4 → sigal-2.5}/README.rst +3 -4
- {sigal-2.4 → sigal-2.5}/docs/album_information.rst +2 -2
- {sigal-2.4 → sigal-2.5}/docs/changelog.rst +24 -0
- sigal-2.5/docs/conf.py +100 -0
- {sigal-2.4 → sigal-2.5}/docs/faq.rst +0 -2
- {sigal-2.4 → sigal-2.5}/docs/installation.rst +3 -1
- {sigal-2.4 → sigal-2.5}/docs/license.rst +3 -0
- {sigal-2.4 → sigal-2.5}/docs/plugins.rst +3 -10
- {sigal-2.4 → sigal-2.5}/docs/themes.rst +1 -1
- {sigal-2.4 → sigal-2.5}/pyproject.toml +11 -14
- {sigal-2.4 → sigal-2.5}/src/sigal/__main__.py +6 -1
- {sigal-2.4 → sigal-2.5}/src/sigal/gallery.py +24 -9
- {sigal-2.4 → sigal-2.5}/src/sigal/image.py +21 -4
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/compress_assets.py +4 -3
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/encrypt/encrypt.py +1 -1
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/encrypt/endec.py +2 -2
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/extended_caching.py +5 -1
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/nomedia.py +1 -1
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/titleregexp.py +2 -2
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/zip_gallery.py +1 -1
- {sigal-2.4 → sigal-2.5}/src/sigal/settings.py +12 -1
- {sigal-2.4 → sigal-2.5}/src/sigal/templates/sigal.conf.py +9 -11
- sigal-2.5/src/sigal/themes/default/templates/description.html +29 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/templates/footer.html +3 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/templates/album_items.html +2 -23
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-dynamic-caption-plugin.esm.js +414 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-dynamic-caption-plugin.esm.min.js +5 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-fullscreen.esm.js +129 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-fullscreen.esm.min.js +8 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-lightbox.esm.js +1960 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-lightbox.esm.js.map +1 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-lightbox.esm.min.js +5 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-video-plugin.esm.js +257 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe-video-plugin.esm.min.js +1 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe.css +420 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe.esm.js +7081 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe.esm.js.map +1 -0
- sigal-2.5/src/sigal/themes/photoswipe/static/photoswipe.esm.min.js +5 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/photoswipe/static/styles.css +53 -0
- sigal-2.5/src/sigal/themes/photoswipe/templates/album.html +93 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/utils.py +4 -1
- sigal-2.5/src/sigal/version.py +21 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/video.py +2 -2
- {sigal-2.4 → sigal-2.5}/src/sigal/writer.py +10 -2
- {sigal-2.4 → sigal-2.5}/src/sigal.egg-info/PKG-INFO +8 -13
- {sigal-2.4 → sigal-2.5}/src/sigal.egg-info/SOURCES.txt +16 -15
- {sigal-2.4 → sigal-2.5}/src/sigal.egg-info/requires.txt +2 -2
- sigal-2.5/tests/sample/pictures/dir1/test1/11.md +10 -0
- sigal-2.5/tests/sample/pictures/dir1/test1/outdoor.heic +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test2/21.md +1 -1
- sigal-2.5/tests/sample/pictures/dir1/test2/index.md +2 -0
- sigal-2.5/tests/sample/pictures/nomedia/ignored/.nomedia +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/sigal.conf.py +3 -2
- {sigal-2.4 → sigal-2.5}/tests/test_compress_assets_plugin.py +3 -1
- {sigal-2.4 → sigal-2.5}/tests/test_gallery.py +19 -5
- {sigal-2.4 → sigal-2.5}/tests/test_image.py +12 -0
- {sigal-2.4 → sigal-2.5}/tests/test_plugins.py +3 -1
- {sigal-2.4 → sigal-2.5}/tests/test_utils.py +3 -1
- {sigal-2.4 → sigal-2.5}/tests/test_zip.py +2 -7
- {sigal-2.4 → sigal-2.5}/tox.ini +5 -3
- sigal-2.4/.readthedocs.yml +0 -12
- sigal-2.4/docs/conf.py +0 -165
- sigal-2.4/src/sigal/plugins/upload_s3.py +0 -106
- sigal-2.4/src/sigal/themes/photoswipe/static/app.js +0 -214
- sigal-2.4/src/sigal/themes/photoswipe/static/default-skin/default-skin.css +0 -485
- sigal-2.4/src/sigal/themes/photoswipe/static/default-skin/default-skin.css.map +0 -10
- sigal-2.4/src/sigal/themes/photoswipe/static/default-skin/default-skin.png +0 -0
- sigal-2.4/src/sigal/themes/photoswipe/static/default-skin/default-skin.svg +0 -36
- sigal-2.4/src/sigal/themes/photoswipe/static/default-skin/preloader.gif +0 -0
- sigal-2.4/src/sigal/themes/photoswipe/static/echo/blank.gif +0 -0
- sigal-2.4/src/sigal/themes/photoswipe/static/echo/echo.js +0 -135
- sigal-2.4/src/sigal/themes/photoswipe/static/echo/echo.min.js +0 -2
- sigal-2.4/src/sigal/themes/photoswipe/static/photoswipe-ui-default.js +0 -871
- sigal-2.4/src/sigal/themes/photoswipe/static/photoswipe-ui-default.min.js +0 -1
- sigal-2.4/src/sigal/themes/photoswipe/static/photoswipe.css +0 -175
- sigal-2.4/src/sigal/themes/photoswipe/static/photoswipe.css.map +0 -10
- sigal-2.4/src/sigal/themes/photoswipe/static/photoswipe.js +0 -3592
- sigal-2.4/src/sigal/themes/photoswipe/static/photoswipe.min.js +0 -1
- sigal-2.4/src/sigal/themes/photoswipe/templates/album.html +0 -98
- sigal-2.4/src/sigal/version.py +0 -8
- sigal-2.4/tests/sample/pictures/dir1/test1/11.md +0 -4
- sigal-2.4/tests/sample/pictures/dir1/test2/index.md +0 -1
- {sigal-2.4 → sigal-2.5}/.git-blame-ignore-revs +0 -0
- {sigal-2.4 → sigal-2.5}/.gitignore +0 -0
- {sigal-2.4 → sigal-2.5}/CONTRIBUTING.rst +0 -0
- {sigal-2.4 → sigal-2.5}/LICENSE +0 -0
- {sigal-2.4 → sigal-2.5}/docs/Makefile +0 -0
- {sigal-2.4 → sigal-2.5}/docs/changelog.py +0 -0
- {sigal-2.4 → sigal-2.5}/docs/configuration.rst +0 -0
- {sigal-2.4 → sigal-2.5}/docs/contribute.rst +0 -0
- {sigal-2.4 → sigal-2.5}/docs/getting_started.rst +0 -0
- {sigal-2.4 → sigal-2.5}/docs/image_information.rst +0 -0
- {sigal-2.4 → sigal-2.5}/docs/index.rst +0 -0
- {sigal-2.4 → sigal-2.5}/docs/make.bat +0 -0
- {sigal-2.4 → sigal-2.5}/setup.cfg +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/__init__.py +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/log.py +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/__init__.py +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/adjust.py +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/copyright.py +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/encrypt/__init__.py +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/encrypt/static/decrypt.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/encrypt/static/keycheck.txt +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/encrypt/static/sw.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/feeds.py +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/media_page.py +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/nonmedia_files.py +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/plugins/watermark.py +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/signals.py +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/css/colorbox.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/css/skeleton.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/css/style.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/images/controls.png +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/images/loading.gif +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/js/app-with-media-page.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/js/app.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/js/jquery-2.2.1.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/js/jquery-2.2.1.min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/js/jquery.colorbox-min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/js/jquery.colorbox.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/js/jquery.touchSwipe.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/static/js/jquery.touchSwipe.min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/templates/album.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/templates/album_list.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/templates/base.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/colorbox/templates/media.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/Control.FullScreen.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/Control.FullScreen.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/Leaflet.Photo.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/Leaflet.Photo.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/MarkerCluster.Default.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/MarkerCluster.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/README +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/icon-fullscreen-2x.png +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/icon-fullscreen.png +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/images/layers-2x.png +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/images/layers.png +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/images/marker-icon-2x.png +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/images/marker-icon.png +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/images/marker-shadow.png +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/leaflet-providers.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/leaflet-src.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/leaflet.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/leaflet.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/leaflet.markercluster-src.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/static/leaflet/leaflet.markercluster.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/templates/analytics.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/templates/breadcrumb.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/templates/decrypt.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/templates/default_head.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/templates/download_zip.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/templates/gtm.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/templates/links.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/templates/map.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/default/templates/piwik.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/README +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/css/normalize.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/css/style.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/galleria.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/galleria.min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/img/empty.png +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/img/fullscreen.png +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/jquery-3.3.1.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/jquery-3.3.1.min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/plugins/history/galleria.history.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/plugins/history/galleria.history.min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/azur/galleria.azur.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/azur/galleria.azur.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/azur/galleria.azur.min.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/azur/galleria.azur.min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/classic/galleria.classic.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/classic/galleria.classic.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/classic/galleria.classic.min.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/classic/galleria.classic.min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/folio/galleria.folio.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/folio/galleria.folio.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/folio/galleria.folio.min.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/folio/galleria.folio.min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/fullscreen/galleria.fullscreen.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/fullscreen/galleria.fullscreen.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/fullscreen/galleria.fullscreen.min.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/fullscreen/galleria.fullscreen.min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/fullscreen/index.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/miniml/galleria.miniml.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/miniml/galleria.miniml.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/miniml/galleria.miniml.min.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/miniml/galleria.miniml.min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/twelve/galleria.twelve.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/twelve/galleria.twelve.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/twelve/galleria.twelve.min.css +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/static/themes/twelve/galleria.twelve.min.js +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/templates/album.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/templates/album_list.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/galleria/templates/base.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/photoswipe/templates/album_list.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal/themes/photoswipe/templates/base.html +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal.egg-info/dependency_links.txt +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal.egg-info/entry_points.txt +0 -0
- {sigal-2.4 → sigal-2.5}/src/sigal.egg-info/top_level.txt +0 -0
- {sigal-2.4 → sigal-2.5}/tests/conftest.py +0 -0
- /sigal-2.4/tests/sample/pictures/dir1/empty/fake.txt → /sigal-2.5/tests/sample/pictures/.venv/lib64/fake.png +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/accentu/303/251/11.jpg" +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/accentu/303/251/h/303/251lico/303/257de.jpg" +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/accentu/303/251/test?<special> chars#.jpg" +0 -0
- {sigal-2.4/tests/sample/pictures → sigal-2.5/tests/sample/pictures/dir1}/empty/fake.txt +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/index.md +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test1/11.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test1/CMB_Timeline300_no_WMAP.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test1/example.gif +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test1/flickr_jerquiaga_2394751088_cc-by-nc.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test1/flickr_jerquiaga_2394751088_cc-by-nc.md +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test1/index.md +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test2/21.tiff +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test2/22.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test2/22.md +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test2/CMB_Timeline300_no_WMAP.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test2/CMB_Timeline300_no_WMAP.md +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test3/3.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir1/test3/index.md +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir2/.nozip_gallery +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir2/Hubble Interacting Galaxy NGC 5257.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir2/Hubble ultra deep field.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir2/KeckObservatory20071020.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir2/index.md +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/dir2/m57_the_ring_nebula-587px.jpg +0 -0
- /sigal-2.4/tests/sample/pictures/nomedia/ignored/.nomedia → /sigal-2.5/tests/sample/pictures/empty/fake.txt +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/encryptTest/21.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/encryptTest/22.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/exifTest/21.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/exifTest/22.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/exifTest/noexif.png +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/index.md +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/iptcTest/1.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/iptcTest/2.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/iptcTest/2.md +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/iptcTest/3.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/iptcTest/index.md +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/nomedia/created/.nomedia +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/nomedia/created/ignored/should_be_ignored2.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/nomedia/created/should_be_created.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/nomedia/created/should_be_ignored3.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/nomedia/ignored/recursively_ignored/should_be_ignored.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/nomedia/ignored/should_be_ignored_1.jpg +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/nonmedia_files/dummy.pdf +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/video/example video.md +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/video/example video.ogv +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/webp/_MG_7805_lossy80.webp +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/pictures/webp/_MG_7808_lossy80.webp +0 -0
- {sigal-2.4 → sigal-2.5}/tests/sample/watermark.png +0 -0
- {sigal-2.4 → sigal-2.5}/tests/test_cli.py +0 -0
- {sigal-2.4 → sigal-2.5}/tests/test_encrypt.py +0 -0
- {sigal-2.4 → sigal-2.5}/tests/test_extended_caching.py +0 -0
- {sigal-2.4 → sigal-2.5}/tests/test_settings.py +0 -0
- {sigal-2.4 → sigal-2.5}/tests/test_video.py +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@
|
|
19
|
+
- uses: actions/checkout@v4
|
|
17
20
|
with:
|
|
18
21
|
fetch-depth: 0
|
|
19
|
-
- uses: actions/setup-python@
|
|
22
|
+
- uses: actions/setup-python@v5
|
|
20
23
|
with:
|
|
21
|
-
python-version: 3.
|
|
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@
|
|
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.
|
|
19
|
+
python-version: [3.9, "3.10", "3.11", "3.12", "3.13"]
|
|
20
20
|
|
|
21
21
|
steps:
|
|
22
|
-
- uses: actions/checkout@
|
|
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@
|
|
26
|
+
uses: actions/setup-python@v5
|
|
27
27
|
with:
|
|
28
28
|
python-version: ${{ matrix.python-version }}
|
|
29
29
|
- name: Install FFmpeg
|
|
@@ -38,6 +38,7 @@ jobs:
|
|
|
38
38
|
- name: Convert coverage
|
|
39
39
|
run: python -m coverage xml
|
|
40
40
|
- name: Upload coverage to Codecov
|
|
41
|
-
uses: codecov/codecov-action@
|
|
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
|
repos:
|
|
2
2
|
|
|
3
3
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
4
|
-
rev:
|
|
4
|
+
rev: v5.0.0
|
|
5
5
|
hooks:
|
|
6
6
|
- id: check-added-large-files
|
|
7
7
|
- id: check-merge-conflict
|
|
@@ -11,13 +11,9 @@ repos:
|
|
|
11
11
|
- id: trailing-whitespace
|
|
12
12
|
exclude: ".*(galleria|photoswipe|jquery|leaflet).*$"
|
|
13
13
|
|
|
14
|
-
- repo: https://github.com/
|
|
15
|
-
rev:
|
|
16
|
-
hooks:
|
|
17
|
-
- id: black
|
|
18
|
-
|
|
19
|
-
- repo: https://github.com/charliermarsh/ruff-pre-commit
|
|
20
|
-
rev: v0.0.291
|
|
14
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
15
|
+
rev: v0.9.7
|
|
21
16
|
hooks:
|
|
22
17
|
- id: ruff
|
|
23
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: []
|
{sigal-2.4 → sigal-2.5}/AUTHORS
RENAMED
|
@@ -5,6 +5,7 @@ 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é
|
|
@@ -15,7 +16,8 @@ alphabetical order):
|
|
|
15
16
|
- Cédric Bosdonnat
|
|
16
17
|
- Christophe-Marie Duquesne
|
|
17
18
|
- Craig Gallek
|
|
18
|
-
-
|
|
19
|
+
- datro
|
|
20
|
+
- David Runge
|
|
19
21
|
- David Schultz
|
|
20
22
|
- David Siroky
|
|
21
23
|
- Edward Betts
|
|
@@ -36,12 +38,16 @@ alphabetical order):
|
|
|
36
38
|
- Keith Feldman
|
|
37
39
|
- Keith Johnson
|
|
38
40
|
- Kevin Murray
|
|
41
|
+
- ksfeldman
|
|
42
|
+
- Lixeiden
|
|
39
43
|
- Lucas Cimon
|
|
40
44
|
- Lukas Vacek
|
|
41
|
-
- Luke Cyca
|
|
45
|
+
- Luke Cyca
|
|
46
|
+
- Markus Blöchl
|
|
42
47
|
- Mate Lakat
|
|
43
48
|
- Mathieu Leplatre (@leplatrem)
|
|
44
49
|
- Matthias Vogelgesang
|
|
50
|
+
- max (maauer)
|
|
45
51
|
- Miroslav Pavleski
|
|
46
52
|
- Nicolas Arnaud-Cormos
|
|
47
53
|
- Nikolai Prokoschenko
|
|
@@ -58,6 +64,7 @@ alphabetical order):
|
|
|
58
64
|
- @t-animal
|
|
59
65
|
- @thomasdn
|
|
60
66
|
- Thomas Misilo
|
|
67
|
+
- Tilman Adler
|
|
61
68
|
- Tim AtLee
|
|
62
69
|
- Tim Davies
|
|
63
70
|
- @tired-engineer
|
{sigal-2.4 → sigal-2.5}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
2
|
Name: sigal
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.5
|
|
4
4
|
Summary: Simple static gallery generator
|
|
5
5
|
Author-email: Simon Conseil <contact@saimon.org>
|
|
6
6
|
License: MIT License
|
|
@@ -12,14 +12,10 @@ Classifier: Environment :: Console
|
|
|
12
12
|
Classifier: License :: OSI Approved :: MIT License
|
|
13
13
|
Classifier: Operating System :: OS Independent
|
|
14
14
|
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.8
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.9
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
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.
|
|
18
|
+
Requires-Python: >=3.9
|
|
23
19
|
Description-Content-Type: text/x-rst
|
|
24
20
|
License-File: LICENSE
|
|
25
21
|
Requires-Dist: blinker
|
|
@@ -30,17 +26,17 @@ Requires-Dist: Pillow>=8.0.0
|
|
|
30
26
|
Requires-Dist: pilkit
|
|
31
27
|
Requires-Dist: natsort
|
|
32
28
|
Provides-Extra: all
|
|
33
|
-
Requires-Dist: boto; extra == "all"
|
|
34
29
|
Requires-Dist: brotli; extra == "all"
|
|
35
30
|
Requires-Dist: feedgenerator; extra == "all"
|
|
36
31
|
Requires-Dist: zopfli; extra == "all"
|
|
37
32
|
Requires-Dist: cryptography; extra == "all"
|
|
33
|
+
Requires-Dist: pillow-heif; extra == "all"
|
|
38
34
|
Provides-Extra: tests
|
|
39
35
|
Requires-Dist: pytest; extra == "tests"
|
|
40
36
|
Requires-Dist: pytest-cov; extra == "tests"
|
|
41
37
|
Provides-Extra: docs
|
|
42
38
|
Requires-Dist: Sphinx>=4.1.0; extra == "docs"
|
|
43
|
-
Requires-Dist:
|
|
39
|
+
Requires-Dist: furo; extra == "docs"
|
|
44
40
|
Requires-Dist: cryptography; extra == "docs"
|
|
45
41
|
|
|
46
42
|
Sigal - Simple Static Gallery Generator
|
|
@@ -68,14 +64,14 @@ The idea behind Sigal is to ease the use of the javascript libraries like
|
|
|
68
64
|
galleria_. These libraries do a great job to display the images, Sigal does
|
|
69
65
|
what is missing: resize images, create thumbnails, generate HTML pages.
|
|
70
66
|
|
|
71
|
-
Sigal requires Python 3.
|
|
67
|
+
Sigal requires Python 3.9+.
|
|
72
68
|
|
|
73
|
-
Links
|
|
69
|
+
Links
|
|
70
|
+
-----
|
|
74
71
|
|
|
75
72
|
* Latest documentation on the website_
|
|
76
73
|
* Source, issues and pull requests on GitHub_
|
|
77
74
|
* Releases on PyPI_
|
|
78
|
-
* ``#sigal`` on Freenode, or with the webchat_ interface.
|
|
79
75
|
|
|
80
76
|
Themes & Demo
|
|
81
77
|
-------------
|
|
@@ -96,5 +92,4 @@ Javascript libraries:
|
|
|
96
92
|
.. _galleria demo: http://saimon.org/sigal-demo/galleria/
|
|
97
93
|
.. _colorbox demo: http://saimon.org/sigal-demo/colorbox/
|
|
98
94
|
.. _photoswipe demo: http://saimon.org/sigal-demo/photoswipe/
|
|
99
|
-
.. _webchat: http://webchat.freenode.net/?channels=sigal
|
|
100
95
|
.. _Jinja2: https://palletsprojects.com/p/jinja/
|
|
@@ -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 requires Python 3.
|
|
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
|
-------------
|
|
@@ -51,5 +51,4 @@ Javascript libraries:
|
|
|
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
|
|
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
|
|
|
@@ -2,6 +2,30 @@
|
|
|
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
|
+
|
|
5
29
|
Version 2.4
|
|
6
30
|
~~~~~~~~~~~
|
|
7
31
|
|
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"
|
|
@@ -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
|
~~~~~~~~
|
|
@@ -52,3 +52,6 @@ tests:
|
|
|
52
52
|
(https://github.com/saimn/sigal/pull/233#issuecomment-275430083)
|
|
53
53
|
- ``example video.ogv`` : https://commons.wikimedia.org/wiki/File:Examplevideo.ogv
|
|
54
54
|
(Public domain)
|
|
55
|
+
- ``outdoor.heic``: From @ususdei,
|
|
56
|
+
https://github.com/saimn/sigal/pull/519#issuecomment-2543310727
|
|
57
|
+
(Public domain)
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
Plugins
|
|
3
3
|
=========
|
|
4
4
|
|
|
5
|
-
.. contents::
|
|
6
|
-
|
|
7
5
|
How to use plugins
|
|
8
6
|
------------------
|
|
9
7
|
|
|
@@ -131,10 +129,10 @@ Non-media Files plugin
|
|
|
131
129
|
|
|
132
130
|
.. automodule:: sigal.plugins.nonmedia_files
|
|
133
131
|
|
|
134
|
-
|
|
135
|
-
|
|
132
|
+
Titleregexp plugin
|
|
133
|
+
==================
|
|
136
134
|
|
|
137
|
-
.. automodule:: sigal.plugins.
|
|
135
|
+
.. automodule:: sigal.plugins.titleregexp
|
|
138
136
|
|
|
139
137
|
Watermark plugin
|
|
140
138
|
================
|
|
@@ -145,8 +143,3 @@ ZIP Gallery plugin
|
|
|
145
143
|
==================
|
|
146
144
|
|
|
147
145
|
.. automodule:: sigal.plugins.zip_gallery
|
|
148
|
-
|
|
149
|
-
Titleregexp plugin
|
|
150
|
-
==================
|
|
151
|
-
|
|
152
|
-
.. automodule:: sigal.plugins.titleregexp
|
|
@@ -85,7 +85,7 @@ This script will then be imported and all defined functions will be available as
|
|
|
85
85
|
with the same names in your templates.
|
|
86
86
|
|
|
87
87
|
Documentation of sigal's main classes
|
|
88
|
-
|
|
88
|
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
89
89
|
|
|
90
90
|
.. autoclass:: sigal.gallery.Album
|
|
91
91
|
:members:
|
|
@@ -15,15 +15,11 @@ classifiers = [
|
|
|
15
15
|
"License :: OSI Approved :: MIT License",
|
|
16
16
|
"Operating System :: OS Independent",
|
|
17
17
|
"Programming Language :: Python :: 3",
|
|
18
|
-
"Programming Language :: Python :: 3.8",
|
|
19
|
-
"Programming Language :: Python :: 3.9",
|
|
20
|
-
"Programming Language :: Python :: 3.10",
|
|
21
|
-
"Programming Language :: Python :: 3.11",
|
|
22
18
|
"Topic :: Internet :: WWW/HTTP",
|
|
23
19
|
"Topic :: Multimedia :: Graphics :: Viewers",
|
|
24
20
|
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
25
21
|
]
|
|
26
|
-
requires-python = ">=3.
|
|
22
|
+
requires-python = ">=3.9"
|
|
27
23
|
dependencies = [
|
|
28
24
|
"blinker",
|
|
29
25
|
"click",
|
|
@@ -36,9 +32,9 @@ dependencies = [
|
|
|
36
32
|
dynamic = ["version"]
|
|
37
33
|
|
|
38
34
|
[project.optional-dependencies]
|
|
39
|
-
all = ["
|
|
35
|
+
all = ["brotli", "feedgenerator", "zopfli", "cryptography", "pillow-heif"]
|
|
40
36
|
tests = ["pytest", "pytest-cov"]
|
|
41
|
-
docs = ["Sphinx>=4.1.0", "
|
|
37
|
+
docs = ["Sphinx>=4.1.0", "furo", "cryptography"]
|
|
42
38
|
|
|
43
39
|
[project.scripts]
|
|
44
40
|
sigal = "sigal.__main__:main"
|
|
@@ -55,15 +51,16 @@ license-files = ["LICENSE"]
|
|
|
55
51
|
where = ["src"]
|
|
56
52
|
namespaces = true
|
|
57
53
|
|
|
54
|
+
[tool.setuptools.package-data]
|
|
55
|
+
sigal = [
|
|
56
|
+
"plugins/encrypt/static/*",
|
|
57
|
+
"themes/**",
|
|
58
|
+
]
|
|
59
|
+
|
|
58
60
|
[tool.setuptools_scm]
|
|
59
61
|
write_to = "src/sigal/version.py"
|
|
60
62
|
|
|
61
|
-
[tool.
|
|
62
|
-
line-length = 88
|
|
63
|
-
target-version = ['py38']
|
|
64
|
-
|
|
65
|
-
[tool.ruff]
|
|
66
|
-
target-version = "py38"
|
|
63
|
+
[tool.ruff.lint]
|
|
67
64
|
select = [
|
|
68
65
|
"E", "F", "W", # flake8
|
|
69
66
|
"I", # isort
|
|
@@ -74,7 +71,7 @@ unfixable = [
|
|
|
74
71
|
"F841", # Removes unused variables
|
|
75
72
|
]
|
|
76
73
|
|
|
77
|
-
[tool.ruff.isort]
|
|
74
|
+
[tool.ruff.lint.isort]
|
|
78
75
|
known-first-party = ["sigal"]
|
|
79
76
|
|
|
80
77
|
[tool.coverage.run]
|
|
@@ -25,6 +25,7 @@ import pathlib
|
|
|
25
25
|
import socketserver
|
|
26
26
|
import sys
|
|
27
27
|
import time
|
|
28
|
+
import webbrowser
|
|
28
29
|
from http import server
|
|
29
30
|
|
|
30
31
|
import click
|
|
@@ -227,7 +228,8 @@ def build(
|
|
|
227
228
|
show_default=True,
|
|
228
229
|
help="Configuration file",
|
|
229
230
|
)
|
|
230
|
-
|
|
231
|
+
@option("-b", "--browser", is_flag=True, help="Open in your default browser")
|
|
232
|
+
def serve(destination, port, config, browser):
|
|
231
233
|
"""Run a simple web server."""
|
|
232
234
|
if os.path.exists(destination):
|
|
233
235
|
pass
|
|
@@ -253,6 +255,9 @@ def serve(destination, port, config):
|
|
|
253
255
|
httpd = socketserver.TCPServer(("", port), Handler, False)
|
|
254
256
|
print(f" * Running on http://127.0.0.1:{port}/")
|
|
255
257
|
|
|
258
|
+
if browser:
|
|
259
|
+
webbrowser.open(f"http://127.0.0.1:{port}/")
|
|
260
|
+
|
|
256
261
|
try:
|
|
257
262
|
httpd.allow_reuse_address = True
|
|
258
263
|
httpd.server_bind()
|
|
@@ -45,7 +45,13 @@ from natsort import natsort_keygen, ns
|
|
|
45
45
|
from PIL import Image as PILImage
|
|
46
46
|
|
|
47
47
|
from . import image, signals, video
|
|
48
|
-
from .image import
|
|
48
|
+
from .image import (
|
|
49
|
+
EXIF_EXTENSIONS,
|
|
50
|
+
get_exif_tags,
|
|
51
|
+
get_image_metadata,
|
|
52
|
+
get_size,
|
|
53
|
+
process_image,
|
|
54
|
+
)
|
|
49
55
|
from .settings import Status, get_thumb
|
|
50
56
|
from .utils import (
|
|
51
57
|
Devnull,
|
|
@@ -264,7 +270,7 @@ class Image(Media):
|
|
|
264
270
|
datetime_format = self.settings["datetime_format"]
|
|
265
271
|
return (
|
|
266
272
|
get_exif_tags(self.raw_exif, datetime_format=datetime_format)
|
|
267
|
-
if self.raw_exif and self.src_ext in
|
|
273
|
+
if self.raw_exif and self.src_ext in EXIF_EXTENSIONS
|
|
268
274
|
else None
|
|
269
275
|
)
|
|
270
276
|
|
|
@@ -289,7 +295,7 @@ class Image(Media):
|
|
|
289
295
|
@cached_property
|
|
290
296
|
def raw_exif(self):
|
|
291
297
|
"""If not `None`, contains the raw EXIF tags."""
|
|
292
|
-
if self.src_ext in
|
|
298
|
+
if self.src_ext in EXIF_EXTENSIONS:
|
|
293
299
|
return self.file_metadata["exif"]
|
|
294
300
|
|
|
295
301
|
@cached_property
|
|
@@ -486,6 +492,7 @@ class Album:
|
|
|
486
492
|
reverse = self.settings["albums_sort_reverse"]
|
|
487
493
|
|
|
488
494
|
if "sort" in self.meta:
|
|
495
|
+
# override default sort order from settings
|
|
489
496
|
albums_sort_attr = self.meta["sort"][0]
|
|
490
497
|
if albums_sort_attr[0] == "-":
|
|
491
498
|
albums_sort_attr = albums_sort_attr[1:]
|
|
@@ -515,7 +522,7 @@ class Album:
|
|
|
515
522
|
continue
|
|
516
523
|
return ""
|
|
517
524
|
|
|
518
|
-
key = natsort_keygen(key=sort_key, alg=ns.LOCALE)
|
|
525
|
+
key = natsort_keygen(key=sort_key, alg=ns.SIGNED | ns.LOCALE)
|
|
519
526
|
self.subdirs.sort(key=key, reverse=reverse)
|
|
520
527
|
|
|
521
528
|
signals.albums_sorted.send(self)
|
|
@@ -530,11 +537,13 @@ class Album:
|
|
|
530
537
|
elif medias_sort_attr.startswith("meta."):
|
|
531
538
|
meta_key = medias_sort_attr.split(".", 1)[1]
|
|
532
539
|
key = natsort_keygen(
|
|
533
|
-
key=lambda s: s.meta.get(meta_key, [""])[0],
|
|
540
|
+
key=lambda s: s.meta.get(meta_key, [""])[0],
|
|
541
|
+
alg=ns.SIGNED | ns.LOCALE,
|
|
534
542
|
)
|
|
535
543
|
else:
|
|
536
544
|
key = natsort_keygen(
|
|
537
|
-
key=lambda s: getattr(s, medias_sort_attr),
|
|
545
|
+
key=lambda s: getattr(s, medias_sort_attr),
|
|
546
|
+
alg=ns.SIGNED | ns.LOCALE,
|
|
538
547
|
)
|
|
539
548
|
|
|
540
549
|
self.medias.sort(key=key, reverse=self.settings["medias_sort_reverse"])
|
|
@@ -734,6 +743,11 @@ class Gallery:
|
|
|
734
743
|
fnmatch.fnmatch(relpath, ignore) for ignore in ignore_dirs
|
|
735
744
|
):
|
|
736
745
|
self.logger.info("Ignoring %s", relpath)
|
|
746
|
+
# Remove sub-directories
|
|
747
|
+
for d in dirs[:]:
|
|
748
|
+
path = join(relpath, d) if relpath != "." else d
|
|
749
|
+
if path in albums.keys():
|
|
750
|
+
del albums[path]
|
|
737
751
|
continue
|
|
738
752
|
|
|
739
753
|
# Remove files that match the ignore_files settings
|
|
@@ -767,7 +781,7 @@ class Gallery:
|
|
|
767
781
|
|
|
768
782
|
with progressbar(
|
|
769
783
|
albums.values(),
|
|
770
|
-
label="
|
|
784
|
+
label="{:>16s}".format("Sorting albums"),
|
|
771
785
|
file=self.progressbar_target,
|
|
772
786
|
) as progress_albums:
|
|
773
787
|
for album in progress_albums:
|
|
@@ -775,7 +789,7 @@ class Gallery:
|
|
|
775
789
|
|
|
776
790
|
with progressbar(
|
|
777
791
|
albums.values(),
|
|
778
|
-
label="
|
|
792
|
+
label="{:>16s}".format("Sorting medias"),
|
|
779
793
|
file=self.progressbar_target,
|
|
780
794
|
) as progress_albums:
|
|
781
795
|
for album in progress_albums:
|
|
@@ -891,12 +905,13 @@ class Gallery:
|
|
|
891
905
|
|
|
892
906
|
if self.settings["write_html"]:
|
|
893
907
|
album_writer = AlbumPageWriter(self.settings, index_title=self.title)
|
|
908
|
+
album_writer.copy_theme_files()
|
|
894
909
|
album_list_writer = AlbumListPageWriter(
|
|
895
910
|
self.settings, index_title=self.title
|
|
896
911
|
)
|
|
897
912
|
with progressbar(
|
|
898
913
|
self.albums.values(),
|
|
899
|
-
label="
|
|
914
|
+
label="{:>16s}".format("Writing files"),
|
|
900
915
|
item_show_func=log_func,
|
|
901
916
|
show_eta=False,
|
|
902
917
|
file=self.progressbar_target,
|