feat: support penalty config
This commit is contained in:
parent
42bbf3ce39
commit
e2dc094263
|
@ -220,6 +220,11 @@ class Task(BaseModel):
|
|||
name: str = "unknown"
|
||||
|
||||
|
||||
class Penalties(BaseModel):
|
||||
hours: List[float] = []
|
||||
factors: List[float] = []
|
||||
|
||||
|
||||
class Config(BaseModel):
|
||||
root: Path = Path(".")
|
||||
path: Path = Path("task.toml")
|
||||
|
@ -228,6 +233,7 @@ class Config(BaseModel):
|
|||
release: Release = Release() # Release configuration
|
||||
stages: List[Stage] = [] # list of stage configurations
|
||||
groups: Groups = Groups()
|
||||
penalties: Penalties = Penalties()
|
||||
max_total_score: Optional[int] = Field(
|
||||
None, validation_alias=AliasChoices("max-total-score", "max_total_score")
|
||||
)
|
||||
|
|
|
@ -41,6 +41,21 @@ def get_teapot_post_stage(
|
|||
]
|
||||
if not repo_conf.submitter_in_issue_title:
|
||||
args.append("--no-submitter-in-issue-title")
|
||||
if task_conf.time.end:
|
||||
args.extend(
|
||||
[
|
||||
"--end-time",
|
||||
task_conf.time.end.strftime("%Y-%m-%dT%H:%M:%S"),
|
||||
]
|
||||
)
|
||||
if task_conf.penalties.hours:
|
||||
penalty_config = ",".join(
|
||||
f"{hour}={factor}"
|
||||
for hour, factor in zip(
|
||||
task_conf.penalties.hours, task_conf.penalties.factors
|
||||
)
|
||||
)
|
||||
args.extend(["--penalty-config", penalty_config])
|
||||
|
||||
stage_conf = result.StageDetail(
|
||||
name="teapot",
|
||||
|
@ -118,6 +133,14 @@ def get_teapot_check_args(repo_conf: repo.Config, task_conf: task.Config) -> Lis
|
|||
res.extend(["--begin-time", task_conf.time.begin.strftime("%Y-%m-%dT%H:%M:%S")])
|
||||
if task_conf.time.end:
|
||||
res.extend(["--end-time", task_conf.time.end.strftime("%Y-%m-%dT%H:%M:%S")])
|
||||
if task_conf.penalties.hours:
|
||||
penalty_config = ",".join(
|
||||
f"{hour}={factor}"
|
||||
for hour, factor in zip(
|
||||
task_conf.penalties.hours, task_conf.penalties.factors
|
||||
)
|
||||
)
|
||||
res.extend(["--penalty-config", penalty_config])
|
||||
return res
|
||||
|
||||
|
||||
|
|
|
@ -78,7 +78,9 @@
|
|||
"--group-config",
|
||||
"Manuel=500:24,Boming=501:48,Nuvole=502:72",
|
||||
"--end-time",
|
||||
"2024-12-30T23:59:59"
|
||||
"2024-12-30T23:59:59",
|
||||
"--penalty-config",
|
||||
"24.0=0.5,48.0=0.25,72.0=0.1"
|
||||
],
|
||||
"env": [
|
||||
"REPOS_DIR=/home/tt/.cache",
|
||||
|
@ -808,7 +810,11 @@
|
|||
"--grading-repo-name",
|
||||
"ece280-joj",
|
||||
"--max-total-score",
|
||||
"10245871"
|
||||
"10245871",
|
||||
"--end-time",
|
||||
"2024-12-30T23:59:59",
|
||||
"--penalty-config",
|
||||
"24.0=0.5,48.0=0.25,72.0=0.1"
|
||||
],
|
||||
"env": [
|
||||
"REPOS_DIR=/home/tt/.cache",
|
||||
|
|
|
@ -5,6 +5,10 @@ max-total-score = 10245871
|
|||
time.end = 2024-12-30 23:59:59+08:00
|
||||
release.begin-time = 2024-12-29 23:59:59+08:00
|
||||
|
||||
[penalties]
|
||||
hours = [ 24, 48, 72 ]
|
||||
factors = [ 0.5, 0.25, 0.1 ]
|
||||
|
||||
[groups]
|
||||
name = ["Manuel", "Boming", "Nuvole"]
|
||||
max-count = [500, 501, 502]
|
||||
|
|
Loading…
Reference in New Issue
Block a user