autograder.model.course

 1import typing
 2
 3import lms.model.assignments
 4import lms.model.base
 5
 6import autograder.model.assignment
 7
 8class Course(lms.model.base.BaseType):
 9    """
10    A course.
11    """
12
13    CORE_FIELDS = [
14        'id',
15        'name',
16    ]
17
18    def __init__(self,
19            id: str,
20            name: str,
21            assignments: typing.Dict[str, lms.model.assignments.Assignment],
22            **kwargs: typing.Any) -> None:
23        super().__init__(**kwargs)
24
25        self.id: str = id
26        """ ID for this course. """
27
28        self.name: str = name
29        """ Name for this course. """
30
31        self.assignments: typing.Dict[str, lms.model.assignments.Assignment] = assignments
32        """ Assignments for this course, keyed by assignment id. """
33
34    @classmethod
35    def from_api(cls, data: typing.Dict[str, typing.Any]) -> 'Course':
36        """ Convert a dict coming from autograder API JSON. """
37
38        data = data.copy()
39
40        data['assignments'] = {key: autograder.model.assignment.make_assignment(value) for (key, value) in data['assignments'].items()}
41
42        return Course(**data)
class Course(lms.model.base.BaseType):
 9class Course(lms.model.base.BaseType):
10    """
11    A course.
12    """
13
14    CORE_FIELDS = [
15        'id',
16        'name',
17    ]
18
19    def __init__(self,
20            id: str,
21            name: str,
22            assignments: typing.Dict[str, lms.model.assignments.Assignment],
23            **kwargs: typing.Any) -> None:
24        super().__init__(**kwargs)
25
26        self.id: str = id
27        """ ID for this course. """
28
29        self.name: str = name
30        """ Name for this course. """
31
32        self.assignments: typing.Dict[str, lms.model.assignments.Assignment] = assignments
33        """ Assignments for this course, keyed by assignment id. """
34
35    @classmethod
36    def from_api(cls, data: typing.Dict[str, typing.Any]) -> 'Course':
37        """ Convert a dict coming from autograder API JSON. """
38
39        data = data.copy()
40
41        data['assignments'] = {key: autograder.model.assignment.make_assignment(value) for (key, value) in data['assignments'].items()}
42
43        return Course(**data)

A course.

Course( id: str, name: str, assignments: Dict[str, lms.model.assignments.Assignment], **kwargs: Any)
19    def __init__(self,
20            id: str,
21            name: str,
22            assignments: typing.Dict[str, lms.model.assignments.Assignment],
23            **kwargs: typing.Any) -> None:
24        super().__init__(**kwargs)
25
26        self.id: str = id
27        """ ID for this course. """
28
29        self.name: str = name
30        """ Name for this course. """
31
32        self.assignments: typing.Dict[str, lms.model.assignments.Assignment] = assignments
33        """ Assignments for this course, keyed by assignment id. """
CORE_FIELDS = ['id', 'name']

The common fields shared across backends for this type that are used for comparison and other operations. Child classes should set this to define how comparisons are made.

id: str

ID for this course.

name: str

Name for this course.

assignments: Dict[str, lms.model.assignments.Assignment]

Assignments for this course, keyed by assignment id.

@classmethod
def from_api(cls, data: Dict[str, Any]) -> Course:
35    @classmethod
36    def from_api(cls, data: typing.Dict[str, typing.Any]) -> 'Course':
37        """ Convert a dict coming from autograder API JSON. """
38
39        data = data.copy()
40
41        data['assignments'] = {key: autograder.model.assignment.make_assignment(value) for (key, value) in data['assignments'].items()}
42
43        return Course(**data)

Convert a dict coming from autograder API JSON.