diff --git a/.gitignore b/.gitignore index 7f437de..bf4ecb1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ +__pycache__/ + # Virtual environments (uv default) .venv/ diff --git a/justfile b/justfile index e69de29..cb912ec 100644 --- a/justfile +++ b/justfile @@ -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 diff --git a/src/tasks_to_mdl/gen/__init__.py b/src/tasks_to_mdl/gen/__init__.py new file mode 100644 index 0000000..c8fe632 --- /dev/null +++ b/src/tasks_to_mdl/gen/__init__.py @@ -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", +] diff --git a/src/tasks_to_mdl/gen/quiz.py b/src/tasks_to_mdl/gen/quiz.py new file mode 100644 index 0000000..cd6d599 --- /dev/null +++ b/src/tasks_to_mdl/gen/quiz.py @@ -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, + }, + )