Add a structured issues model and emit findings from the filename validator
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Summary
Validation currently answers a yes/no question. BIDSValidator.is_bids() returns a
boolean, and the CLI prints one line per non-compliant file:
/sub-01/anat/oops.nii.gz is not a valid bids filename
That output carries no severity, no stable code, and no structure a program can consume.
It cannot be counted, filtered, serialised, or shown in a UI, and it cannot say why a
name is wrong.
context.py already anticipates this: ValidationError is a stub whose entire body is
"""TODO: Add issue structure.""".
Proposal
Two small pieces.
1. An issue model (bids_validator/issues.py). Pure data, no I/O, attrs to match
the convention already used by context.py, bidsignore.py and types/files.py:
Severity(error,warning)Issuewithcode,severity,location,message,sub_code,ruleDatasetIssues, an ordered collection withadd,extend,by_severity,
has_errors,__len__,__iter__
Field names mirror the reference validator so output stays interchangeable.
2. Emit findings from filename validation. Rather than one blanket answer, report the
specific reason using the reference validator's codes: NOT_INCLUDED,
MISSING_REQUIRED_ENTITY, ENTITY_NOT_IN_RULE, ENTITY_WITH_NO_LABEL,
INVALID_ENTITY_LABEL, EXTENSION_MISMATCH, DATATYPE_MISMATCH, INVALID_LOCATION,
FILENAME_MISMATCH, ALL_FILENAME_RULES_HAVE_ISSUES.
Scope is names and paths only. No file contents are read.
BIDSValidator.is_bids() stays untouched, since pybids and mne-bids depend on it.
Why this first
Every later check needs somewhere to report to. Content validation (sidecar fields, NIfTI
headers, tabular columns) produces the same Issue type into the same DatasetIssues,
so the output contract is defined once and does not change as coverage grows.
Questions for maintainers
- Is the minimal field set above right, or do you want the reference validator's richer
fields (rule provenance, machine-actionable fixes, anignoreseverity, line spans)
from the start? I kept them out to keep the first PR small. - The CLI currently prints
<path> is not a valid bids filenamefor each bad file.
When these findings are wired into it, should that output change to show the
specific code and reason, or should the current text stay the default with the
structured output behind a flag? Changing it would be more useful but would break
anyone parsing the current output. - Any preference on module naming (
issues.py/filename_checks.py)?
I have a working implementation with tests and am happy to open a PR, or to adjust the
shape first if you would prefer a different design.
- Lingua principale
- Python
- Stelle
- 10
- Fork
- 7
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di bids-standard/python-validator
-
Populate associations contextForse di nuovo libera @ubdbra001 l’ha presa 118 giorni fa e non c’è nessuna pull request aperta. Aperta
bids-standard/python-validator#82 · 1 commento · 1 assegnatario ·
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
performance
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Validate DerivativesForse già presa @bendhouseart l’ha presa 301 giorni fa. Apertaenhancement
bids-standard/python-validator#62 · 1 assegnatario ·
-
Populate tiff contextAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
Tutte le issue di bids-standard/python-validator
Issue simili
-
area:scripts area:tests bug priority:later
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Ikalus1988/MisakaNet#4358 ·
I maintainer di solito rispondono entro 1 giorno
-
Discovered ports from service discovery are never propagated to modules in Module.load()Forse già presa @vishalmore90 l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
OWASP/Nettacker#1828 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
aws-samples/sample-per-model-bedrock#708 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
-
[Performance] Bound resolve_api_hashes raw fallback reads to the 1 MiB region actually scannedAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
sjkim1127/Reversecore_MCP#365 ·
I maintainer di solito rispondono entro 1 giorno