From daefa691493218a0e192a1913eccb981e7af7648 Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Tue, 28 Apr 2026 14:08:02 +0200 Subject: [PATCH 01/13] Add workflow for checking REUSE compliance on push --- .github/workflows/reuse_compliance.yml | 33 ++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/reuse_compliance.yml diff --git a/.github/workflows/reuse_compliance.yml b/.github/workflows/reuse_compliance.yml new file mode 100644 index 0000000000..013d4e0268 --- /dev/null +++ b/.github/workflows/reuse_compliance.yml @@ -0,0 +1,33 @@ +name: Check REUSE compliance + +on: + push: + +jobs: + check_reuse_compliance: + runs-on: ubuntu-latest + timeout-minutes: 120 + + name: Check REUSE compliance + steps: + - name: Harden Runner + uses: step-security/harden-runner@8d3c67de8e2fe68ef647c8db1e6a09f647780f40 # v2.19.0 + with: + egress-policy: audit + + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Use Python + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: '3.14' + architecture: x64 + + - name: Install REUSE + run: | + pip install reuse + + - name: Run linter + run: | + reuse lint From bd860de8a78f41dd6bb28406f2a03e22842cbf49 Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Tue, 28 Apr 2026 14:17:21 +0200 Subject: [PATCH 02/13] Moved license file to where the reuse linter finds it --- .github/workflows/reuse_compliance.yml | 2 +- LICENSE => LICENSES/MIT.txt | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename LICENSE => LICENSES/MIT.txt (100%) diff --git a/.github/workflows/reuse_compliance.yml b/.github/workflows/reuse_compliance.yml index 013d4e0268..9cc64fc588 100644 --- a/.github/workflows/reuse_compliance.yml +++ b/.github/workflows/reuse_compliance.yml @@ -18,7 +18,7 @@ jobs: - name: Checkout uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - name: Use Python + - name: Setup Python uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 with: python-version: '3.14' diff --git a/LICENSE b/LICENSES/MIT.txt similarity index 100% rename from LICENSE rename to LICENSES/MIT.txt From 2a0897e832e93f5a91a4a936a1676739c531a1cf Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Tue, 28 Apr 2026 14:42:04 +0200 Subject: [PATCH 03/13] Specify global license and copyright --- REUSE.toml | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 REUSE.toml diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 0000000000..c5facb9185 --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,7 @@ +version = 1 + +# All files +[[annotations]] +path = "**" +SPDX-FileCopyrightText = "2026 Claudia Comito " +SPDX-License-Identifier = "MIT" From 51f2d45cf4f4dc400077bcbeeaba192d861d1146 Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Tue, 28 Apr 2026 15:20:19 +0200 Subject: [PATCH 04/13] Update path to license file in readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8760fb0e0c..9e6fec7cdf 100644 --- a/README.md +++ b/README.md @@ -96,7 +96,7 @@ We welcome contributions from the community. Please see our [Contribution Guidel For bug reports, feature requests, or general questions, please use [GitHub Issues](https://github.com/helmholtz-analytics/heat/issues) or [Discussions](https://github.com/helmholtz-analytics/heat/discussions). -### Citations +### How to cite Citations are essential for the sustainability of this project. If Heat supports your work, please cite our main paper: Götz, M., et al. (2020). HeAT - a Distributed and GPU-accelerated Tensor Framework for Data Analytics. In *2020 IEEE International Conference on Big Data (Big Data)* (pp. 276-287). IEEE. DOI: [10.1109/BigData50022.2020.9378050](https://doi.org/10.1109/BigData50022.2020.9378050). @@ -122,4 +122,4 @@ Götz, M., et al. (2020). HeAT - a Distributed and GPU-accelerated Tensor Framew This work was funded by the **Helmholtz Association Initiative and Networking Fund** (Project **ZT-I-0003**, "Helmholtz Analytics Framework"); the **Helmholtz AI** platform grant; the **European Space Agency (ESA)** (Programme [4000144045](https://activities.esa.int/index.php/4000144045)); the **Helmholtz Association Science Serve call 2025** (Project **DB002891**, [HeatHub](https://hifis.net/announcement/2026/01/08/scienceserve-awardees/)); the Google Summer of Code 2022 program. ### License -Heat is distributed under the **MIT license**. See the [LICENSE](https://github.com/helmholtz-analytics/heat/blob/main/LICENSE) file for details. +Heat is distributed under the **MIT license**. See the [LICENSE](https://github.com/helmholtz-analytics/heat/blob/main/LICENSES/MIT.txt) file for details. From c76f0c7ce6532e14e07e578e4ec87c2c462534fb Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Thu, 30 Apr 2026 12:31:44 +0200 Subject: [PATCH 05/13] Changed global copyright --- REUSE.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/REUSE.toml b/REUSE.toml index c5facb9185..9412416975 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -3,5 +3,5 @@ version = 1 # All files [[annotations]] path = "**" -SPDX-FileCopyrightText = "2026 Claudia Comito " +SPDX-FileCopyrightText = "Copyright (c) 2019-2026 Forschungszentrum Jülich GmbH, Karlsruher Institut für Technologie KdöR (KIT); Copyright (c) 2019-2025 Deutsches Zentrum für Luft- und Raumfahrt e.V. (DLR)" SPDX-License-Identifier = "MIT" From a62ab720f51dca389b7a31caf2b78c53a4623132 Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Thu, 30 Apr 2026 14:42:18 +0200 Subject: [PATCH 06/13] Added licenses for datasets and REUSE badge --- README.md | 1 + REUSE.toml | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/README.md b/README.md index 9e6fec7cdf..3062037c62 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/7688/badge)](https://bestpractices.coreinfrastructure.org/projects/7688) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2531472.svg)](https://doi.org/10.5281/zenodo.2531472) [![Benchmarks](https://img.shields.io/badge/Grafana-Benchmarks-2ea44f)](https://930000e0-e69a-4939-912e-89a92316b420.ka.bw-cloud-instance.org/grafana) +[![REUSE status](https://api.reuse.software/badge/git.fsfe.org/reuse/api)](https://api.reuse.software/info/git.fsfe.org/reuse/api) # Heat **High-performance data analytics in Python, at scale.** diff --git a/REUSE.toml b/REUSE.toml index 9412416975..1d9b98d37c 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -5,3 +5,17 @@ version = 1 path = "**" SPDX-FileCopyrightText = "Copyright (c) 2019-2026 Forschungszentrum Jülich GmbH, Karlsruher Institut für Technologie KdöR (KIT); Copyright (c) 2019-2025 Deutsches Zentrum für Luft- und Raumfahrt e.V. (DLR)" SPDX-License-Identifier = "MIT" + +# iris dataset +[[annotations]] +path = "heat/datasets/iris*" +SPDX-FileCopyrightText = "R. A. Fisher" +SPDX-License-Identifier = "CC0-1.0" +precedence = "override" + +# diabetes dataset +[[annotations]] +path = "heat/datasets/diabetes.h5" +SPDX-FileCopyrightText = "National Institute of Diabetes and Digestive and Kidney Diseases" +SPDX-License-Identifier = "CC0-1.0" +precedence = "override" From 66942885deb9f4d3da473b173247b6ea15cbbc3d Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Tue, 5 May 2026 16:16:04 +0200 Subject: [PATCH 07/13] Added missing CC0 license file --- LICENSES/CC0-1.0.txt | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 LICENSES/CC0-1.0.txt diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 0000000000..730f2e55b1 --- /dev/null +++ b/LICENSES/CC0-1.0.txt @@ -0,0 +1,29 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + +CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: +i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; +ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; +iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; +v. rights protecting the extraction, dissemination, use and reuse of data in a Work; +vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and +vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. +2. Waiver. To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. +3. Public License Fallback. Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. +4. Limitations and Disclaimers. +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. +b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. +c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. +d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. From 39a219b983568512e368db4f3375fd9c9fee86a8 Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Mon, 11 May 2026 17:16:13 +0200 Subject: [PATCH 08/13] Removed unused images we don't own --- doc/source/_static/images/GSoC-Horizontal.svg | 4 - doc/source/_static/images/helmholtz_logo.svg | 194 ------------------ doc/source/_static/images/local_laptop.png | Bin 24793 -> 0 bytes doc/source/_static/images/nhr_verein_logo.jpg | Bin 8167 -> 0 bytes 4 files changed, 198 deletions(-) delete mode 100644 doc/source/_static/images/GSoC-Horizontal.svg delete mode 100644 doc/source/_static/images/helmholtz_logo.svg delete mode 100644 doc/source/_static/images/local_laptop.png delete mode 100644 doc/source/_static/images/nhr_verein_logo.jpg diff --git a/doc/source/_static/images/GSoC-Horizontal.svg b/doc/source/_static/images/GSoC-Horizontal.svg deleted file mode 100644 index 962660d752..0000000000 --- a/doc/source/_static/images/GSoC-Horizontal.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/doc/source/_static/images/helmholtz_logo.svg b/doc/source/_static/images/helmholtz_logo.svg deleted file mode 100644 index 5df8f03bca..0000000000 --- a/doc/source/_static/images/helmholtz_logo.svg +++ /dev/null @@ -1,194 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/source/_static/images/local_laptop.png b/doc/source/_static/images/local_laptop.png deleted file mode 100644 index b247b98614f80d03f8d02427e83a58d930eb080f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24793 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 diff --git a/doc/source/_static/images/nhr_verein_logo.jpg b/doc/source/_static/images/nhr_verein_logo.jpg deleted file mode 100644 index d1156ac64e5804beb8dc081eecc52acc453b4d8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8167 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 From a40a5dc44b15eb3a6ba26b6cdeb48804931c7d2c Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Mon, 11 May 2026 17:32:23 +0200 Subject: [PATCH 09/13] Add license information for company logos --- LICENSES/LicenseRef-Company-Logos.txt | 7 +++++++ REUSE.toml | 13 +++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 LICENSES/LicenseRef-Company-Logos.txt diff --git a/LICENSES/LicenseRef-Company-Logos.txt b/LICENSES/LicenseRef-Company-Logos.txt new file mode 100644 index 0000000000..8c496e36be --- /dev/null +++ b/LICENSES/LicenseRef-Company-Logos.txt @@ -0,0 +1,7 @@ +These logo files are trademarks and copyrighted works of their respective owners. + +They are included solely for identification and referential purposes. +No rights to use these logos are granted except as permitted by applicable +trademark and copyright law. + +The logos remain the property of their respective owners. diff --git a/REUSE.toml b/REUSE.toml index 1d9b98d37c..e7b50416bd 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -19,3 +19,16 @@ path = "heat/datasets/diabetes.h5" SPDX-FileCopyrightText = "National Institute of Diabetes and Digestive and Kidney Diseases" SPDX-License-Identifier = "CC0-1.0" precedence = "override" + +# other's logos +[[annotations]] +path = [ + "doc/source/_static/images/dlr_logo.svg", + "doc/source/_static/images/fzj_logo.svg", + "doc/source/_static/images/jsc_logo.png", + "doc/source/_static/images/jupyter.png", + "doc/source/_static/images/kit_logo.svg", + "doc/source/_static/images/perun_logo.svg", +] +SPDX-FileCopyrightText = "Copyright lies with the respective trademark owners" +SPDX-License-Identifier = "LicenseRef-Company-Logos" From d9893ee3e13e37f1a81c50e4eec759b1eba3356b Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Fri, 22 May 2026 15:23:24 +0200 Subject: [PATCH 10/13] Moved reuse linter to push_main --- .github/workflows/push_main.yml | 26 ++++++++++++++++++++ .github/workflows/reuse_compliance.yml | 33 -------------------------- 2 files changed, 26 insertions(+), 33 deletions(-) delete mode 100644 .github/workflows/reuse_compliance.yml diff --git a/.github/workflows/push_main.yml b/.github/workflows/push_main.yml index ecf727a3c0..abedf395cd 100644 --- a/.github/workflows/push_main.yml +++ b/.github/workflows/push_main.yml @@ -91,3 +91,29 @@ jobs: py-version: ${{ matrix.py-version }} mpi: ${{ matrix.mpi }} pytorch-version: ${{ matrix.pytorch-version }} + check_reuse_compliance: + runs-on: ubuntu-latest + timeout-minutes: 120 + name: Check REUSE compliance + steps: + - name: Harden Runner + uses: step-security/harden-runner@a5ad31d6a139d249332a2605b85202e8c0b78450 # v2.19.1 + with: + egress-policy: audit + + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Setup Python + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: '3.14' + architecture: x64 + + - name: Install REUSE + run: | + pip install reuse + + - name: Run linter + run: | + reuse lint diff --git a/.github/workflows/reuse_compliance.yml b/.github/workflows/reuse_compliance.yml deleted file mode 100644 index 9cc64fc588..0000000000 --- a/.github/workflows/reuse_compliance.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Check REUSE compliance - -on: - push: - -jobs: - check_reuse_compliance: - runs-on: ubuntu-latest - timeout-minutes: 120 - - name: Check REUSE compliance - steps: - - name: Harden Runner - uses: step-security/harden-runner@8d3c67de8e2fe68ef647c8db1e6a09f647780f40 # v2.19.0 - with: - egress-policy: audit - - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - - name: Setup Python - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 - with: - python-version: '3.14' - architecture: x64 - - - name: Install REUSE - run: | - pip install reuse - - - name: Run linter - run: | - reuse lint From 59e3a7c5369e720045f74b5eb8207f822a36af1c Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:00:23 +0200 Subject: [PATCH 11/13] Revert "Moved reuse linter to push_main" This reverts commit d9893ee3e13e37f1a81c50e4eec759b1eba3356b. --- .github/workflows/push_main.yml | 26 -------------------- .github/workflows/reuse_compliance.yml | 33 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 26 deletions(-) create mode 100644 .github/workflows/reuse_compliance.yml diff --git a/.github/workflows/push_main.yml b/.github/workflows/push_main.yml index abedf395cd..ecf727a3c0 100644 --- a/.github/workflows/push_main.yml +++ b/.github/workflows/push_main.yml @@ -91,29 +91,3 @@ jobs: py-version: ${{ matrix.py-version }} mpi: ${{ matrix.mpi }} pytorch-version: ${{ matrix.pytorch-version }} - check_reuse_compliance: - runs-on: ubuntu-latest - timeout-minutes: 120 - name: Check REUSE compliance - steps: - - name: Harden Runner - uses: step-security/harden-runner@a5ad31d6a139d249332a2605b85202e8c0b78450 # v2.19.1 - with: - egress-policy: audit - - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - - name: Setup Python - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 - with: - python-version: '3.14' - architecture: x64 - - - name: Install REUSE - run: | - pip install reuse - - - name: Run linter - run: | - reuse lint diff --git a/.github/workflows/reuse_compliance.yml b/.github/workflows/reuse_compliance.yml new file mode 100644 index 0000000000..9cc64fc588 --- /dev/null +++ b/.github/workflows/reuse_compliance.yml @@ -0,0 +1,33 @@ +name: Check REUSE compliance + +on: + push: + +jobs: + check_reuse_compliance: + runs-on: ubuntu-latest + timeout-minutes: 120 + + name: Check REUSE compliance + steps: + - name: Harden Runner + uses: step-security/harden-runner@8d3c67de8e2fe68ef647c8db1e6a09f647780f40 # v2.19.0 + with: + egress-policy: audit + + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Setup Python + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: '3.14' + architecture: x64 + + - name: Install REUSE + run: | + pip install reuse + + - name: Run linter + run: | + reuse lint From 6c681fa16456ba2812e10219785b6acf3f7f8afc Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:10:51 +0200 Subject: [PATCH 12/13] Reapply "Moved reuse linter to push_main" This reverts commit 59e3a7c5369e720045f74b5eb8207f822a36af1c. --- .github/workflows/push_main.yml | 26 ++++++++++++++++++++ .github/workflows/reuse_compliance.yml | 33 -------------------------- 2 files changed, 26 insertions(+), 33 deletions(-) delete mode 100644 .github/workflows/reuse_compliance.yml diff --git a/.github/workflows/push_main.yml b/.github/workflows/push_main.yml index ecf727a3c0..abedf395cd 100644 --- a/.github/workflows/push_main.yml +++ b/.github/workflows/push_main.yml @@ -91,3 +91,29 @@ jobs: py-version: ${{ matrix.py-version }} mpi: ${{ matrix.mpi }} pytorch-version: ${{ matrix.pytorch-version }} + check_reuse_compliance: + runs-on: ubuntu-latest + timeout-minutes: 120 + name: Check REUSE compliance + steps: + - name: Harden Runner + uses: step-security/harden-runner@a5ad31d6a139d249332a2605b85202e8c0b78450 # v2.19.1 + with: + egress-policy: audit + + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + + - name: Setup Python + uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 + with: + python-version: '3.14' + architecture: x64 + + - name: Install REUSE + run: | + pip install reuse + + - name: Run linter + run: | + reuse lint diff --git a/.github/workflows/reuse_compliance.yml b/.github/workflows/reuse_compliance.yml deleted file mode 100644 index 9cc64fc588..0000000000 --- a/.github/workflows/reuse_compliance.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Check REUSE compliance - -on: - push: - -jobs: - check_reuse_compliance: - runs-on: ubuntu-latest - timeout-minutes: 120 - - name: Check REUSE compliance - steps: - - name: Harden Runner - uses: step-security/harden-runner@8d3c67de8e2fe68ef647c8db1e6a09f647780f40 # v2.19.0 - with: - egress-policy: audit - - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - - - name: Setup Python - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0 - with: - python-version: '3.14' - architecture: x64 - - - name: Install REUSE - run: | - pip install reuse - - - name: Run linter - run: | - reuse lint From f0864d34035b6173b3c8439acbf94c772c0eaab6 Mon Sep 17 00:00:00 2001 From: Thomas Baumann <39156931+brownbaerchen@users.noreply.github.com> Date: Fri, 12 Jun 2026 12:53:09 +0200 Subject: [PATCH 13/13] Fixed REUSE badge --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cf100782f8..d270727e5d 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ [![OpenSSF Best Practices](https://bestpractices.coreinfrastructure.org/projects/7688/badge)](https://bestpractices.coreinfrastructure.org/projects/7688) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.2531472.svg)](https://doi.org/10.5281/zenodo.2531472) [![Benchmarks](https://img.shields.io/badge/Grafana-Benchmarks-2ea44f)](https://930000e0-e69a-4939-912e-89a92316b420.ka.bw-cloud-instance.org/grafana) -[![REUSE status](https://api.reuse.software/badge/git.fsfe.org/reuse/api)](https://api.reuse.software/info/git.fsfe.org/reuse/api) +[![REUSE status](https://api.reuse.software/badge/github.com/helmholtz-analytics/heat)](https://api.reuse.software/info/github.com/helmholtz-analytics/heat) # Heat **High-performance data analytics in Python, at scale.**