feat: more strict models
All checks were successful
build / build (push) Successful in 2m2s
build / trigger-build-image (push) Successful in 12s

This commit is contained in:
Boming Zhang 2025-09-17 14:26:09 -07:00
parent 3f0fdd816b
commit 6795290d7c
No known key found for this signature in database
GPG Key ID: 134DACA8458EB0E3
3 changed files with 12 additions and 20 deletions

View File

@ -17,7 +17,7 @@ repos:
- id: yamlfmt
exclude: '^tests/'
- repo: https://github.com/pdm-project/pdm
rev: 2.19.2
rev: 2.25.9
hooks:
- id: pdm-lock-check
- repo: https://github.com/pre-commit/mirrors-mypy

View File

@ -4,14 +4,7 @@ from enum import Enum
from pathlib import Path
from typing import Any, Dict, List, Optional, Type
from pydantic import (
AliasChoices,
BaseModel,
ConfigDict,
Field,
field_validator,
model_validator,
)
from pydantic import AliasChoices, ConfigDict, Field, field_validator, model_validator
from joj3_config_generator.models.common import Memory, StrictBaseModel, Time
from joj3_config_generator.models.const import (
@ -25,7 +18,7 @@ from joj3_config_generator.models.const import (
from joj3_config_generator.models.repo import Groups
class ParserResultDetail(BaseModel):
class ParserResultDetail(StrictBaseModel):
cpu_time: bool = Field(
True, validation_alias=AliasChoices("cpu-time", "cpu_time", "cpu")
) # Display CPU time
@ -48,17 +41,17 @@ class ParserResultDetail(BaseModel):
) # Max output length of each file
class ParserFile(BaseModel):
class ParserFile(StrictBaseModel):
name: str = ""
class ParserLog(BaseModel):
class ParserLog(StrictBaseModel):
filename: str
msg: str = ""
level: str = ""
class ParserDummy(BaseModel):
class ParserDummy(StrictBaseModel):
comment: str = ""
score: int = 0
force_quit: bool = Field(
@ -66,7 +59,7 @@ class ParserDummy(BaseModel):
)
class ParserResultStatus(BaseModel):
class ParserResultStatus(StrictBaseModel):
comment: str = ""
score: int = 0
force_quit: bool = Field(
@ -74,13 +67,13 @@ class ParserResultStatus(BaseModel):
)
class ParserKeyword(BaseModel):
class ParserKeyword(StrictBaseModel):
score: int = 0
keyword: List[str] = []
weight: List[int] = []
class ParserDiffOutputs(BaseModel):
class ParserDiffOutputs(StrictBaseModel):
score: int = 0
ignore_spaces: bool = Field(
True, validation_alias=AliasChoices("ignore-spaces", "ignore_spaces")
@ -98,7 +91,7 @@ class ParserDiffOutputs(BaseModel):
)
class ParserDiff(BaseModel):
class ParserDiff(StrictBaseModel):
score: int = DEFAULT_CASE_SCORE
ignore_spaces: bool = Field(
True, validation_alias=AliasChoices("ignore-spaces", "ignore_spaces")
@ -133,7 +126,7 @@ class ParserDiff(BaseModel):
return self
class StageFiles(BaseModel):
class StageFiles(StrictBaseModel):
import_: List[str] = Field([], validation_alias="import")
export: List[str] = []
import_map: Dict[str, str] = Field(
@ -141,7 +134,7 @@ class StageFiles(BaseModel):
)
class Limit(BaseModel):
class Limit(StrictBaseModel):
mem: int = DEFAULT_MEMORY_LIMIT
cpu: int = DEFAULT_CPU_LIMIT
time: int = 0

View File

@ -70,7 +70,6 @@ disallow_untyped_defs = true
[tool.pydantic-mypy]
init_forbid_extra = true
init_typed = true
warn_required_dynamic_aliases = true
warn_untyped_fields = true
[tool.setuptools_scm]