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