Add justfile, add command xml-to-dataclasses, add generated dataclasses
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
__pycache__/
|
||||||
|
|
||||||
# Virtual environments (uv default)
|
# Virtual environments (uv default)
|
||||||
.venv/
|
.venv/
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
default:
|
||||||
|
@just --list
|
||||||
|
|
||||||
|
root := justfile_directory()
|
||||||
|
|
||||||
|
[working-directory: 'src/tasks_to_mdl']
|
||||||
|
xml-to-dataclasses:
|
||||||
|
uv run xsdata generate --package gen --include-header {{ root }}/input/nothing.xml
|
||||||
|
|||||||
@@ -0,0 +1,35 @@
|
|||||||
|
"""This file was generated by xsdata, v26.2, on 2026-09-14 16:00:22
|
||||||
|
|
||||||
|
Generator: DataclassGenerator
|
||||||
|
See: https://xsdata.readthedocs.io/
|
||||||
|
"""
|
||||||
|
|
||||||
|
from gen.quiz import (
|
||||||
|
Display,
|
||||||
|
Expected,
|
||||||
|
Extra,
|
||||||
|
Generalfeedback,
|
||||||
|
Name,
|
||||||
|
Question,
|
||||||
|
Questiontext,
|
||||||
|
Quiz,
|
||||||
|
Stdin,
|
||||||
|
Testcase,
|
||||||
|
Testcases,
|
||||||
|
Testcode,
|
||||||
|
)
|
||||||
|
|
||||||
|
__all__ = [
|
||||||
|
"Display",
|
||||||
|
"Expected",
|
||||||
|
"Extra",
|
||||||
|
"Generalfeedback",
|
||||||
|
"Name",
|
||||||
|
"Question",
|
||||||
|
"Questiontext",
|
||||||
|
"Quiz",
|
||||||
|
"Stdin",
|
||||||
|
"Testcase",
|
||||||
|
"Testcases",
|
||||||
|
"Testcode",
|
||||||
|
]
|
||||||
@@ -0,0 +1,488 @@
|
|||||||
|
"""This file was generated by xsdata, v26.2, on 2026-09-14 16:00:22
|
||||||
|
|
||||||
|
Generator: DataclassGenerator
|
||||||
|
See: https://xsdata.readthedocs.io/
|
||||||
|
"""
|
||||||
|
|
||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from dataclasses import dataclass, field
|
||||||
|
from decimal import Decimal
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Display:
|
||||||
|
class Meta:
|
||||||
|
name = "display"
|
||||||
|
|
||||||
|
text: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Expected:
|
||||||
|
class Meta:
|
||||||
|
name = "expected"
|
||||||
|
|
||||||
|
text: str | Decimal | float = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Extra:
|
||||||
|
class Meta:
|
||||||
|
name = "extra"
|
||||||
|
|
||||||
|
text: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Generalfeedback:
|
||||||
|
class Meta:
|
||||||
|
name = "generalfeedback"
|
||||||
|
|
||||||
|
format: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Attribute",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
text: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Name:
|
||||||
|
class Meta:
|
||||||
|
name = "name"
|
||||||
|
|
||||||
|
text: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Questiontext:
|
||||||
|
class Meta:
|
||||||
|
name = "questiontext"
|
||||||
|
|
||||||
|
format: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Attribute",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
text: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Stdin:
|
||||||
|
class Meta:
|
||||||
|
name = "stdin"
|
||||||
|
|
||||||
|
text: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Testcode:
|
||||||
|
class Meta:
|
||||||
|
name = "testcode"
|
||||||
|
|
||||||
|
text: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Testcase:
|
||||||
|
class Meta:
|
||||||
|
name = "testcase"
|
||||||
|
|
||||||
|
testtype: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Attribute",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
useasexample: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Attribute",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
hiderestiffail: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Attribute",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
mark: Decimal = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Attribute",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
testcode: Testcode = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
stdin: Stdin = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
expected: Expected = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
extra: Extra = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
display: Display = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Testcases:
|
||||||
|
class Meta:
|
||||||
|
name = "testcases"
|
||||||
|
|
||||||
|
testcase: list[Testcase] = field(
|
||||||
|
default_factory=list,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
"min_occurs": 1,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Question:
|
||||||
|
class Meta:
|
||||||
|
name = "question"
|
||||||
|
|
||||||
|
type_value: str = field(
|
||||||
|
metadata={
|
||||||
|
"name": "type",
|
||||||
|
"type": "Attribute",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
name: Name = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
questiontext: Questiontext = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
generalfeedback: Generalfeedback = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
defaultgrade: Decimal = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
penalty: Decimal = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
hidden: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
idnumber: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
coderunnertype: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
prototypetype: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
allornothing: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
penaltyregime: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
precheck: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
hidecheck: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
showsource: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
answerboxlines: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
answerboxcolumns: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
answerpreload: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
globalextra: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
useace: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
resultcolumns: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
template: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
iscombinatortemplate: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
allowmultiplestdins: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
answer: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
validateonsave: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
testsplitterre: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
language: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
acelang: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sandbox: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
grader: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
cputimelimitsecs: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
memlimitmb: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
sandboxparams: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
templateparams: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
hoisttemplateparams: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
extractcodefromjson: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
templateparamslang: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
templateparamsevalpertry: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
templateparamsevald: str = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
twigall: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
uiplugin: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
uiparameters: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
attachments: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
attachmentsrequired: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
maxfilesize: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
filenamesregex: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
filenamesexplain: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
displayfeedback: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
giveupallowed: int = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
prototypeextra: None | object = field(
|
||||||
|
default=None,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
testcases: Testcases = field(
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(kw_only=True)
|
||||||
|
class Quiz:
|
||||||
|
class Meta:
|
||||||
|
name = "quiz"
|
||||||
|
|
||||||
|
question: list[Question] = field(
|
||||||
|
default_factory=list,
|
||||||
|
metadata={
|
||||||
|
"type": "Element",
|
||||||
|
"min_occurs": 1,
|
||||||
|
},
|
||||||
|
)
|
||||||
Reference in New Issue
Block a user