Updated copyright for 2024.
10410
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1
|
# -*- coding: utf-8 -*- |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2
|
|
10439
|
3
|
# Copyright (c) 2023 - 2024 Detlev Offenbach <detlev@die-offenbachs.de> |
10410
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4
|
# |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7
|
Module defining a class containing the individual project metadata. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10
|
from dataclasses import asdict, dataclass |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13
|
@dataclass |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14
|
class MultiProjectProjectMeta: |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16
|
Class containing the individual project metadata. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19
|
name: str # name of the project |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20
|
file: str # project file name |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21
|
uid: str # unique identifier |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22
|
master: bool = False # flag indicating the main project |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23
|
description: str = "" # description of the project |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24
|
category: str = "" # name of the group |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25
|
removed: bool = False # flag indicating a (re-)moved project |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27
|
def as_dict(self): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29
|
Public method to convert the metadata into a dictionary. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31
|
@return dictionary containing the metadata |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32
|
@rtype dict |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34
|
return asdict(self) |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36
|
@classmethod |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37
|
def from_dict(cls, data): |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39
|
Class method to create a metadata object from the given dictionary. |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40
|
|
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41
|
@param data dictionary containing the metadata |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42
|
@type dict |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43
|
@return created project metadata object |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44
|
@rtype MultiProjectProjectMeta |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45
|
""" |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46
|
return cls( |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47
|
name=data["name"], |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48
|
file=data["file"], |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49
|
uid=data["uid"], |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50
|
master=data.get("master", False), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51
|
description=data.get("description", ""), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52
|
category=data.get("category", ""), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53
|
removed=data.get("removed", False), |
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54
|
) |