Skip to content

Commit 01320ef

Browse files
authored
feat: add checkers to validate next/prev token refers to another one (#242)
Signed-off-by: ktro2828 <kotaro.uetake@tier4.jp>
1 parent c2ae5b9 commit 01320ef

8 files changed

Lines changed: 132 additions & 0 deletions

File tree

docs/schema/requirement.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,12 @@
4444
| `REF013` | `sample-data-filename-presence` | `ERROR` | `SampleData.filename` exists. |
4545
| `REF014` | `sample-data-info-filename-presence` | `ERROR` | `SampleData.info_filename` exists if it is not `None`. |
4646
| `REF015` | `lidarseg-filename-presence` | `ERROR` | `LidarSeg.filename` exists if `lidarseg.json` exists. |
47+
| `REF016` | `sample-next-to-another` | `ERROR` | `Sample.next` refers to another one unless it is empty. |
48+
| `REF017` | `sample-prev-to-another` | `ERROR` | `Sample.prev` refers to another one unless it is empty. |
49+
| `REF018` | `sample-annotation-next-to-another` | `ERROR` | `SampleAnnotation.next` refers to another one unless it is empty. |
50+
| `REF019` | `sample-annotation-prev-to-another` | `ERROR` | `SampleAnnotation.prev` refers to another one unless it is empty. |
51+
| `REF020` | `sample-data-next-to-another` | `ERROR` | `SampleData.next` refers to another one unless it is empty. |
52+
| `REF021` | `sample-data-prev-to-another` | `ERROR` | `SampleData.prev` refers to another one unless it is empty. |
4753

4854
## Format (`FMT`)
4955

t4_devkit/sanity/reference/__init__.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,9 @@
1515
from .ref013 import * # noqa
1616
from .ref014 import * # noqa
1717
from .ref015 import * # noqa
18+
from .ref016 import * # noqa
19+
from .ref017 import * # noqa
20+
from .ref018 import * # noqa
21+
from .ref019 import * # noqa
22+
from .ref020 import * # noqa
23+
from .ref021 import * # noqa
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from __future__ import annotations
2+
3+
from t4_devkit.schema import SchemaName
4+
5+
from ..checker import RuleID, RuleName, Severity
6+
from ..registry import CHECKERS
7+
from .base import RecordReferenceChecker
8+
9+
10+
@CHECKERS.register()
11+
class REF016(RecordReferenceChecker):
12+
"""A checker of REF016."""
13+
14+
id = RuleID("REF016")
15+
name = RuleName("sample-next-to-another")
16+
severity = Severity.ERROR
17+
description = "'Sample.next' refers to another one unless it is empty."
18+
source = SchemaName.SAMPLE
19+
target = SchemaName.SAMPLE
20+
reference = "next"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from __future__ import annotations
2+
3+
from t4_devkit.schema import SchemaName
4+
5+
from ..checker import RuleID, RuleName, Severity
6+
from ..registry import CHECKERS
7+
from .base import RecordReferenceChecker
8+
9+
10+
@CHECKERS.register()
11+
class REF017(RecordReferenceChecker):
12+
"""A checker of REF017."""
13+
14+
id = RuleID("REF017")
15+
name = RuleName("sample-prev-to-another")
16+
severity = Severity.ERROR
17+
description = "'Sample.prev' refers to another one unless it is empty."
18+
source = SchemaName.SAMPLE
19+
target = SchemaName.SAMPLE
20+
reference = "prev"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from __future__ import annotations
2+
3+
from t4_devkit.schema import SchemaName
4+
5+
from ..checker import RuleID, RuleName, Severity
6+
from ..registry import CHECKERS
7+
from .base import RecordReferenceChecker
8+
9+
10+
@CHECKERS.register()
11+
class REF018(RecordReferenceChecker):
12+
"""A checker of REF018."""
13+
14+
id = RuleID("REF018")
15+
name = RuleName("sample-annotation-next-to-another")
16+
severity = Severity.ERROR
17+
description = "'SampleAnnotation.next' refers to another one unless it is empty."
18+
source = SchemaName.SAMPLE_ANNOTATION
19+
target = SchemaName.SAMPLE_ANNOTATION
20+
reference = "next"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from __future__ import annotations
2+
3+
from t4_devkit.schema import SchemaName
4+
5+
from ..checker import RuleID, RuleName, Severity
6+
from ..registry import CHECKERS
7+
from .base import RecordReferenceChecker
8+
9+
10+
@CHECKERS.register()
11+
class REF019(RecordReferenceChecker):
12+
"""A checker of REF019."""
13+
14+
id = RuleID("REF019")
15+
name = RuleName("sample-annotation-prev-to-another")
16+
severity = Severity.ERROR
17+
description = "'SampleAnnotation.prev' refers to another one unless it is empty."
18+
source = SchemaName.SAMPLE_ANNOTATION
19+
target = SchemaName.SAMPLE_ANNOTATION
20+
reference = "prev"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from __future__ import annotations
2+
3+
from t4_devkit.schema import SchemaName
4+
5+
from ..checker import RuleID, RuleName, Severity
6+
from ..registry import CHECKERS
7+
from .base import RecordReferenceChecker
8+
9+
10+
@CHECKERS.register()
11+
class REF020(RecordReferenceChecker):
12+
"""A checker of REF020."""
13+
14+
id = RuleID("REF020")
15+
name = RuleName("sample-data-next-to-another")
16+
severity = Severity.ERROR
17+
description = "'SampleData.next' refers to another one unless it is empty."
18+
source = SchemaName.SAMPLE_DATA
19+
target = SchemaName.SAMPLE_DATA
20+
reference = "next"
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from __future__ import annotations
2+
3+
from t4_devkit.schema import SchemaName
4+
5+
from ..checker import RuleID, RuleName, Severity
6+
from ..registry import CHECKERS
7+
from .base import RecordReferenceChecker
8+
9+
10+
@CHECKERS.register()
11+
class REF021(RecordReferenceChecker):
12+
"""A checker of REF021."""
13+
14+
id = RuleID("REF021")
15+
name = RuleName("sample-data-prev-to-another")
16+
severity = Severity.ERROR
17+
description = "'SampleData.prev' refers to another one unless it is empty."
18+
source = SchemaName.SAMPLE_DATA
19+
target = SchemaName.SAMPLE_DATA
20+
reference = "prev"

0 commit comments

Comments
 (0)