1
1
"""Classes for describing plugins"""
2
- from typing import Optional , Sequence
2
+ from typing import Optional , List
3
3
4
4
from cmem_plugin_base .dataintegration .plugins import WorkflowPlugin , TransformPlugin
5
5
@@ -11,11 +11,18 @@ class PluginParameter:
11
11
:param label: A human-readable label of the parameter
12
12
:param description: A human-readable description of the parameter
13
13
:param default_value: The parameter default value (optional)
14
- :param advanced: True, if this is an advanced parameter that should only be changed by experienced users
14
+ :param advanced: True, if this is an advanced parameter that should only be
15
+ changed by experienced users
15
16
"""
16
17
17
- def __init__ (self , name : str , label : str = "" , description : str = "" ,
18
- default_value : Optional [str ] = None , advanced : bool = False ) -> None :
18
+ def __init__ (
19
+ self ,
20
+ name : str ,
21
+ label : str = "" ,
22
+ description : str = "" ,
23
+ default_value : Optional [str ] = None ,
24
+ advanced : bool = False ,
25
+ ) -> None :
19
26
self .name = name
20
27
self .label = label
21
28
self .description = description
@@ -34,44 +41,75 @@ class PluginDescription:
34
41
:param parameters: Available plugin parameters
35
42
"""
36
43
37
- def __init__ (self , plugin_class , label : str , description : str = "" , documentation : str = "" ,
38
- categories : Sequence [str ] = [], parameters : Sequence [PluginParameter ] = []) -> None :
39
- # Set the type of the plugin. Same as the class name of the plugin base class, e.g., 'WorkflowPlugin'.
44
+ def __init__ (
45
+ self ,
46
+ plugin_class ,
47
+ label : str ,
48
+ description : str = "" ,
49
+ documentation : str = "" ,
50
+ categories : List [str ] = None ,
51
+ parameters : List [PluginParameter ] = None ,
52
+ ) -> None :
53
+ # Set the type of the plugin. Same as the class name of the plugin
54
+ # base class, e.g., 'WorkflowPlugin'.
40
55
if issubclass (plugin_class , WorkflowPlugin ):
41
56
self .plugin_type = "WorkflowPlugin"
42
57
elif issubclass (plugin_class , TransformPlugin ):
43
58
self .plugin_type = "TransformPlugin"
44
59
else :
45
- raise ValueError (f"Class { plugin_class .__name__ } does not implement a supported plugin base class"
46
- f" (e.g., WorkflowPlugin)." )
60
+ raise ValueError (
61
+ f"Class { plugin_class .__name__ } does not implement a supported"
62
+ f"plugin base class (e.g., WorkflowPlugin)."
63
+ )
47
64
48
65
self .plugin_class = plugin_class
49
66
self .module_name = plugin_class .__module__
50
67
self .class_name = plugin_class .__name__
51
- self .categories = categories
68
+ if categories is None :
69
+ self .categories = []
70
+ else :
71
+ self .categories = categories
52
72
self .label = label
53
73
self .description = description
54
74
self .documentation = documentation
55
- self .parameters = parameters
75
+ if parameters is None :
76
+ self .parameters = []
77
+ else :
78
+ self .parameters = parameters
56
79
57
80
58
81
class Plugin :
82
+ """Annotate classes with plugin descriptions."""
59
83
plugins : list [PluginDescription ] = []
60
84
61
- def __init__ (self , label : str , description : str = "" , documentation : str = "" ,
62
- categories : Sequence [str ] = [], parameters : Sequence [PluginParameter ] = []):
85
+ def __init__ (
86
+ self ,
87
+ label : str ,
88
+ description : str = "" ,
89
+ documentation : str = "" ,
90
+ categories : List [str ] = None ,
91
+ parameters : List [PluginParameter ] = None ,
92
+ ):
63
93
self .label = label
64
94
self .description = description
65
95
self .documentation = documentation
66
- self .categories = categories
67
- self .parameters = parameters
96
+ if categories is None :
97
+ self .categories = []
98
+ else :
99
+ self .categories = categories
100
+ if parameters is None :
101
+ self .parameters = []
102
+ else :
103
+ self .parameters = parameters
68
104
69
105
def __call__ (self , func ):
70
- plugin_desc = PluginDescription (plugin_class = func ,
71
- label = self .label ,
72
- description = self .description ,
73
- documentation = self .documentation ,
74
- categories = self .categories ,
75
- parameters = self .parameters )
106
+ plugin_desc = PluginDescription (
107
+ plugin_class = func ,
108
+ label = self .label ,
109
+ description = self .description ,
110
+ documentation = self .documentation ,
111
+ categories = self .categories ,
112
+ parameters = self .parameters ,
113
+ )
76
114
Plugin .plugins .append (plugin_desc )
77
115
return func
0 commit comments