Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
e52fe77
Add LICENSES/ with the full text of every licence used
user27182 Sep 5, 2026
c0bb136
Add DATASETS.toml describing every file under Data/
user27182 Sep 5, 2026
2716b14
Migrate per-dataset licence files into DATASETS.toml
user27182 Sep 5, 2026
b91ceb8
Migrate per-dataset README and CITATION files into DATASETS.toml
user27182 Sep 5, 2026
e56db20
Add tools/validate_datasets.py
user27182 Sep 5, 2026
554f596
Add CI workflow enforcing the dataset metadata format
user27182 Sep 5, 2026
b5661bd
Document the dataset metadata format
user27182 Sep 5, 2026
bc632a5
Close two ways past the validator's forbidden-file and coverage rules
user27182 Sep 6, 2026
8ee2bbf
Report a malformed table instead of raising
user27182 Sep 6, 2026
0f5fc17
Point the Victorian goblet at the Thingiverse page it actually came from
user27182 Sep 6, 2026
03ae0fb
Record Stanford's cultural restriction on the dragon and Lucy
user27182 Sep 6, 2026
280045b
Reclassify the top-level mars and stars textures
user27182 Sep 6, 2026
23d0acb
Describe ExportBunny as what it is
user27182 Sep 6, 2026
e86b247
Record both halves of the UNISIM-II licence
user27182 Sep 6, 2026
995f21a
Restore the CPTAC acknowledgement statement
user27182 Sep 6, 2026
24e930f
Resolve four datasets that were recorded as undetermined
user27182 Sep 6, 2026
0bc5de8
Correct three claims that the data contradicts
user27182 Sep 6, 2026
404b7ba
Repoint five source URLs that no longer support their claims
user27182 Sep 6, 2026
a8f3faa
Record what verification found for four uncertain entries
user27182 Sep 6, 2026
ac3df4f
Quote the Stanford conditions of use verbatim
user27182 Sep 6, 2026
eb10302
Fix the Dataset Gallery link
user27182 Sep 6, 2026
89341d4
Document what `provenance` covers and how `path` patterns match
user27182 Sep 6, 2026
2456f57
Say what the root LICENSE covers, and narrow the REUSE claim
user27182 Sep 6, 2026
9c2c0fe
Leave Data/ out of the CI working tree
user27182 Sep 6, 2026
95c3784
Downgrade two Laser Design attributions to inferred
user27182 Sep 6, 2026
4a4047e
Stop treating an SPDX exception as a licence identifier
user27182 Sep 6, 2026
438fdeb
Correct the Nefertiti licence: CC BY-SA 4.0, not CC BY-NC-SA 4.0
user27182 Sep 6, 2026
3dff4b8
Correct the DICOM stack: MR forearm, CC BY 4.0
user27182 Sep 6, 2026
6009df4
Record the terms of use the Laser Design pages do carry
user27182 Sep 6, 2026
ed96120
Describe the Ivan Nikolov meshes as the files actually are
user27182 Sep 6, 2026
294da85
Correct four descriptions the files or sources contradict
user27182 Sep 6, 2026
5a92c3b
Resolve the sextant, and record two disclaimed origins
user27182 Sep 6, 2026
23e6626
Catch the two metadata filenames this branch itself deletes
user27182 Sep 6, 2026
ff8d555
Correct the Unknown licence text and three stale sources
user27182 Sep 6, 2026
de6bd4f
Stop asserting a copyright notice nobody published
user27182 Sep 6, 2026
b9a4e53
Give byte-identical files one licence
user27182 Sep 6, 2026
ee996d3
Resolve skybox2 to the VTK Examples import
user27182 Sep 6, 2026
964d104
Read the Thingiverse licence version instead of inferring it
user27182 Sep 6, 2026
ac6f498
Correct four records against the files and archives themselves
user27182 Sep 6, 2026
a1d3f23
Correct the acceptance test and the licence-reading guidance
user27182 Sep 6, 2026
1d4622d
Check element types, wildcard-only paths and duplicate blobs
user27182 Sep 6, 2026
9f927d0
Raise the shark to verified, and record three smaller leads
user27182 Sep 6, 2026
1d399b4
Record the Viewpoint terms the cow files carry in their headers
user27182 Sep 6, 2026
929a22c
Record 3GQP under the licence the Protein Data Bank uses
user27182 Sep 6, 2026
cb19774
Move two byte-identity notes to the entries they describe
user27182 Sep 6, 2026
8931a3b
Correct five dataset types, the import month and the notch pair
user27182 Sep 6, 2026
fc1769d
Point the VTK Data source at a URL that resolves
user27182 Sep 6, 2026
dd9efad
Stop the worked examples demonstrating what was just corrected
user27182 Sep 6, 2026
9d35bd9
Document how the provenance was established, and how to check it
user27182 Sep 6, 2026
cf2afdb
Credit the sky textures to Solar System Scope, not the MATLAB repository
user27182 Sep 6, 2026
cd37e46
Pull five records out of the inherited buckets
user27182 Sep 6, 2026
5774663
Identify the multiblock test data, and correct three provenance sente…
user27182 Sep 6, 2026
6a3d195
Close the `?` wildcard hole and report scalar type errors
user27182 Sep 6, 2026
a4473f2
Fix the worked example, and name the Tango author the file records
user27182 Sep 6, 2026
0088e15
Separate Pluto from the Solar System Scope textures
user27182 Sep 6, 2026
65e3889
Correct four descriptions and a citation I quoted wrong
user27182 Sep 6, 2026
078cf02
Record the Viewpoint terms on cowHead.vtp
user27182 Sep 6, 2026
6e888c6
Repoint four datasets at lorensen/VTKExamples
user27182 Sep 6, 2026
b8a55ce
Separate the generated wavy animation from the ParaView data
user27182 Sep 6, 2026
c925938
Correct four more datasets that claimed to predate the fork
user27182 Sep 6, 2026
195a52f
Report a malformed `license` table instead of crashing on it
user27182 Sep 6, 2026
ebc9603
Drop a modification the Hertzian archive never had
user27182 Sep 6, 2026
c6ae639
Name the 3D Studio flamingo for what it is
user27182 Sep 6, 2026
760bb99
Cite the archived Thingiverse pages, not the live ones
user27182 Sep 6, 2026
f169ec0
Say where the Exodus Nemesis metadata actually lives
user27182 Sep 6, 2026
c3d43b0
Date the Lincoln mask to the cast that was scanned
user27182 Sep 6, 2026
34cbb16
Document the three techniques that found this round's errors
user27182 Sep 6, 2026
f912f4c
Credit the skybox cube map to Emil Persson under CC BY 3.0
user27182 Sep 6, 2026
70830bc
Stop teaching that a hash match settles the licence
user27182 Sep 6, 2026
652fa59
Separate two hand-written PVD files from the ParaView ones
user27182 Sep 6, 2026
908d268
Record the public-domain files as public domain
user27182 Sep 6, 2026
3e20a66
Record the St Helens DEM as the federal work it is
user27182 Sep 6, 2026
dfb4e3b
Separate the Cyberware horse from the VTK Examples bulk entry
user27182 Sep 6, 2026
1466b09
Identify the OSM street graph and the OMF project file
user27182 Sep 6, 2026
80e7c9e
Rename `source_url` to `origin_url`
user27182 Sep 6, 2026
0a1509d
Identify the Pluto texture as the New Horizons colour map
user27182 Sep 6, 2026
1e3321c
Trace the SGeMS grids to the Training Images Library
user27182 Sep 6, 2026
6f79f13
Stop describing the PyVista side as done
user27182 Sep 6, 2026
632730d
Match two descriptions to what their entries now hold
user27182 Sep 6, 2026
2ec7011
Identify the crater orthophoto as a LINZ Topo50 clip
user27182 Sep 6, 2026
9786771
Record two medical datasets from what they actually are
user27182 Sep 6, 2026
070c440
Identify the NIfTI samples and the Auto MPG exports
user27182 Sep 6, 2026
7114a1b
Read the terms at the head of the shark's chain
user27182 Sep 6, 2026
23b86f6
Check provenance across byte-identical files too
user27182 Sep 6, 2026
16063eb
Repair claims that could not be re-checked as written
user27182 Sep 6, 2026
be7993a
Say where each licence text came from
user27182 Sep 6, 2026
3c5cce9
Flag an identifiable patient study, and a second hospital scan
user27182 Sep 6, 2026
afe2fac
Record the NASA CFD cases as the federal work they are
user27182 Sep 6, 2026
ce3b91f
Fold the duplicate combustor block into the NASA entry
user27182 Sep 6, 2026
c9431ba
Attribute the frog to LBNL, and narrow the grant to what was given
user27182 Sep 6, 2026
1fc6106
Apply three more of the VTK textbook's data credits
user27182 Sep 6, 2026
16d1b6c
Give the validator its first tests
user27182 Sep 6, 2026
30f5170
Stop three ways the validator could pass a file it never checked
user27182 Sep 6, 2026
ace2abd
Fix the licence example that the new required key invalidated
user27182 Sep 6, 2026
bc41397
Capture stderr in the job summary
user27182 Sep 6, 2026
42d7d2a
Merge remote-tracking branch 'origin/master' into maint/dataset-metadata
user27182 Sep 7, 2026
adaeaae
Record the procedural cow, and migrate its sidecars
user27182 Sep 7, 2026
88e4149
Record the origins established for the held-back entries
user27182 Sep 21, 2026
4476070
Harden the validator and test it against known-bad tables
user27182 Sep 29, 2026
73f0e67
Apply the final audit to the dataset records
user27182 Sep 29, 2026
3832c0d
Quote the terms each LicenseRef text rests on
user27182 Sep 29, 2026
869d9fb
Bring the docs in line with the audited table and validator
user27182 Sep 29, 2026
ce2bd01
Reject embedded ** and guard a non-string name in the identical-files…
user27182 Sep 29, 2026
96d89af
Point licence urls at master, align head_2 and sparse_points with the…
user27182 Sep 29, 2026
91bd1be
Link the woman scan's origin through the Wayback Machine and archive …
user27182 Sep 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 19 additions & 41 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,44 +4,22 @@

<!-- What are you adding or changing, and why? -->

## Dataset license checklist

**All new datasets must pass this checklist before merge.** See the
[Adding new datasets](../blob/master/README.md#adding-new-datasets-licensing-requirements)
section of the README for full details.

- [ ] I have identified the **original source** of the dataset (URL,
paper, repository, or upload page) and recorded it in the license
file.
- [ ] I have identified the **exact license** of the dataset by reading
it at the source. I have not guessed.
- [ ] The license **permits commercial use**. Non-commercial licenses
(CC BY-NC, CC BY-NC-SA, CC BY-NC-ND, "research only", etc.) are
not accepted without explicit maintainer approval and prominent
labeling.
- [ ] The license **permits redistribution** from a BSD-licensed
project (pyvista).
- [ ] I have added a **license file** alongside the dataset:
- For a dataset in its own directory: a `LICENSE` file inside that
directory.
- For a loose file in `Data/`: a `<filename>.license` companion file.
- [ ] The license file includes:
- [ ] Source URL
- [ ] Verbatim license statement or link
- [ ] Required attribution text (if any)
- [ ] An `SPDX-License-Identifier:` line
- [ ] If the license is **ShareAlike** (CC BY-SA, ODbL, etc.), I have
prominently flagged the ShareAlike obligation so downstream users
are aware that derivatives must be re-shared under the same
license.

## Declared license

- **SPDX identifier:** <!-- e.g. CC0-1.0, CC-BY-4.0, MIT, LicenseRef-... -->
- **Source URL:** <!-- where the dataset originated -->
- **Commercial use:** <!-- permitted / not permitted -->
- **Attribution required:** <!-- yes/no — if yes, what text? -->

## Additional notes

<!-- Anything else reviewers should know. -->
## Dataset checklist

Only needed if this PR adds or changes files under `Data/`. See
[CONTRIBUTING.md](https://github.com/pyvista/data/blob/master/CONTRIBUTING.md)
for the field reference.

- [ ] I added a `[[dataset]]` block to `DATASETS.toml` for every file I added,
in alphabetical order by `name`.
- [ ] I did **not** add a `LICENSE`, `README`, `CITATION` or `.license` file
under `Data/`.
- [ ] I read the licence **at the source** and recorded it in
`SPDX-License-Identifier`. I did not guess.
- [ ] The licence permits redistribution from this repository (Apache-2.0)
and from PyVista (MIT), and permits commercial use. (Non-commercial data needs maintainer approval
and `commercial_use = false` on its `[license.*]` table.)
- [ ] If the licence requires credit, I filled in `attribution`.
- [ ] If I changed the data after downloading it, I set `modified = true` and
described the change in `modification`.
- [ ] `python tools/validate_datasets.py` passes locally.
78 changes: 78 additions & 0 deletions .github/workflows/validate-datasets.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
name: Validate dataset metadata

on:
pull_request:
push:
branches: [master]
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
validate:
name: DATASETS.toml
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v7
with:
filter: blob:none
persist-credentials: false
sparse-checkout-cone-mode: false
sparse-checkout: |
/*
!/Data/

- uses: actions/setup-python@v7
with:
python-version: '3.12'

- name: Validate DATASETS.toml
id: validate
shell: bash
run: |
set -o pipefail
python tools/validate_datasets.py 2>&1 | tee validation.log

- name: Test the validator
if: always() && steps.validate.conclusion != 'skipped'
shell: bash
run: |
python -m pip install --quiet pytest
python -m pytest tools -q

- name: Explain the failure
if: failure() && steps.validate.conclusion == 'failure'
shell: bash
run: |
{
echo '## Dataset metadata check failed'
echo
echo 'Every file under `Data/` must be described by a `[[dataset]]` block in'
echo '`DATASETS.toml`. Per-dataset licence, copying, copyright, notice, readme'
echo 'and citation files (any letter case, singular or plural, bare or with any'
echo 'extension: `LICENSE`, `LICENSE.MIT`, `COPYING`, `NOTICE`, `README.md`,'
echo '`CITATION.cff` and the like) and `.license` sidecars are not accepted'
echo 'under `Data/`: that information belongs in `DATASETS.toml`,'
echo 'which is what PyVista reads to publish provenance in the Dataset Gallery.'
echo
echo 'Run the same check locally with:'
echo
echo '```bash'
echo 'python tools/validate_datasets.py'
echo '```'
echo
echo 'Full output:'
echo
echo '```'
cat validation.log
echo '```'
echo
echo 'See [CONTRIBUTING.md](https://github.com/pyvista/data/blob/master/CONTRIBUTING.md)'
echo 'for the field reference and worked examples.'
} >> "$GITHUB_STEP_SUMMARY"
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
*.unzip
.DS_Store
tools/__pycache__/
.pytest_cache/
Loading
Loading