src/eric7/MultiProject/MultiProjectProjectMeta.py

Fri, 15 Dec 2023 15:28:54 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 15 Dec 2023 15:28:54 +0100
branch
eric7
changeset 10410
da82156f44e9
child 10439
21c28b0f9e41
permissions
-rw-r--r--

Multiproject
- Added the capability to indicate externally removed projects and actions to clear them out (see issue 522).

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

eric ide

mercurial