From 5663e6232e6d7f5aa499077f1c595ca36f7d2850 Mon Sep 17 00:00:00 2001 From: Jann Stute <46534683+Computerdores@users.noreply.github.com> Date: Tue, 12 May 2026 01:56:46 +0200 Subject: [PATCH] doc: add REUSE license information (#1361) * doc: add REUSE comment headers * doc: add REUSE comment headers for mkDocs overrides The original license text was moved to the LICENSES directory and the MIT license identifier was used since only encoding differences to the MIT license were present. Further, the existing copyright notice was moved to SPDX-FileCopyrightText and one for the TagStudio Contributors was added since the files are not entirely the same as the originals in the mkdocs-material project. * doc: add license information files for the translations * doc: add licence file for oxanium font As stated on [Google Fonts](https://fonts.google.com/specimen/Oxanium/license), this font is licensed under OFL-1.1. * doc: re-license flow_layout.py to GPL-3.0-only This is possible because the Qt example this is based on can be licensed under BSD-3-Clause which is GPL-3.0 compatible. * doc: add REUSE comment header for singleton.py Comparing our implementation with the one it is based on, they really don't have much more in common than the general idea of the implementation, which afaik can't be copyrighted. * doc: Add REUSE comment header for blender_renderer.py We can plainly license this under GPL-3.0 according to https://www.blender.org/about/license/ * doc: add REUSE comment headers to vendored files * doc: add REUSE comment header for rounded_pixmap_style.py Source of name for copyright notice: Answer by eyllanesc: https://stackoverflow.com/users/6622587/eyllanesc Profile links to Github: https://github.com/eyllanesc Stackoverflow licensing: https://stackoverflow.com/help/licensing * doc: add REUSE comment headers * doc: add license information file for icon_mono.svg * doc: add REUSE comment header for files in .github * doc: add REUSE.toml to give license information for various files without spamming .license files * fix: use type parameter instead of subclass * doc: add entries for remaining files in REUSE.toml According to info from github comment by CyanVoxel: https://github.com/TagStudioDev/TagStudio/pull/1361#issuecomment-4423632570 * ci: add REUSE check workflow Src: 'https://reuse.software/dev/#github-actions' * doc: add missing license * doc: fix license for material-design-icons * license: change license to MIT for two files only changes by Computerdores and CyanVoxel * doc: remove unnecessary .license files * doc: fix incorrect license entries * doc: add missing license doc --- .github/FUNDING.yml | 4 + .github/ISSUE_TEMPLATE/bug_report.yml | 2 + .github/ISSUE_TEMPLATE/feature_request.yml | 2 + .github/PULL_REQUEST_TEMPLATE.md | 2 + .github/workflows/mypy.yaml | 2 + .github/workflows/publish_docs.yaml | 2 + .github/workflows/pytest.yaml | 2 + .github/workflows/release.yml | 2 + .github/workflows/reuse.yaml | 12 + .github/workflows/ruff.yaml | 2 + LICENSES/Apache-2.0.txt | 202 ++++++ LICENSES/CC-BY-SA-4.0.txt | 428 +++++++++++ LICENSES/CC0-1.0.txt | 121 ++++ LICENSES/GPL-3.0-only.txt | 675 ++++++++++++++++++ LICENSES/GPL-3.0-or-later.txt | 1 + LICENSES/MIT.txt | 19 + LICENSES/OFL-1.1.txt | 97 +++ README.md | 2 + REUSE.toml | 46 ++ docs/changelog.md | 2 + docs/colors.md | 2 + docs/contributing.md | 2 + docs/developing.md | 2 + docs/entries.md | 2 + docs/fields.md | 2 + docs/help/ffmpeg.md | 2 + docs/ignore.md | 2 + docs/index.md | 2 + docs/install.md | 2 + docs/libraries.md | 2 + docs/library-changes.md | 2 + docs/macros.md | 2 + docs/preview-support.md | 2 + docs/roadmap.md | 2 + docs/search.md | 2 + docs/style.md | 2 + docs/stylesheets/extra.css | 4 + docs/stylesheets/home.css | 4 + docs/tags.md | 2 + docs/usage.md | 2 + flake.nix | 4 + mkdocs.yml | 4 + nix/package/default.nix | 4 + nix/package/pillow-jxl-plugin.nix | 4 + nix/package/pyexiv2.nix | 4 + nix/shell.nix | 4 + overrides/partials/header.html | 23 +- overrides/partials/nav.html | 23 +- overrides/partials/toc-item.html | 25 +- pyproject.toml | 4 + src/tagstudio/core/constants.py | 6 +- src/tagstudio/core/driver.py | 4 + src/tagstudio/core/enums.py | 6 +- src/tagstudio/core/exceptions.py | 5 +- .../core/library/alchemy/constants.py | 5 +- src/tagstudio/core/library/alchemy/db.py | 5 +- .../library/alchemy/default_color_groups.py | 5 +- src/tagstudio/core/library/alchemy/enums.py | 4 + src/tagstudio/core/library/alchemy/fields.py | 5 +- src/tagstudio/core/library/alchemy/joins.py | 5 +- src/tagstudio/core/library/alchemy/library.py | 6 +- src/tagstudio/core/library/alchemy/models.py | 6 +- .../alchemy/registries/dupe_files_registry.py | 4 + .../alchemy/registries/ignored_registry.py | 5 +- .../alchemy/registries/unlinked_registry.py | 4 + .../core/library/alchemy/visitors.py | 6 +- src/tagstudio/core/library/ignore.py | 6 +- src/tagstudio/core/library/json/fields.py | 4 + src/tagstudio/core/library/json/library.py | 6 +- src/tagstudio/core/library/refresh.py | 5 +- src/tagstudio/core/media_types.py | 5 +- src/tagstudio/core/query_lang/ast.py | 9 +- src/tagstudio/core/query_lang/parser.py | 5 +- src/tagstudio/core/query_lang/tokenizer.py | 5 +- src/tagstudio/core/query_lang/util.py | 5 +- src/tagstudio/core/ts_core.py | 6 +- src/tagstudio/core/utils/encoding.py | 6 +- src/tagstudio/core/utils/silent_subprocess.py | 6 +- src/tagstudio/core/utils/singleton.py | 7 +- src/tagstudio/core/utils/str_formatting.py | 6 +- src/tagstudio/core/utils/types.py | 5 +- src/tagstudio/main.py | 5 +- src/tagstudio/qt/cache_manager.py | 6 +- .../controllers/ffmpeg_missing_message_box.py | 4 + .../fix_ignored_modal_controller.py | 5 +- .../qt/controllers/ignore_modal_controller.py | 5 +- .../library_info_window_controller.py | 7 +- .../qt/controllers/out_of_date_message_box.py | 4 + .../qt/controllers/paged_panel_controller.py | 5 +- .../qt/controllers/paged_panel_state.py | 5 +- .../controllers/preview_panel_controller.py | 5 +- .../controllers/preview_thumb_controller.py | 5 +- .../qt/controllers/tag_box_controller.py | 4 +- src/tagstudio/qt/global_settings.py | 5 +- src/tagstudio/qt/helpers/color_overlay.py | 5 +- src/tagstudio/qt/helpers/escape_text.py | 5 +- src/tagstudio/qt/helpers/file_tester.py | 5 +- src/tagstudio/qt/helpers/gradients.py | 5 +- src/tagstudio/qt/helpers/image_effects.py | 5 +- src/tagstudio/qt/helpers/text_wrapper.py | 5 +- src/tagstudio/qt/mixed/about_modal.py | 5 +- src/tagstudio/qt/mixed/add_field.py | 5 +- src/tagstudio/qt/mixed/build_color.py | 5 +- src/tagstudio/qt/mixed/build_namespace.py | 5 +- src/tagstudio/qt/mixed/build_tag.py | 5 +- src/tagstudio/qt/mixed/collage_icon.py | 5 +- src/tagstudio/qt/mixed/color_box.py | 5 +- src/tagstudio/qt/mixed/datetime_picker.py | 4 + src/tagstudio/qt/mixed/drop_import_modal.py | 5 +- src/tagstudio/qt/mixed/field_containers.py | 5 +- src/tagstudio/qt/mixed/field_widget.py | 5 +- src/tagstudio/qt/mixed/file_attributes.py | 5 +- src/tagstudio/qt/mixed/fix_dupe_files.py | 5 +- src/tagstudio/qt/mixed/fix_unlinked.py | 5 +- src/tagstudio/qt/mixed/folders_to_tags.py | 5 +- src/tagstudio/qt/mixed/item_thumb.py | 5 +- src/tagstudio/qt/mixed/landing.py | 5 +- src/tagstudio/qt/mixed/media_player.py | 6 +- src/tagstudio/qt/mixed/merge_dupe_entries.py | 5 +- src/tagstudio/qt/mixed/migration_modal.py | 5 +- .../qt/mixed/mirror_entries_modal.py | 5 +- src/tagstudio/qt/mixed/pagination.py | 5 +- src/tagstudio/qt/mixed/progress_bar.py | 5 +- .../qt/mixed/relink_entries_modal.py | 5 +- .../qt/mixed/remove_ignored_modal.py | 5 +- .../qt/mixed/remove_unlinked_modal.py | 5 +- src/tagstudio/qt/mixed/settings_panel.py | 5 +- src/tagstudio/qt/mixed/tag_color_label.py | 5 +- src/tagstudio/qt/mixed/tag_color_manager.py | 6 +- src/tagstudio/qt/mixed/tag_color_preview.py | 5 +- src/tagstudio/qt/mixed/tag_color_selection.py | 5 +- src/tagstudio/qt/mixed/tag_database.py | 5 +- src/tagstudio/qt/mixed/tag_search.py | 5 +- src/tagstudio/qt/mixed/tag_widget.py | 5 +- src/tagstudio/qt/mixed/text_field.py | 5 +- src/tagstudio/qt/mnemonics.py | 6 +- src/tagstudio/qt/models/palette.py | 6 +- src/tagstudio/qt/platform_strings.py | 5 +- src/tagstudio/qt/previews/renderer.py | 5 +- .../qt/previews/vendored/blender_renderer.py | 19 +- src/tagstudio/qt/previews/vendored/ffmpeg.py | 6 +- .../previews/vendored/pydub/audio_segment.py | 7 +- .../qt/previews/vendored/pydub/utils.py | 6 + src/tagstudio/qt/resource_manager.py | 5 +- src/tagstudio/qt/resources.qrc | 4 +- src/tagstudio/qt/resources_rc.py | 4 + src/tagstudio/qt/thumb_grid_layout.py | 4 + src/tagstudio/qt/translations.py | 4 + src/tagstudio/qt/ts_qt.py | 10 +- src/tagstudio/qt/utils/custom_runnable.py | 5 +- src/tagstudio/qt/utils/file_deleter.py | 5 +- src/tagstudio/qt/utils/file_opener.py | 6 +- src/tagstudio/qt/utils/function_iterator.py | 5 +- src/tagstudio/qt/views/clickable_label.py | 5 +- src/tagstudio/qt/views/clickable_slider.py | 6 +- src/tagstudio/qt/views/edit_text_box_modal.py | 5 +- .../qt/views/edit_text_line_modal.py | 5 +- .../qt/views/fix_ignored_modal_view.py | 5 +- src/tagstudio/qt/views/ignore_modal_view.py | 5 +- src/tagstudio/qt/views/layouts/flow_layout.py | 7 +- .../qt/views/library_info_window_view.py | 5 +- src/tagstudio/qt/views/main_window.py | 5 +- src/tagstudio/qt/views/paged_body_wrapper.py | 5 +- src/tagstudio/qt/views/panel_modal.py | 5 +- src/tagstudio/qt/views/preview_panel_view.py | 5 +- src/tagstudio/qt/views/preview_thumb_view.py | 5 +- src/tagstudio/qt/views/qbutton_wrapper.py | 5 +- src/tagstudio/qt/views/splash.py | 5 +- .../qt/views/styles/rounded_pixmap_style.py | 8 +- src/tagstudio/qt/views/tag_box_view.py | 4 +- src/tagstudio/qt/views/thumb_button.py | 5 +- .../qt/fonts/Oxanium-Bold.ttf.license | 2 + tagstudio.spec | 4 + tests/conftest.py | 5 +- tests/macros/test_dupe_files.py | 6 +- tests/macros/test_folders_tags.py | 6 +- tests/macros/test_missing_files.py | 6 +- tests/macros/test_refresh_dir.py | 6 +- tests/qt/test_about_modal.py | 4 + tests/qt/test_build_tag_panel.py | 5 +- tests/qt/test_field_containers.py | 5 +- tests/qt/test_file_path_options.py | 5 +- tests/qt/test_flow_widget.py | 5 +- tests/qt/test_folders_to_tags.py | 5 +- tests/qt/test_global_settings.py | 5 +- tests/qt/test_item_thumb.py | 5 +- tests/qt/test_preview_panel.py | 5 +- tests/qt/test_qt_driver.py | 6 +- tests/qt/test_resource_manager.py | 5 +- tests/qt/test_tag_panel.py | 5 +- tests/qt/test_tag_search_panel.py | 7 +- tests/qt/test_theme_system.py | 6 +- tests/test_db_migrations.py | 5 +- tests/test_driver.py | 5 +- tests/test_json_migration.py | 5 +- tests/test_library.py | 5 +- tests/test_search.py | 5 +- tests/test_translations.py | 5 +- 198 files changed, 2084 insertions(+), 467 deletions(-) create mode 100644 .github/workflows/reuse.yaml create mode 100644 LICENSES/Apache-2.0.txt create mode 100644 LICENSES/CC-BY-SA-4.0.txt create mode 100644 LICENSES/CC0-1.0.txt create mode 100644 LICENSES/GPL-3.0-only.txt create mode 120000 LICENSES/GPL-3.0-or-later.txt create mode 100644 LICENSES/MIT.txt create mode 100644 LICENSES/OFL-1.1.txt create mode 100644 REUSE.toml mode change 100755 => 100644 src/tagstudio/qt/views/panel_modal.py create mode 100644 src/tagstudio/resources/qt/fonts/Oxanium-Bold.ttf.license diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index c2cdaaef..afcb7044 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1,6 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + --- patreon: cyanvoxel diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index a719991f..35ad9dc6 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only --- name: Bug Report description: File a bug or issue report. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index 32259fb6..7f8c726a 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -1,3 +1,5 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only --- name: Feature Request description: Suggest a new feature. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 9b1d9606..a012fd35 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,3 +1,5 @@ + + ### Summary + # TagStudio: A User-Focused Photo & File Management System [![Downloads](https://img.shields.io/github/downloads/TagStudioDev/TagStudio/total.svg?maxAge=2592001)](https://github.com/TagStudioDev/TagStudio/releases) diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 00000000..e4d032d7 --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,46 @@ +version = 1 + +[[annotations]] +path = [ + "tests/fixtures/**", + + "contrib/.envrc-nix", + "contrib/.envrc-uv", + "contrib/.vscode/launch.json", + "docs/CNAME", + "docs/assets/**", + "src/tagstudio/qt/resources.json", + "src/tagstudio/resources/icon.*", + "src/tagstudio/resources/tagstudio.desktop", + "src/tagstudio/resources/templates/ts_ignore_template.txt", + "src/tagstudio/resources/templates/ts_ignore_template_blank.txt", + "src/tagstudio/resources/qt/images/**", + "tests/qt/__snapshots__/test_folders_to_tags.ambr", + + ".git-blame-ignore-revs", + ".gitattributes", + ".gitignore", + ".pre-commit-config.yaml", + "flake.lock", +] +SPDX-FileCopyrightText = "(c) TagStudio Contributors" +SPDX-License-Identifier = "GPL-3.0-only" + +[[annotations]] +path = ["src/tagstudio/resources/translations/*.json"] +SPDX-FileCopyrightText = "(c) TagStudio Contributors" +SPDX-License-Identifier = "GPL-3.0-or-later" + +[[annotations]] +path = [ + "src/tagstudio/resources/qt/images/bxs-left-arrow.png", + "src/tagstudio/resources/qt/images/bxs-right-arrow.png", + "src/tagstudio/resources/qt/images/file_icons/database.png", +] +SPDX-FileCopyrightText = "(c) 2026 Boxicons" +SPDX-License-Identifier = "MIT" + +[[annotations]] +path = ["src/tagstudio/resources/qt/images/volume.svg", "src/tagstudio/resources/qt/images/volume_mute.svg"] +SPDX-FileCopyrightText = "(c) github:google/material-design-icons Contributors" +SPDX-License-Identifier = "Apache-2.0" diff --git a/docs/changelog.md b/docs/changelog.md index a3c6474a..2f1426aa 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -3,6 +3,8 @@ title: Changelog icon: material/script-text toc_depth: 2 --- + + # :material-script-text: Changelog diff --git a/docs/colors.md b/docs/colors.md index 8563388f..945f3434 100644 --- a/docs/colors.md +++ b/docs/colors.md @@ -1,6 +1,8 @@ --- icon: material/palette --- + + # :material-palette: Colors diff --git a/docs/contributing.md b/docs/contributing.md index 449f73f8..0aa2e18d 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -1,6 +1,8 @@ --- icon: material/file-plus --- + + # :material-file-plus: Contributing diff --git a/docs/developing.md b/docs/developing.md index dc49ee23..c177fb3b 100644 --- a/docs/developing.md +++ b/docs/developing.md @@ -1,6 +1,8 @@ --- icon: material/code-braces --- + + # :material-code-braces: Developing diff --git a/docs/entries.md b/docs/entries.md index 6a1a9fbc..efd88129 100644 --- a/docs/entries.md +++ b/docs/entries.md @@ -1,6 +1,8 @@ --- icon: material/file --- + + # :material-file: Entries diff --git a/docs/fields.md b/docs/fields.md index afcf057e..deec08ac 100644 --- a/docs/fields.md +++ b/docs/fields.md @@ -1,6 +1,8 @@ --- icon: material/text-box --- + + # :material-text-box: Fields diff --git a/docs/help/ffmpeg.md b/docs/help/ffmpeg.md index 80746c6f..c526bc02 100644 --- a/docs/help/ffmpeg.md +++ b/docs/help/ffmpeg.md @@ -1,6 +1,8 @@ --- icon: material/movie-open-cog --- + + # :material-movie-open-cog: Installing FFmpeg diff --git a/docs/ignore.md b/docs/ignore.md index 0e7687d0..f3c07768 100644 --- a/docs/ignore.md +++ b/docs/ignore.md @@ -2,6 +2,8 @@ title: Ignoring Files icon: material/file-document-remove --- + + # :material-file-document-remove: Ignoring Files & Directories diff --git a/docs/index.md b/docs/index.md index 62dfc1ed..51365001 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,6 +4,8 @@ hide: - toc - navigation --- + + # diff --git a/docs/install.md b/docs/install.md index bec72c2b..51134e25 100644 --- a/docs/install.md +++ b/docs/install.md @@ -1,6 +1,8 @@ --- icon: material/download --- + + # :material-download: Installation diff --git a/docs/libraries.md b/docs/libraries.md index 0afeb6ef..4b0515e5 100644 --- a/docs/libraries.md +++ b/docs/libraries.md @@ -1,6 +1,8 @@ --- icon: material/database --- + + # :material-database: Libraries diff --git a/docs/library-changes.md b/docs/library-changes.md index 3ae570aa..cbd3594d 100644 --- a/docs/library-changes.md +++ b/docs/library-changes.md @@ -1,6 +1,8 @@ --- icon: material/database-edit --- + + # :material-database-edit: Library Format diff --git a/docs/macros.md b/docs/macros.md index 9268d267..232bb4b6 100644 --- a/docs/macros.md +++ b/docs/macros.md @@ -1,6 +1,8 @@ --- icon: material/script-text --- + + # :material-script-text: Tools & Macros diff --git a/docs/preview-support.md b/docs/preview-support.md index 7f1edd54..c1070ed7 100644 --- a/docs/preview-support.md +++ b/docs/preview-support.md @@ -1,6 +1,8 @@ --- icon: material/image-check --- + + # :material-image-check: Supported Previews diff --git a/docs/roadmap.md b/docs/roadmap.md index f1417393..b0f6c48e 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -1,6 +1,8 @@ --- icon: material/map-check --- + + # :material-map-check: Roadmap diff --git a/docs/search.md b/docs/search.md index 6d2007ed..bb6a5915 100644 --- a/docs/search.md +++ b/docs/search.md @@ -1,6 +1,8 @@ --- icon: material/magnify --- + + # :material-magnify: Searching diff --git a/docs/style.md b/docs/style.md index 35b8841c..2763f642 100644 --- a/docs/style.md +++ b/docs/style.md @@ -1,6 +1,8 @@ --- icon: material/sign-text --- + + # :material-sign-text: Style Guide diff --git a/docs/stylesheets/extra.css b/docs/stylesheets/extra.css index f1e72d90..5ae0f7eb 100644 --- a/docs/stylesheets/extra.css +++ b/docs/stylesheets/extra.css @@ -1,3 +1,7 @@ +/* + * SPDX-FileCopyrightText: (c) TagStudio Contributors + * SPDX-License-Identifier: GPL-3.0-only + */ /* Dark Theme */ [data-md-color-scheme="slate"] { --md-default-bg-color: #060617; diff --git a/docs/stylesheets/home.css b/docs/stylesheets/home.css index 26e9c2d1..a32f0a80 100644 --- a/docs/stylesheets/home.css +++ b/docs/stylesheets/home.css @@ -1,3 +1,7 @@ +/* + * SPDX-FileCopyrightText: (c) TagStudio Contributors + * SPDX-License-Identifier: GPL-3.0-only + * */ h2 { margin: 1rem 0 0 0 !important; } diff --git a/docs/tags.md b/docs/tags.md index b8cb65e1..525b615e 100644 --- a/docs/tags.md +++ b/docs/tags.md @@ -1,6 +1,8 @@ --- icon: material/tag-text --- + + # :material-tag-text: Tags diff --git a/docs/usage.md b/docs/usage.md index aa083e8c..a533f2cd 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -1,6 +1,8 @@ --- icon: material/mouse --- + + # :material-mouse: Basic Usage diff --git a/flake.nix b/flake.nix index c12b22b6..ffde5e2e 100644 --- a/flake.nix +++ b/flake.nix @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + { description = "TagStudio"; diff --git a/mkdocs.yml b/mkdocs.yml index aaf4b106..2a03b9ec 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + # yaml-language-server: $schema=https://squidfunk.github.io/mkdocs-material/schema.json # MkDocs: https://www.mkdocs.org/ diff --git a/nix/package/default.nix b/nix/package/default.nix index 3aa69219..b609e5f9 100644 --- a/nix/package/default.nix +++ b/nix/package/default.nix @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + { ffmpeg-headless, lib, diff --git a/nix/package/pillow-jxl-plugin.nix b/nix/package/pillow-jxl-plugin.nix index 4df28aed..4b8ecba5 100644 --- a/nix/package/pillow-jxl-plugin.nix +++ b/nix/package/pillow-jxl-plugin.nix @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + { buildPythonPackage, cmake, diff --git a/nix/package/pyexiv2.nix b/nix/package/pyexiv2.nix index 4761db49..a9cb9c41 100644 --- a/nix/package/pyexiv2.nix +++ b/nix/package/pyexiv2.nix @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + { autoPatchelfHook, buildPythonPackage, diff --git a/nix/shell.nix b/nix/shell.nix index 81965fc8..797f1fc6 100644 --- a/nix/shell.nix +++ b/nix/shell.nix @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + { lib, pkgs, diff --git a/overrides/partials/header.html b/overrides/partials/header.html index 0db2a399..e1ffcd5d 100644 --- a/overrides/partials/header.html +++ b/overrides/partials/header.html @@ -1,24 +1,7 @@ - + + - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. ---> {% set class = "md-header" %} diff --git a/overrides/partials/nav.html b/overrides/partials/nav.html index 119d738a..432eb57f 100644 --- a/overrides/partials/nav.html +++ b/overrides/partials/nav.html @@ -1,24 +1,7 @@ - + + - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. ---> {% import "partials/nav-item.html" as item with context %} diff --git a/overrides/partials/toc-item.html b/overrides/partials/toc-item.html index a0922005..349f10be 100644 --- a/overrides/partials/toc-item.html +++ b/overrides/partials/toc-item.html @@ -1,24 +1,7 @@ - + + - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to - deal in the Software without restriction, including without limitation the - rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - sell copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - IN THE SOFTWARE. --->
  • @@ -40,4 +23,4 @@ {% endif %} -
  • \ No newline at end of file + diff --git a/pyproject.toml b/pyproject.toml index e070c26f..8051f01e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + [build-system] requires = ["hatchling"] build-backend = "hatchling.build" diff --git a/src/tagstudio/core/constants.py b/src/tagstudio/core/constants.py index 7c98ddd5..4cd6f582 100644 --- a/src/tagstudio/core/constants.py +++ b/src/tagstudio/core/constants.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + VERSION: str = "9.5.7" # Major.Minor.Patch VERSION_BRANCH: str = "" # Usually "" or "Pre-Release" diff --git a/src/tagstudio/core/driver.py b/src/tagstudio/core/driver.py index 4343054d..cf50c45e 100644 --- a/src/tagstudio/core/driver.py +++ b/src/tagstudio/core/driver.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + from pathlib import Path import structlog diff --git a/src/tagstudio/core/enums.py b/src/tagstudio/core/enums.py index 2bc33748..f821e103 100644 --- a/src/tagstudio/core/enums.py +++ b/src/tagstudio/core/enums.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import enum diff --git a/src/tagstudio/core/exceptions.py b/src/tagstudio/core/exceptions.py index 10bec533..f3ab828c 100644 --- a/src/tagstudio/core/exceptions.py +++ b/src/tagstudio/core/exceptions.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only class NoRendererError(Exception): ... diff --git a/src/tagstudio/core/library/alchemy/constants.py b/src/tagstudio/core/library/alchemy/constants.py index 31065c2c..48ab5cbb 100644 --- a/src/tagstudio/core/library/alchemy/constants.py +++ b/src/tagstudio/core/library/alchemy/constants.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from sqlalchemy import text diff --git a/src/tagstudio/core/library/alchemy/db.py b/src/tagstudio/core/library/alchemy/db.py index 7e728f79..de119d0a 100644 --- a/src/tagstudio/core/library/alchemy/db.py +++ b/src/tagstudio/core/library/alchemy/db.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from pathlib import Path diff --git a/src/tagstudio/core/library/alchemy/default_color_groups.py b/src/tagstudio/core/library/alchemy/default_color_groups.py index 9193fc09..4af29595 100644 --- a/src/tagstudio/core/library/alchemy/default_color_groups.py +++ b/src/tagstudio/core/library/alchemy/default_color_groups.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import structlog diff --git a/src/tagstudio/core/library/alchemy/enums.py b/src/tagstudio/core/library/alchemy/enums.py index 020420f4..349d0e9e 100644 --- a/src/tagstudio/core/library/alchemy/enums.py +++ b/src/tagstudio/core/library/alchemy/enums.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + import enum import random from dataclasses import dataclass, field, replace diff --git a/src/tagstudio/core/library/alchemy/fields.py b/src/tagstudio/core/library/alchemy/fields.py index 5d4d6c96..729124af 100644 --- a/src/tagstudio/core/library/alchemy/fields.py +++ b/src/tagstudio/core/library/alchemy/fields.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from __future__ import annotations diff --git a/src/tagstudio/core/library/alchemy/joins.py b/src/tagstudio/core/library/alchemy/joins.py index d01e6764..7cf1c486 100644 --- a/src/tagstudio/core/library/alchemy/joins.py +++ b/src/tagstudio/core/library/alchemy/joins.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from sqlalchemy import ForeignKey diff --git a/src/tagstudio/core/library/alchemy/library.py b/src/tagstudio/core/library/alchemy/library.py index b04c031d..c55a10a0 100644 --- a/src/tagstudio/core/library/alchemy/library.py +++ b/src/tagstudio/core/library/alchemy/library.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + # NOTE: This file contains necessary use of deprecated first-party code until that # code is removed in a future version (prefs). diff --git a/src/tagstudio/core/library/alchemy/models.py b/src/tagstudio/core/library/alchemy/models.py index be4e1647..c2b81f66 100644 --- a/src/tagstudio/core/library/alchemy/models.py +++ b/src/tagstudio/core/library/alchemy/models.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from datetime import datetime as dt from pathlib import Path diff --git a/src/tagstudio/core/library/alchemy/registries/dupe_files_registry.py b/src/tagstudio/core/library/alchemy/registries/dupe_files_registry.py index 95143fe2..01147920 100644 --- a/src/tagstudio/core/library/alchemy/registries/dupe_files_registry.py +++ b/src/tagstudio/core/library/alchemy/registries/dupe_files_registry.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + import xml.etree.ElementTree as ET from dataclasses import dataclass, field from pathlib import Path diff --git a/src/tagstudio/core/library/alchemy/registries/ignored_registry.py b/src/tagstudio/core/library/alchemy/registries/ignored_registry.py index a864e248..5401c61b 100644 --- a/src/tagstudio/core/library/alchemy/registries/ignored_registry.py +++ b/src/tagstudio/core/library/alchemy/registries/ignored_registry.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from collections.abc import Iterator diff --git a/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py b/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py index 8058df85..3f2e8539 100644 --- a/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py +++ b/src/tagstudio/core/library/alchemy/registries/unlinked_registry.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + from collections.abc import Iterator from dataclasses import dataclass, field from pathlib import Path diff --git a/src/tagstudio/core/library/alchemy/visitors.py b/src/tagstudio/core/library/alchemy/visitors.py index 7f9fc799..35dcf56a 100644 --- a/src/tagstudio/core/library/alchemy/visitors.py +++ b/src/tagstudio/core/library/alchemy/visitors.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import re from typing import TYPE_CHECKING, override diff --git a/src/tagstudio/core/library/ignore.py b/src/tagstudio/core/library/ignore.py index 79c70c54..63b7ab18 100644 --- a/src/tagstudio/core/library/ignore.py +++ b/src/tagstudio/core/library/ignore.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from copy import deepcopy from pathlib import Path diff --git a/src/tagstudio/core/library/json/fields.py b/src/tagstudio/core/library/json/fields.py index 5e3509e4..7797096a 100644 --- a/src/tagstudio/core/library/json/fields.py +++ b/src/tagstudio/core/library/json/fields.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + BOX_FIELDS = ["tag_box", "text_box"] TEXT_FIELDS = ["text_line", "text_box"] DATE_FIELDS = ["datetime"] diff --git a/src/tagstudio/core/library/json/library.py b/src/tagstudio/core/library/json/library.py index 81367201..e3370e2a 100644 --- a/src/tagstudio/core/library/json/library.py +++ b/src/tagstudio/core/library/json/library.py @@ -1,8 +1,8 @@ # type: ignore # ruff: noqa -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + """The Library object and related methods for TagStudio.""" diff --git a/src/tagstudio/core/library/refresh.py b/src/tagstudio/core/library/refresh.py index 531363f7..824cae52 100644 --- a/src/tagstudio/core/library/refresh.py +++ b/src/tagstudio/core/library/refresh.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import shutil diff --git a/src/tagstudio/core/media_types.py b/src/tagstudio/core/media_types.py index c7c4f0fc..b18290d1 100644 --- a/src/tagstudio/core/media_types.py +++ b/src/tagstudio/core/media_types.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import mimetypes diff --git a/src/tagstudio/core/query_lang/ast.py b/src/tagstudio/core/query_lang/ast.py index 0323bf26..166c9dd7 100644 --- a/src/tagstudio/core/query_lang/ast.py +++ b/src/tagstudio/core/query_lang/ast.py @@ -1,11 +1,10 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: MIT from abc import ABC, abstractmethod from enum import Enum -from typing import Generic, TypeVar, override +from typing import TypeVar, override class ConstraintType(Enum): @@ -98,7 +97,7 @@ class Not(AST): T = TypeVar("T") -class BaseVisitor(ABC, Generic[T]): +class BaseVisitor[T](ABC): def visit(self, node: AST) -> T: if isinstance(node, ANDList): return self.visit_and_list(node) diff --git a/src/tagstudio/core/query_lang/parser.py b/src/tagstudio/core/query_lang/parser.py index ff17465d..1dc336c5 100644 --- a/src/tagstudio/core/query_lang/parser.py +++ b/src/tagstudio/core/query_lang/parser.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from tagstudio.core.query_lang.ast import ( diff --git a/src/tagstudio/core/query_lang/tokenizer.py b/src/tagstudio/core/query_lang/tokenizer.py index 3cdb5035..fc6e6685 100644 --- a/src/tagstudio/core/query_lang/tokenizer.py +++ b/src/tagstudio/core/query_lang/tokenizer.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from enum import Enum diff --git a/src/tagstudio/core/query_lang/util.py b/src/tagstudio/core/query_lang/util.py index 95e53dbe..e0c2b719 100644 --- a/src/tagstudio/core/query_lang/util.py +++ b/src/tagstudio/core/query_lang/util.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: MIT from typing import override diff --git a/src/tagstudio/core/ts_core.py b/src/tagstudio/core/ts_core.py index 85c800d6..752e1d4a 100644 --- a/src/tagstudio/core/ts_core.py +++ b/src/tagstudio/core/ts_core.py @@ -1,6 +1,6 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + """The core classes and methods of TagStudio.""" diff --git a/src/tagstudio/core/utils/encoding.py b/src/tagstudio/core/utils/encoding.py index f5a4a0d9..73265f01 100644 --- a/src/tagstudio/core/utils/encoding.py +++ b/src/tagstudio/core/utils/encoding.py @@ -1,6 +1,6 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from pathlib import Path diff --git a/src/tagstudio/core/utils/silent_subprocess.py b/src/tagstudio/core/utils/silent_subprocess.py index 75fb920d..d4d818a4 100644 --- a/src/tagstudio/core/utils/silent_subprocess.py +++ b/src/tagstudio/core/utils/silent_subprocess.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import os import subprocess diff --git a/src/tagstudio/core/utils/singleton.py b/src/tagstudio/core/utils/singleton.py index 76b6bf08..82b4518d 100644 --- a/src/tagstudio/core/utils/singleton.py +++ b/src/tagstudio/core/utils/singleton.py @@ -1,10 +1,11 @@ -# Based off example from Refactoring Guru: -# https://refactoring.guru/design-patterns/singleton/python/example#example-1 -# Adapted for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from threading import Lock +# See also: https://refactoring.guru/design-patterns/singleton/python/example#example-1 class Singleton(type): """A thread-safe implementation of a Singleton.""" diff --git a/src/tagstudio/core/utils/str_formatting.py b/src/tagstudio/core/utils/str_formatting.py index 38151d0e..9fa41ebf 100644 --- a/src/tagstudio/core/utils/str_formatting.py +++ b/src/tagstudio/core/utils/str_formatting.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import semver diff --git a/src/tagstudio/core/utils/types.py b/src/tagstudio/core/utils/types.py index d21feb95..57970334 100644 --- a/src/tagstudio/core/utils/types.py +++ b/src/tagstudio/core/utils/types.py @@ -1,5 +1,6 @@ -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from typing import TypeVar diff --git a/src/tagstudio/main.py b/src/tagstudio/main.py index 70411a27..7997884d 100755 --- a/src/tagstudio/main.py +++ b/src/tagstudio/main.py @@ -1,7 +1,6 @@ #!/usr/bin/env python -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only """TagStudio launcher.""" diff --git a/src/tagstudio/qt/cache_manager.py b/src/tagstudio/qt/cache_manager.py index e15ead68..00d812ff 100644 --- a/src/tagstudio/qt/cache_manager.py +++ b/src/tagstudio/qt/cache_manager.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import math from collections.abc import Iterable diff --git a/src/tagstudio/qt/controllers/ffmpeg_missing_message_box.py b/src/tagstudio/qt/controllers/ffmpeg_missing_message_box.py index 3de27f88..a3c71176 100644 --- a/src/tagstudio/qt/controllers/ffmpeg_missing_message_box.py +++ b/src/tagstudio/qt/controllers/ffmpeg_missing_message_box.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + from shutil import which import structlog diff --git a/src/tagstudio/qt/controllers/fix_ignored_modal_controller.py b/src/tagstudio/qt/controllers/fix_ignored_modal_controller.py index 1199f3cd..0a6bd368 100644 --- a/src/tagstudio/qt/controllers/fix_ignored_modal_controller.py +++ b/src/tagstudio/qt/controllers/fix_ignored_modal_controller.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import TYPE_CHECKING, override diff --git a/src/tagstudio/qt/controllers/ignore_modal_controller.py b/src/tagstudio/qt/controllers/ignore_modal_controller.py index 66937d5b..e2226d66 100644 --- a/src/tagstudio/qt/controllers/ignore_modal_controller.py +++ b/src/tagstudio/qt/controllers/ignore_modal_controller.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from pathlib import Path diff --git a/src/tagstudio/qt/controllers/library_info_window_controller.py b/src/tagstudio/qt/controllers/library_info_window_controller.py index ad4a0127..f7bef1a4 100644 --- a/src/tagstudio/qt/controllers/library_info_window_controller.py +++ b/src/tagstudio/qt/controllers/library_info_window_controller.py @@ -1,6 +1,7 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + import os from pathlib import Path from typing import TYPE_CHECKING, override diff --git a/src/tagstudio/qt/controllers/out_of_date_message_box.py b/src/tagstudio/qt/controllers/out_of_date_message_box.py index bc7fb75a..d22c148c 100644 --- a/src/tagstudio/qt/controllers/out_of_date_message_box.py +++ b/src/tagstudio/qt/controllers/out_of_date_message_box.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + import structlog from PySide6.QtCore import Qt from PySide6.QtWidgets import QMessageBox diff --git a/src/tagstudio/qt/controllers/paged_panel_controller.py b/src/tagstudio/qt/controllers/paged_panel_controller.py index ddffe554..f4a7e8e8 100644 --- a/src/tagstudio/qt/controllers/paged_panel_controller.py +++ b/src/tagstudio/qt/controllers/paged_panel_controller.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import override diff --git a/src/tagstudio/qt/controllers/paged_panel_state.py b/src/tagstudio/qt/controllers/paged_panel_state.py index 368cc4d4..a239ca76 100644 --- a/src/tagstudio/qt/controllers/paged_panel_state.py +++ b/src/tagstudio/qt/controllers/paged_panel_state.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from PySide6.QtWidgets import QPushButton diff --git a/src/tagstudio/qt/controllers/preview_panel_controller.py b/src/tagstudio/qt/controllers/preview_panel_controller.py index 360f0558..7933e488 100644 --- a/src/tagstudio/qt/controllers/preview_panel_controller.py +++ b/src/tagstudio/qt/controllers/preview_panel_controller.py @@ -1,5 +1,6 @@ -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import typing from warnings import catch_warnings diff --git a/src/tagstudio/qt/controllers/preview_thumb_controller.py b/src/tagstudio/qt/controllers/preview_thumb_controller.py index 8986f06f..2c17e242 100644 --- a/src/tagstudio/qt/controllers/preview_thumb_controller.py +++ b/src/tagstudio/qt/controllers/preview_thumb_controller.py @@ -1,5 +1,6 @@ -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import io from pathlib import Path diff --git a/src/tagstudio/qt/controllers/tag_box_controller.py b/src/tagstudio/qt/controllers/tag_box_controller.py index 2a5865d8..a2b43482 100644 --- a/src/tagstudio/qt/controllers/tag_box_controller.py +++ b/src/tagstudio/qt/controllers/tag_box_controller.py @@ -1,5 +1,5 @@ -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import TYPE_CHECKING, override diff --git a/src/tagstudio/qt/global_settings.py b/src/tagstudio/qt/global_settings.py index 42a7fe38..94be1f07 100644 --- a/src/tagstudio/qt/global_settings.py +++ b/src/tagstudio/qt/global_settings.py @@ -1,5 +1,6 @@ -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import platform from datetime import datetime diff --git a/src/tagstudio/qt/helpers/color_overlay.py b/src/tagstudio/qt/helpers/color_overlay.py index 8fd43263..0d276210 100644 --- a/src/tagstudio/qt/helpers/color_overlay.py +++ b/src/tagstudio/qt/helpers/color_overlay.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from PIL import Image diff --git a/src/tagstudio/qt/helpers/escape_text.py b/src/tagstudio/qt/helpers/escape_text.py index 989ef114..0885d173 100644 --- a/src/tagstudio/qt/helpers/escape_text.py +++ b/src/tagstudio/qt/helpers/escape_text.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only def escape_text(text: str): diff --git a/src/tagstudio/qt/helpers/file_tester.py b/src/tagstudio/qt/helpers/file_tester.py index d899f7e6..89e20295 100644 --- a/src/tagstudio/qt/helpers/file_tester.py +++ b/src/tagstudio/qt/helpers/file_tester.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from pathlib import Path diff --git a/src/tagstudio/qt/helpers/gradients.py b/src/tagstudio/qt/helpers/gradients.py index 1e672868..004a3852 100644 --- a/src/tagstudio/qt/helpers/gradients.py +++ b/src/tagstudio/qt/helpers/gradients.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from PIL import Image diff --git a/src/tagstudio/qt/helpers/image_effects.py b/src/tagstudio/qt/helpers/image_effects.py index ca764744..3af6cf3c 100644 --- a/src/tagstudio/qt/helpers/image_effects.py +++ b/src/tagstudio/qt/helpers/image_effects.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import numpy as np diff --git a/src/tagstudio/qt/helpers/text_wrapper.py b/src/tagstudio/qt/helpers/text_wrapper.py index 71d6b5be..ce4bae5d 100644 --- a/src/tagstudio/qt/helpers/text_wrapper.py +++ b/src/tagstudio/qt/helpers/text_wrapper.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from PIL import Image, ImageDraw, ImageFont diff --git a/src/tagstudio/qt/mixed/about_modal.py b/src/tagstudio/qt/mixed/about_modal.py index e6be1c7d..3d1092f1 100644 --- a/src/tagstudio/qt/mixed/about_modal.py +++ b/src/tagstudio/qt/mixed/about_modal.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import math diff --git a/src/tagstudio/qt/mixed/add_field.py b/src/tagstudio/qt/mixed/add_field.py index ba83ab58..52b64e5e 100644 --- a/src/tagstudio/qt/mixed/add_field.py +++ b/src/tagstudio/qt/mixed/add_field.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import override diff --git a/src/tagstudio/qt/mixed/build_color.py b/src/tagstudio/qt/mixed/build_color.py index a33ef435..07b43d88 100644 --- a/src/tagstudio/qt/mixed/build_color.py +++ b/src/tagstudio/qt/mixed/build_color.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import contextlib diff --git a/src/tagstudio/qt/mixed/build_namespace.py b/src/tagstudio/qt/mixed/build_namespace.py index c7b4ed23..5b91a700 100644 --- a/src/tagstudio/qt/mixed/build_namespace.py +++ b/src/tagstudio/qt/mixed/build_namespace.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import contextlib diff --git a/src/tagstudio/qt/mixed/build_tag.py b/src/tagstudio/qt/mixed/build_tag.py index 94e63f3e..a6aef61f 100644 --- a/src/tagstudio/qt/mixed/build_tag.py +++ b/src/tagstudio/qt/mixed/build_tag.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import sys diff --git a/src/tagstudio/qt/mixed/collage_icon.py b/src/tagstudio/qt/mixed/collage_icon.py index 13930085..105aff34 100644 --- a/src/tagstudio/qt/mixed/collage_icon.py +++ b/src/tagstudio/qt/mixed/collage_icon.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import math diff --git a/src/tagstudio/qt/mixed/color_box.py b/src/tagstudio/qt/mixed/color_box.py index 20866c43..59079412 100644 --- a/src/tagstudio/qt/mixed/color_box.py +++ b/src/tagstudio/qt/mixed/color_box.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import typing diff --git a/src/tagstudio/qt/mixed/datetime_picker.py b/src/tagstudio/qt/mixed/datetime_picker.py index b059dd96..318c4768 100644 --- a/src/tagstudio/qt/mixed/datetime_picker.py +++ b/src/tagstudio/qt/mixed/datetime_picker.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + import typing from collections.abc import Callable from datetime import datetime as dt diff --git a/src/tagstudio/qt/mixed/drop_import_modal.py b/src/tagstudio/qt/mixed/drop_import_modal.py index 766ce608..570448b5 100644 --- a/src/tagstudio/qt/mixed/drop_import_modal.py +++ b/src/tagstudio/qt/mixed/drop_import_modal.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import enum diff --git a/src/tagstudio/qt/mixed/field_containers.py b/src/tagstudio/qt/mixed/field_containers.py index 12f82577..212e6a54 100644 --- a/src/tagstudio/qt/mixed/field_containers.py +++ b/src/tagstudio/qt/mixed/field_containers.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import sys diff --git a/src/tagstudio/qt/mixed/field_widget.py b/src/tagstudio/qt/mixed/field_widget.py index d2678b55..04ee3c37 100644 --- a/src/tagstudio/qt/mixed/field_widget.py +++ b/src/tagstudio/qt/mixed/field_widget.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import math diff --git a/src/tagstudio/qt/mixed/file_attributes.py b/src/tagstudio/qt/mixed/file_attributes.py index 5704e6e9..f4786ef4 100644 --- a/src/tagstudio/qt/mixed/file_attributes.py +++ b/src/tagstudio/qt/mixed/file_attributes.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import os diff --git a/src/tagstudio/qt/mixed/fix_dupe_files.py b/src/tagstudio/qt/mixed/fix_dupe_files.py index c215e862..c7c3165b 100644 --- a/src/tagstudio/qt/mixed/fix_dupe_files.py +++ b/src/tagstudio/qt/mixed/fix_dupe_files.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import TYPE_CHECKING, override diff --git a/src/tagstudio/qt/mixed/fix_unlinked.py b/src/tagstudio/qt/mixed/fix_unlinked.py index 63a1affc..59474c1f 100644 --- a/src/tagstudio/qt/mixed/fix_unlinked.py +++ b/src/tagstudio/qt/mixed/fix_unlinked.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import TYPE_CHECKING, override diff --git a/src/tagstudio/qt/mixed/folders_to_tags.py b/src/tagstudio/qt/mixed/folders_to_tags.py index f7051f77..45cdbc0a 100644 --- a/src/tagstudio/qt/mixed/folders_to_tags.py +++ b/src/tagstudio/qt/mixed/folders_to_tags.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import math diff --git a/src/tagstudio/qt/mixed/item_thumb.py b/src/tagstudio/qt/mixed/item_thumb.py index 49a9858f..1e112eaf 100644 --- a/src/tagstudio/qt/mixed/item_thumb.py +++ b/src/tagstudio/qt/mixed/item_thumb.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from enum import Enum diff --git a/src/tagstudio/qt/mixed/landing.py b/src/tagstudio/qt/mixed/landing.py index 050994ac..7f5f6ba7 100644 --- a/src/tagstudio/qt/mixed/landing.py +++ b/src/tagstudio/qt/mixed/landing.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import sys diff --git a/src/tagstudio/qt/mixed/media_player.py b/src/tagstudio/qt/mixed/media_player.py index 065e73d4..f4649efe 100644 --- a/src/tagstudio/qt/mixed/media_player.py +++ b/src/tagstudio/qt/mixed/media_player.py @@ -1,6 +1,6 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import typing from pathlib import Path diff --git a/src/tagstudio/qt/mixed/merge_dupe_entries.py b/src/tagstudio/qt/mixed/merge_dupe_entries.py index af56a0bf..0091bb3a 100644 --- a/src/tagstudio/qt/mixed/merge_dupe_entries.py +++ b/src/tagstudio/qt/mixed/merge_dupe_entries.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import typing diff --git a/src/tagstudio/qt/mixed/migration_modal.py b/src/tagstudio/qt/mixed/migration_modal.py index fc5504c3..b761d81e 100644 --- a/src/tagstudio/qt/mixed/migration_modal.py +++ b/src/tagstudio/qt/mixed/migration_modal.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import traceback diff --git a/src/tagstudio/qt/mixed/mirror_entries_modal.py b/src/tagstudio/qt/mixed/mirror_entries_modal.py index 20c37881..d06627a6 100644 --- a/src/tagstudio/qt/mixed/mirror_entries_modal.py +++ b/src/tagstudio/qt/mixed/mirror_entries_modal.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import typing diff --git a/src/tagstudio/qt/mixed/pagination.py b/src/tagstudio/qt/mixed/pagination.py index e39fc048..b3a12643 100644 --- a/src/tagstudio/qt/mixed/pagination.py +++ b/src/tagstudio/qt/mixed/pagination.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only """A pagination widget created for TagStudio.""" diff --git a/src/tagstudio/qt/mixed/progress_bar.py b/src/tagstudio/qt/mixed/progress_bar.py index 9dba568a..e9c46c09 100644 --- a/src/tagstudio/qt/mixed/progress_bar.py +++ b/src/tagstudio/qt/mixed/progress_bar.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from collections.abc import Callable diff --git a/src/tagstudio/qt/mixed/relink_entries_modal.py b/src/tagstudio/qt/mixed/relink_entries_modal.py index c966f873..8acd7c1b 100644 --- a/src/tagstudio/qt/mixed/relink_entries_modal.py +++ b/src/tagstudio/qt/mixed/relink_entries_modal.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from PySide6.QtCore import QObject, Signal diff --git a/src/tagstudio/qt/mixed/remove_ignored_modal.py b/src/tagstudio/qt/mixed/remove_ignored_modal.py index 0d45f094..5977009e 100644 --- a/src/tagstudio/qt/mixed/remove_ignored_modal.py +++ b/src/tagstudio/qt/mixed/remove_ignored_modal.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import TYPE_CHECKING, override diff --git a/src/tagstudio/qt/mixed/remove_unlinked_modal.py b/src/tagstudio/qt/mixed/remove_unlinked_modal.py index 1b5353cb..0b4e6b6b 100644 --- a/src/tagstudio/qt/mixed/remove_unlinked_modal.py +++ b/src/tagstudio/qt/mixed/remove_unlinked_modal.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import TYPE_CHECKING, override diff --git a/src/tagstudio/qt/mixed/settings_panel.py b/src/tagstudio/qt/mixed/settings_panel.py index 19d33754..5e8c022d 100644 --- a/src/tagstudio/qt/mixed/settings_panel.py +++ b/src/tagstudio/qt/mixed/settings_panel.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import TYPE_CHECKING, Any diff --git a/src/tagstudio/qt/mixed/tag_color_label.py b/src/tagstudio/qt/mixed/tag_color_label.py index 39d5d96f..8052f59d 100644 --- a/src/tagstudio/qt/mixed/tag_color_label.py +++ b/src/tagstudio/qt/mixed/tag_color_label.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import typing diff --git a/src/tagstudio/qt/mixed/tag_color_manager.py b/src/tagstudio/qt/mixed/tag_color_manager.py index d381fcac..92c3b42b 100644 --- a/src/tagstudio/qt/mixed/tag_color_manager.py +++ b/src/tagstudio/qt/mixed/tag_color_manager.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from collections.abc import Callable from typing import TYPE_CHECKING, override diff --git a/src/tagstudio/qt/mixed/tag_color_preview.py b/src/tagstudio/qt/mixed/tag_color_preview.py index 8d8a7e8b..c73571d4 100644 --- a/src/tagstudio/qt/mixed/tag_color_preview.py +++ b/src/tagstudio/qt/mixed/tag_color_preview.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import typing diff --git a/src/tagstudio/qt/mixed/tag_color_selection.py b/src/tagstudio/qt/mixed/tag_color_selection.py index e6bacc1a..a58d3c06 100644 --- a/src/tagstudio/qt/mixed/tag_color_selection.py +++ b/src/tagstudio/qt/mixed/tag_color_selection.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import structlog diff --git a/src/tagstudio/qt/mixed/tag_database.py b/src/tagstudio/qt/mixed/tag_database.py index 180cee9c..1ac59ea1 100644 --- a/src/tagstudio/qt/mixed/tag_database.py +++ b/src/tagstudio/qt/mixed/tag_database.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import structlog diff --git a/src/tagstudio/qt/mixed/tag_search.py b/src/tagstudio/qt/mixed/tag_search.py index b4193307..e309d5d0 100644 --- a/src/tagstudio/qt/mixed/tag_search.py +++ b/src/tagstudio/qt/mixed/tag_search.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import TYPE_CHECKING, Union diff --git a/src/tagstudio/qt/mixed/tag_widget.py b/src/tagstudio/qt/mixed/tag_widget.py index 85b62c4e..5907fd18 100644 --- a/src/tagstudio/qt/mixed/tag_widget.py +++ b/src/tagstudio/qt/mixed/tag_widget.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from collections.abc import Callable diff --git a/src/tagstudio/qt/mixed/text_field.py b/src/tagstudio/qt/mixed/text_field.py index c50123ea..3d958e3c 100644 --- a/src/tagstudio/qt/mixed/text_field.py +++ b/src/tagstudio/qt/mixed/text_field.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import re diff --git a/src/tagstudio/qt/mnemonics.py b/src/tagstudio/qt/mnemonics.py index a5f13bda..359e7f44 100644 --- a/src/tagstudio/qt/mnemonics.py +++ b/src/tagstudio/qt/mnemonics.py @@ -1,5 +1,7 @@ -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + import re import structlog diff --git a/src/tagstudio/qt/models/palette.py b/src/tagstudio/qt/models/palette.py index 0d658a57..120dab72 100644 --- a/src/tagstudio/qt/models/palette.py +++ b/src/tagstudio/qt/models/palette.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import traceback from enum import IntEnum diff --git a/src/tagstudio/qt/platform_strings.py b/src/tagstudio/qt/platform_strings.py index 6144896f..91f12a31 100644 --- a/src/tagstudio/qt/platform_strings.py +++ b/src/tagstudio/qt/platform_strings.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only """A collection of platform-dependant strings.""" diff --git a/src/tagstudio/qt/previews/renderer.py b/src/tagstudio/qt/previews/renderer.py index 9fc8ae6c..1f4215f6 100644 --- a/src/tagstudio/qt/previews/renderer.py +++ b/src/tagstudio/qt/previews/renderer.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import base64 diff --git a/src/tagstudio/qt/previews/vendored/blender_renderer.py b/src/tagstudio/qt/previews/vendored/blender_renderer.py index 10e059e1..1d83f13f 100644 --- a/src/tagstudio/qt/previews/vendored/blender_renderer.py +++ b/src/tagstudio/qt/previews/vendored/blender_renderer.py @@ -1,22 +1,7 @@ #!/usr/bin/env python3 +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only -# ##### BEGIN GPL LICENSE BLOCK ##### -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# ##### END GPL LICENSE BLOCK ##### # diff --git a/src/tagstudio/qt/previews/vendored/ffmpeg.py b/src/tagstudio/qt/previews/vendored/ffmpeg.py index e2d9a6c7..84d6ba19 100644 --- a/src/tagstudio/qt/previews/vendored/ffmpeg.py +++ b/src/tagstudio/qt/previews/vendored/ffmpeg.py @@ -1,7 +1,9 @@ -# Copyright (C) 2022 Karl Kroening (kkroening). -# Licensed under the GPL-3.0 License. +# SPDX-FileCopyrightText: (c) 2022 Karl Kroening (kkroening) +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only # Vendored from ffmpeg-python and ffmpeg-python PR#790 by amamic1803 + import contextlib import json import os diff --git a/src/tagstudio/qt/previews/vendored/pydub/audio_segment.py b/src/tagstudio/qt/previews/vendored/pydub/audio_segment.py index 2baad076..99ce1255 100644 --- a/src/tagstudio/qt/previews/vendored/pydub/audio_segment.py +++ b/src/tagstudio/qt/previews/vendored/pydub/audio_segment.py @@ -1,7 +1,8 @@ -# type: ignore -# Copyright (C) 2022 James Robert (jiaaro). -# Licensed under the MIT License. +# SPDX-FileCopyrightText: (c) 2022 James Robert (jiaaro) +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only # Vendored from pydub +# type: ignore import array diff --git a/src/tagstudio/qt/previews/vendored/pydub/utils.py b/src/tagstudio/qt/previews/vendored/pydub/utils.py index 4a4cb889..abc8ce9f 100644 --- a/src/tagstudio/qt/previews/vendored/pydub/utils.py +++ b/src/tagstudio/qt/previews/vendored/pydub/utils.py @@ -1,3 +1,9 @@ +# SPDX-FileCopyrightText: (c) 2011 James Robert, http://jiaaro.com +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only +# Vendored from pydub + + import json import re import subprocess diff --git a/src/tagstudio/qt/resource_manager.py b/src/tagstudio/qt/resource_manager.py index e3d259b2..f1d387ab 100644 --- a/src/tagstudio/qt/resource_manager.py +++ b/src/tagstudio/qt/resource_manager.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from pathlib import Path diff --git a/src/tagstudio/qt/resources.qrc b/src/tagstudio/qt/resources.qrc index c425750b..fcaf44c8 100644 --- a/src/tagstudio/qt/resources.qrc +++ b/src/tagstudio/qt/resources.qrc @@ -1,3 +1,5 @@ + + @@ -9,4 +11,4 @@ - \ No newline at end of file + diff --git a/src/tagstudio/qt/resources_rc.py b/src/tagstudio/qt/resources_rc.py index 6e1940b3..fc514375 100644 --- a/src/tagstudio/qt/resources_rc.py +++ b/src/tagstudio/qt/resources_rc.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + # Resource object code (Python 3) # Created by: object code # Created by: The Resource Compiler for Qt version 6.8.0 diff --git a/src/tagstudio/qt/thumb_grid_layout.py b/src/tagstudio/qt/thumb_grid_layout.py index 2eba8c70..42fac679 100644 --- a/src/tagstudio/qt/thumb_grid_layout.py +++ b/src/tagstudio/qt/thumb_grid_layout.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + import math import time from collections.abc import Iterable diff --git a/src/tagstudio/qt/translations.py b/src/tagstudio/qt/translations.py index 0875bcf1..bec0b194 100644 --- a/src/tagstudio/qt/translations.py +++ b/src/tagstudio/qt/translations.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + from collections import defaultdict from pathlib import Path from platform import system diff --git a/src/tagstudio/qt/ts_qt.py b/src/tagstudio/qt/ts_qt.py index 0f818460..538c053e 100644 --- a/src/tagstudio/qt/ts_qt.py +++ b/src/tagstudio/qt/ts_qt.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + # SIGTERM handling based on the implementation by Virgil Dupras for dupeGuru: # https://github.com/arsenetar/dupeguru/blob/master/run.py#L71 @@ -21,7 +21,7 @@ from collections import OrderedDict from pathlib import Path from queue import Queue from shutil import which -from typing import Generic, TypeVar +from typing import TypeVar from warnings import catch_warnings import structlog @@ -148,7 +148,7 @@ T = TypeVar("T") # | A [B]<- C | # |[A]<- B C | Previous routes still exist # | A ->[D] | Stack is cut from [:A] on new route -class History(Generic[T]): +class History[T]: __history: list[T] __index: int = 0 diff --git a/src/tagstudio/qt/utils/custom_runnable.py b/src/tagstudio/qt/utils/custom_runnable.py index 6520c16f..6c10dd06 100644 --- a/src/tagstudio/qt/utils/custom_runnable.py +++ b/src/tagstudio/qt/utils/custom_runnable.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from PySide6.QtCore import QObject, QRunnable, Signal diff --git a/src/tagstudio/qt/utils/file_deleter.py b/src/tagstudio/qt/utils/file_deleter.py index 1e264b07..d12d4a9d 100644 --- a/src/tagstudio/qt/utils/file_deleter.py +++ b/src/tagstudio/qt/utils/file_deleter.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import os diff --git a/src/tagstudio/qt/utils/file_opener.py b/src/tagstudio/qt/utils/file_opener.py index e1b27c27..a009dcff 100644 --- a/src/tagstudio/qt/utils/file_opener.py +++ b/src/tagstudio/qt/utils/file_opener.py @@ -1,6 +1,6 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import shutil import subprocess diff --git a/src/tagstudio/qt/utils/function_iterator.py b/src/tagstudio/qt/utils/function_iterator.py index 9f213790..ef88d31e 100644 --- a/src/tagstudio/qt/utils/function_iterator.py +++ b/src/tagstudio/qt/utils/function_iterator.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from collections.abc import Callable diff --git a/src/tagstudio/qt/views/clickable_label.py b/src/tagstudio/qt/views/clickable_label.py index c7478b9f..f382d14e 100644 --- a/src/tagstudio/qt/views/clickable_label.py +++ b/src/tagstudio/qt/views/clickable_label.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import override diff --git a/src/tagstudio/qt/views/clickable_slider.py b/src/tagstudio/qt/views/clickable_slider.py index a683a74a..d1ac82a1 100644 --- a/src/tagstudio/qt/views/clickable_slider.py +++ b/src/tagstudio/qt/views/clickable_slider.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from typing import override diff --git a/src/tagstudio/qt/views/edit_text_box_modal.py b/src/tagstudio/qt/views/edit_text_box_modal.py index 3c3bce32..fd60ba21 100644 --- a/src/tagstudio/qt/views/edit_text_box_modal.py +++ b/src/tagstudio/qt/views/edit_text_box_modal.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from PySide6.QtWidgets import QPlainTextEdit, QVBoxLayout diff --git a/src/tagstudio/qt/views/edit_text_line_modal.py b/src/tagstudio/qt/views/edit_text_line_modal.py index 5ee933cc..d7ce6d0d 100644 --- a/src/tagstudio/qt/views/edit_text_line_modal.py +++ b/src/tagstudio/qt/views/edit_text_line_modal.py @@ -1,5 +1,6 @@ -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from collections.abc import Callable diff --git a/src/tagstudio/qt/views/fix_ignored_modal_view.py b/src/tagstudio/qt/views/fix_ignored_modal_view.py index b198a2b4..fdad55e6 100644 --- a/src/tagstudio/qt/views/fix_ignored_modal_view.py +++ b/src/tagstudio/qt/views/fix_ignored_modal_view.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from typing import TYPE_CHECKING, override diff --git a/src/tagstudio/qt/views/ignore_modal_view.py b/src/tagstudio/qt/views/ignore_modal_view.py index 7e7de161..277f5eea 100644 --- a/src/tagstudio/qt/views/ignore_modal_view.py +++ b/src/tagstudio/qt/views/ignore_modal_view.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import structlog diff --git a/src/tagstudio/qt/views/layouts/flow_layout.py b/src/tagstudio/qt/views/layouts/flow_layout.py index 14fb411d..af14a7b2 100644 --- a/src/tagstudio/qt/views/layouts/flow_layout.py +++ b/src/tagstudio/qt/views/layouts/flow_layout.py @@ -1,6 +1,7 @@ -# Copyright (C) 2013 Riverbank Computing Limited. -# Copyright (C) 2022 The Qt Company Ltd. -# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +# SPDX-FileCopyrightText: (C) 2013 Riverbank Computing Limited. +# SPDX-FileCopyrightText: (C) 2022 The Qt Company Ltd. +# SPDX-FileCopyrightText: (C) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only """PySide6 port of the widgets/layouts/flowlayout example from Qt v6.x.""" diff --git a/src/tagstudio/qt/views/library_info_window_view.py b/src/tagstudio/qt/views/library_info_window_view.py index 694d9259..bfd06c0a 100644 --- a/src/tagstudio/qt/views/library_info_window_view.py +++ b/src/tagstudio/qt/views/library_info_window_view.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import math diff --git a/src/tagstudio/qt/views/main_window.py b/src/tagstudio/qt/views/main_window.py index a4c0485a..374df646 100644 --- a/src/tagstudio/qt/views/main_window.py +++ b/src/tagstudio/qt/views/main_window.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import typing diff --git a/src/tagstudio/qt/views/paged_body_wrapper.py b/src/tagstudio/qt/views/paged_body_wrapper.py index cb713b3e..a6380d54 100644 --- a/src/tagstudio/qt/views/paged_body_wrapper.py +++ b/src/tagstudio/qt/views/paged_body_wrapper.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from PySide6.QtCore import Qt diff --git a/src/tagstudio/qt/views/panel_modal.py b/src/tagstudio/qt/views/panel_modal.py old mode 100755 new mode 100644 index 241e57f7..b754c118 --- a/src/tagstudio/qt/views/panel_modal.py +++ b/src/tagstudio/qt/views/panel_modal.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from collections.abc import Callable diff --git a/src/tagstudio/qt/views/preview_panel_view.py b/src/tagstudio/qt/views/preview_panel_view.py index 5ae7004c..f83045cd 100644 --- a/src/tagstudio/qt/views/preview_panel_view.py +++ b/src/tagstudio/qt/views/preview_panel_view.py @@ -1,5 +1,6 @@ -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import traceback import typing diff --git a/src/tagstudio/qt/views/preview_thumb_view.py b/src/tagstudio/qt/views/preview_thumb_view.py index e50509ad..d6c032f7 100644 --- a/src/tagstudio/qt/views/preview_thumb_view.py +++ b/src/tagstudio/qt/views/preview_thumb_view.py @@ -1,5 +1,6 @@ -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + import math import time diff --git a/src/tagstudio/qt/views/qbutton_wrapper.py b/src/tagstudio/qt/views/qbutton_wrapper.py index e26703d5..c6f90e32 100644 --- a/src/tagstudio/qt/views/qbutton_wrapper.py +++ b/src/tagstudio/qt/views/qbutton_wrapper.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from PySide6.QtWidgets import QPushButton diff --git a/src/tagstudio/qt/views/splash.py b/src/tagstudio/qt/views/splash.py index fe139d17..220c4c5c 100644 --- a/src/tagstudio/qt/views/splash.py +++ b/src/tagstudio/qt/views/splash.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import math diff --git a/src/tagstudio/qt/views/styles/rounded_pixmap_style.py b/src/tagstudio/qt/views/styles/rounded_pixmap_style.py index df83c5a0..33395a5a 100644 --- a/src/tagstudio/qt/views/styles/rounded_pixmap_style.py +++ b/src/tagstudio/qt/views/styles/rounded_pixmap_style.py @@ -1,8 +1,6 @@ -# Based on the implementation by eyllanesc: -# https://stackoverflow.com/questions/54230005/qmovie-with-border-radius -# Licensed under the Creative Commons CC BY-SA 4.0 License: -# https://creativecommons.org/licenses/by-sa/4.0/ -# Modified for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) 2019 Edwin Yllanes +# SPDX-License-Identifier: CC-BY-SA-4.0 +# See: https://stackoverflow.com/questions/54230005/qmovie-with-border-radius/54231484#54231484 from typing import override diff --git a/src/tagstudio/qt/views/tag_box_view.py b/src/tagstudio/qt/views/tag_box_view.py index bf24a88c..e5c96462 100644 --- a/src/tagstudio/qt/views/tag_box_view.py +++ b/src/tagstudio/qt/views/tag_box_view.py @@ -1,5 +1,5 @@ -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from collections.abc import Iterable diff --git a/src/tagstudio/qt/views/thumb_button.py b/src/tagstudio/qt/views/thumb_button.py index 88f5f906..d08f597d 100644 --- a/src/tagstudio/qt/views/thumb_button.py +++ b/src/tagstudio/qt/views/thumb_button.py @@ -1,6 +1,5 @@ -# Copyright (C) 2024 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import sys diff --git a/src/tagstudio/resources/qt/fonts/Oxanium-Bold.ttf.license b/src/tagstudio/resources/qt/fonts/Oxanium-Bold.ttf.license new file mode 100644 index 00000000..d56fe894 --- /dev/null +++ b/src/tagstudio/resources/qt/fonts/Oxanium-Bold.ttf.license @@ -0,0 +1,2 @@ +SPDX-FileCopyrightText: 2019 The Oxanium Project Authors (https://github.com/sevmeyer/oxanium) +SPDX-License-Identifier: OFL-1.1 diff --git a/tagstudio.spec b/tagstudio.spec index e64bdecf..fbed8ea6 100644 --- a/tagstudio.spec +++ b/tagstudio.spec @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + import platform from argparse import ArgumentParser diff --git a/tests/conftest.py b/tests/conftest.py index b9f4c0c5..28b1d577 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import sys diff --git a/tests/macros/test_dupe_files.py b/tests/macros/test_dupe_files.py index 05053555..cd296e16 100644 --- a/tests/macros/test_dupe_files.py +++ b/tests/macros/test_dupe_files.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from pathlib import Path diff --git a/tests/macros/test_folders_tags.py b/tests/macros/test_folders_tags.py index 7beae3d8..c3fd32be 100644 --- a/tests/macros/test_folders_tags.py +++ b/tests/macros/test_folders_tags.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from tagstudio.core.library.alchemy.library import Library from tagstudio.qt.mixed.folders_to_tags import folders_to_tags diff --git a/tests/macros/test_missing_files.py b/tests/macros/test_missing_files.py index 61bacce0..3ea463a6 100644 --- a/tests/macros/test_missing_files.py +++ b/tests/macros/test_missing_files.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from pathlib import Path from tempfile import TemporaryDirectory diff --git a/tests/macros/test_refresh_dir.py b/tests/macros/test_refresh_dir.py index ca6ce697..01578aad 100644 --- a/tests/macros/test_refresh_dir.py +++ b/tests/macros/test_refresh_dir.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from pathlib import Path from tempfile import TemporaryDirectory diff --git a/tests/qt/test_about_modal.py b/tests/qt/test_about_modal.py index 523eb6a6..7ee64735 100644 --- a/tests/qt/test_about_modal.py +++ b/tests/qt/test_about_modal.py @@ -1,3 +1,7 @@ +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + from pytestqt.qtbot import QtBot from tagstudio.qt.mixed.about_modal import AboutModal diff --git a/tests/qt/test_build_tag_panel.py b/tests/qt/test_build_tag_panel.py index 9ae15726..b624356e 100644 --- a/tests/qt/test_build_tag_panel.py +++ b/tests/qt/test_build_tag_panel.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from collections.abc import Callable diff --git a/tests/qt/test_field_containers.py b/tests/qt/test_field_containers.py index 2b992114..0d19e4e0 100644 --- a/tests/qt/test_field_containers.py +++ b/tests/qt/test_field_containers.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from tagstudio.core.library.alchemy.library import Library diff --git a/tests/qt/test_file_path_options.py b/tests/qt/test_file_path_options.py index 412cd56f..1d28f33d 100644 --- a/tests/qt/test_file_path_options.py +++ b/tests/qt/test_file_path_options.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import os diff --git a/tests/qt/test_flow_widget.py b/tests/qt/test_flow_widget.py index 115ded7a..97393416 100644 --- a/tests/qt/test_flow_widget.py +++ b/tests/qt/test_flow_widget.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from PySide6.QtCore import QRect diff --git a/tests/qt/test_folders_to_tags.py b/tests/qt/test_folders_to_tags.py index eebee999..7e48fc59 100644 --- a/tests/qt/test_folders_to_tags.py +++ b/tests/qt/test_folders_to_tags.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from tagstudio.core.library.alchemy.library import Library diff --git a/tests/qt/test_global_settings.py b/tests/qt/test_global_settings.py index 95d6b5f6..63eb5195 100644 --- a/tests/qt/test_global_settings.py +++ b/tests/qt/test_global_settings.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from pathlib import Path diff --git a/tests/qt/test_item_thumb.py b/tests/qt/test_item_thumb.py index f022f976..d5c1e904 100644 --- a/tests/qt/test_item_thumb.py +++ b/tests/qt/test_item_thumb.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import pytest diff --git a/tests/qt/test_preview_panel.py b/tests/qt/test_preview_panel.py index 12282c9b..b2e3ef5a 100644 --- a/tests/qt/test_preview_panel.py +++ b/tests/qt/test_preview_panel.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from tagstudio.core.library.alchemy.library import Library diff --git a/tests/qt/test_qt_driver.py b/tests/qt/test_qt_driver.py index 3cf042aa..37bd3832 100644 --- a/tests/qt/test_qt_driver.py +++ b/tests/qt/test_qt_driver.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + from tagstudio.core.library.alchemy.enums import BrowsingState from tagstudio.core.utils.types import unwrap diff --git a/tests/qt/test_resource_manager.py b/tests/qt/test_resource_manager.py index bb9ae72f..5a6d72df 100644 --- a/tests/qt/test_resource_manager.py +++ b/tests/qt/test_resource_manager.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import structlog diff --git a/tests/qt/test_tag_panel.py b/tests/qt/test_tag_panel.py index 0d813da6..d5c70564 100644 --- a/tests/qt/test_tag_panel.py +++ b/tests/qt/test_tag_panel.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from pytestqt.qtbot import QtBot diff --git a/tests/qt/test_tag_search_panel.py b/tests/qt/test_tag_search_panel.py index bc455685..04a176cc 100644 --- a/tests/qt/test_tag_search_panel.py +++ b/tests/qt/test_tag_search_panel.py @@ -1,6 +1,7 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + + from PySide6.QtCore import SIGNAL from pytestqt.qtbot import QtBot diff --git a/tests/qt/test_theme_system.py b/tests/qt/test_theme_system.py index 94a0bdac..ab2eecf3 100644 --- a/tests/qt/test_theme_system.py +++ b/tests/qt/test_theme_system.py @@ -1,6 +1,6 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only + """Test theme handling in QtDriver, particularly the SYSTEM theme fix (issue #999).""" diff --git a/tests/test_db_migrations.py b/tests/test_db_migrations.py index 6052a44a..7dee6b6c 100644 --- a/tests/test_db_migrations.py +++ b/tests/test_db_migrations.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import shutil diff --git a/tests/test_driver.py b/tests/test_driver.py index 903cf1aa..5ca04b04 100644 --- a/tests/test_driver.py +++ b/tests/test_driver.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from pathlib import Path diff --git a/tests/test_json_migration.py b/tests/test_json_migration.py index e44a08d3..3c3c15db 100644 --- a/tests/test_json_migration.py +++ b/tests/test_json_migration.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 Travis Abendshien (CyanVoxel). -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from pathlib import Path diff --git a/tests/test_library.py b/tests/test_library.py index 64d3f961..17f0d990 100644 --- a/tests/test_library.py +++ b/tests/test_library.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only from collections.abc import Callable diff --git a/tests/test_search.py b/tests/test_search.py index 79812dfa..ee36af1e 100644 --- a/tests/test_search.py +++ b/tests/test_search.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import pytest diff --git a/tests/test_translations.py b/tests/test_translations.py index f01be2c6..8d0533f3 100644 --- a/tests/test_translations.py +++ b/tests/test_translations.py @@ -1,6 +1,5 @@ -# Copyright (C) 2025 -# Licensed under the GPL-3.0 License. -# Created for TagStudio: https://github.com/CyanVoxel/TagStudio +# SPDX-FileCopyrightText: (c) TagStudio Contributors +# SPDX-License-Identifier: GPL-3.0-only import string