Skip to content

Commit 001bb62

Browse files
committed
feat: add tier4 checker
Signed-off-by: ktro2828 <kotaro.uetake@tier4.jp>
1 parent ac2847d commit 001bb62

5 files changed

Lines changed: 46 additions & 3 deletions

File tree

docs/schema/requirement.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,6 @@
6666

6767
## Tier4 Instance (`TIV`)
6868

69-
| ID | Name | Severity | Description |
70-
| -------- | ------------ | -------- | --------------------------------------- |
71-
| `TIV001` | `load-tier4` | `Error` | Success to initialize `Tier4` instance. |
69+
| ID | Name | Severity | Description |
70+
| -------- | ------------ | -------- | ----------------------------------------------- |
71+
| `TIV001` | `load-tier4` | `Error` | Ensure `Tier4` instance is loaded successfully. |

t4_devkit/sanity/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
from .result import * # noqa
88
from .run import * # noqa
99
from .structure import * # noqa
10+
from .tier4 import * # noqa

t4_devkit/sanity/registry.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class RuleGroup(Enum):
1313
RECORD = "REC"
1414
REFERENCE = "REF"
1515
FORMAT = "FMT"
16+
TIER4 = "TIV"
1617

1718
@classmethod
1819
def values(cls) -> list[str]:

t4_devkit/sanity/tier4/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from __future__ import annotations
2+
3+
from .tiv001 import * # noqa

t4_devkit/sanity/tier4/tiv001.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from __future__ import annotations
2+
3+
from typing import TYPE_CHECKING
4+
5+
from returns.pipeline import is_successful
6+
from returns.result import Result, safe
7+
8+
from ..checker import Checker, RuleID, RuleName
9+
from ..result import Reason
10+
from ..registry import CHECKERS
11+
from t4_devkit import Tier4
12+
13+
if TYPE_CHECKING:
14+
from ..context import SanityContext
15+
16+
__all__ = ["TIV001"]
17+
18+
19+
@CHECKERS.register(RuleID("TIV001"))
20+
class TIV001(Checker):
21+
"""A checker for TIV001."""
22+
23+
name = RuleName("load-tier4")
24+
description = "Ensure 'Tier4' instance is loaded successfully."
25+
26+
def check(self, context: SanityContext) -> list[Reason]:
27+
result = _load_tier4_safe(context)
28+
return (
29+
[] if is_successful(result) else [Reason(f"Failed to load Tier4: {result.failure()}")]
30+
)
31+
32+
33+
@safe
34+
def _load_tier4_safe(context: SanityContext) -> Result[Tier4, Exception]:
35+
data_root = context.data_root.unwrap()
36+
revision = context.version.value_or(None)
37+
data_root = data_root.as_posix() if revision is None else data_root.parent.as_posix()
38+
return Tier4(data_root, revision=revision, verbose=False)

0 commit comments

Comments
 (0)