Add justfile, add command xml-to-dataclasses, add generated dataclasses

This commit is contained in:
2026-09-14 16:02:24 +03:00
parent 7238db58ea
commit 0aaa074bc6
4 changed files with 533 additions and 0 deletions
+2
View File
@@ -1,3 +1,5 @@
__pycache__/
# Virtual environments (uv default)
.venv/
+8
View File
@@ -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
+35
View File
@@ -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",
]
+488
View File
@@ -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,
},
)