|
15 | 15 |
|
16 | 16 | #=============================================================================== |
17 | 17 |
|
18 | | -_PDB_TYPES_MAP = { |
19 | | - gimpenums.PDB_INT32: int, |
20 | | - gimpenums.PDB_INT16: int, |
21 | | - gimpenums.PDB_INT8: int, |
22 | | - gimpenums.PDB_FLOAT: float, |
23 | | - gimpenums.PDB_STRING: bytes, |
24 | | - gimpenums.PDB_COLOR: gimpcolor.RGB, |
25 | | - |
26 | | - gimpenums.PDB_INT32ARRAY: tuple, |
27 | | - gimpenums.PDB_INT16ARRAY: tuple, |
28 | | - gimpenums.PDB_INT8ARRAY: tuple, |
29 | | - gimpenums.PDB_FLOATARRAY: tuple, |
30 | | - gimpenums.PDB_STRINGARRAY: tuple, |
31 | | - gimpenums.PDB_COLORARRAY: tuple, |
32 | | - |
33 | | - gimpenums.PDB_IMAGE: gimp.Image, |
34 | | - gimpenums.PDB_ITEM: gimp.Item, |
35 | | - gimpenums.PDB_DRAWABLE: gimp.Drawable, |
36 | | - gimpenums.PDB_LAYER: gimp.Layer, |
37 | | - gimpenums.PDB_CHANNEL: gimp.Channel, |
38 | | - gimpenums.PDB_SELECTION: gimp.Channel, |
39 | | - gimpenums.PDB_VECTORS: gimp.Vectors, |
40 | | - |
41 | | - gimpenums.PDB_PARASITE: gimp.Parasite, |
42 | | - gimpenums.PDB_DISPLAY: gimp.Display, |
43 | | -} |
| 18 | + |
| 19 | +class PdbType(object): |
| 20 | + |
| 21 | + def __init__(self, type_id, type_, base_type=None): |
| 22 | + self._type_id = type_id |
| 23 | + self._type_ = type_ |
| 24 | + self._base_type = base_type |
| 25 | + |
| 26 | + @property |
| 27 | + def type_id(self): |
| 28 | + return self._type_id |
| 29 | + |
| 30 | + @property |
| 31 | + def type_(self): |
| 32 | + return self._type_ |
| 33 | + |
| 34 | + @property |
| 35 | + def base_type(self): |
| 36 | + return self._base_type |
| 37 | + |
| 38 | + def get_name(self, include_base_type=False): |
| 39 | + if include_base_type and self._base_type is not None: |
| 40 | + return "{0}({1})".format(get_type_name(self._type_), get_type_name(self._base_type)) |
| 41 | + else: |
| 42 | + return get_type_name(self._type_) |
| 43 | + |
| 44 | + @classmethod |
| 45 | + def get_by_id(cls, pdb_type_id): |
| 46 | + return _PDB_TYPES_MAP[pdb_type_id] |
| 47 | + |
| 48 | + |
| 49 | +def get_type_name(type_): |
| 50 | + type_module = inspect.getmodule(type_) |
| 51 | + |
| 52 | + if type_module and hasattr(type_module, "__name__") and type_module.__name__ != "__builtin__": |
| 53 | + return ".".join([type_module.__name__, type_.__name__]) |
| 54 | + else: |
| 55 | + return type_.__name__ |
| 56 | + |
| 57 | + |
| 58 | +_PDB_TYPE_ITEMS = [ |
| 59 | + (gimpenums.PDB_INT32, int), |
| 60 | + (gimpenums.PDB_INT16, int), |
| 61 | + (gimpenums.PDB_INT8, int), |
| 62 | + (gimpenums.PDB_FLOAT, float), |
| 63 | + (gimpenums.PDB_STRING, bytes), |
| 64 | + (gimpenums.PDB_COLOR, gimpcolor.RGB), |
| 65 | + |
| 66 | + (gimpenums.PDB_INT32ARRAY, tuple, int), |
| 67 | + (gimpenums.PDB_INT16ARRAY, tuple, int), |
| 68 | + (gimpenums.PDB_INT8ARRAY, tuple, int), |
| 69 | + (gimpenums.PDB_FLOATARRAY, tuple, float), |
| 70 | + (gimpenums.PDB_STRINGARRAY, tuple, bytes), |
| 71 | + (gimpenums.PDB_COLORARRAY, tuple, gimpcolor.RGB), |
| 72 | + |
| 73 | + (gimpenums.PDB_IMAGE, gimp.Image), |
| 74 | + (gimpenums.PDB_ITEM, gimp.Item), |
| 75 | + (gimpenums.PDB_DRAWABLE, gimp.Drawable), |
| 76 | + (gimpenums.PDB_LAYER, gimp.Layer), |
| 77 | + (gimpenums.PDB_CHANNEL, gimp.Channel), |
| 78 | + (gimpenums.PDB_SELECTION, gimp.Channel), |
| 79 | + (gimpenums.PDB_VECTORS, gimp.Vectors), |
| 80 | + |
| 81 | + (gimpenums.PDB_PARASITE, gimp.Parasite), |
| 82 | + (gimpenums.PDB_DISPLAY, gimp.Display), |
| 83 | +] |
| 84 | + |
| 85 | +_PDB_TYPES_MAP = {type_item[0]: PdbType(*type_item) for type_item in _PDB_TYPE_ITEMS} |
44 | 86 |
|
45 | 87 | #=============================================================================== |
46 | 88 |
|
@@ -98,39 +140,47 @@ def _get_ast_arguments_for_pdb_function(pdb_function): |
98 | 140 |
|
99 | 141 |
|
100 | 142 | def _get_ast_docstring_for_pdb_function(pdb_function): |
101 | | - docstring = "\n" + pdb_function.proc_blurb |
| 143 | + docstring = "\n" |
| 144 | + docstring += pdb_function.proc_blurb |
| 145 | + docstring += "\n\n" |
102 | 146 |
|
103 | 147 | if pdb_function.proc_help and pdb_function.proc_help != pdb_function.proc_blurb: |
104 | | - docstring += "\n\n" + pdb_function.proc_help |
105 | | - |
106 | | - docstring += _get_pdb_docstring_type_info(pdb_function) |
| 148 | + docstring += pdb_function.proc_help + "\n" |
107 | 149 |
|
108 | 150 | docstring += "\n" |
| 151 | + docstring += _get_pdb_docstring_param_info(pdb_function) |
109 | 152 |
|
110 | 153 | return ast.Expr(value=ast.Str(s=docstring)) |
111 | 154 |
|
112 | 155 |
|
113 | | -def _get_pdb_docstring_type_info(pdb_function): |
114 | | - docstring_type_info = "" |
| 156 | +def _get_pdb_docstring_param_info(pdb_function): |
| 157 | + docstring_param_info = "" |
115 | 158 | pdb_params = _get_pdb_params(pdb_function)[0] |
116 | 159 |
|
117 | 160 | if pdb_params: |
118 | | - docstring_type_info += "\n" |
| 161 | + docstring_param_info += "Parameters:\n" |
119 | 162 |
|
120 | 163 | for pdb_param_info in pdb_params: |
121 | | - docstring_type_info += "\n@type {0}: {1}".format( |
122 | | - _get_pdb_param_name(pdb_param_info), _get_pdb_type_name_by_id(pdb_param_info[0])) |
| 164 | + docstring_param_info += _get_pdb_param_docstring(pdb_param_info) + "\n" |
123 | 165 |
|
124 | | - return docstring_type_info |
| 166 | + return docstring_param_info |
| 167 | + |
| 168 | + |
| 169 | +def _get_pdb_param_docstring(pdb_param_info): |
| 170 | + return "{0} ({1}): {2}".format( |
| 171 | + _get_pdb_param_name(pdb_param_info), |
| 172 | + PdbType.get_by_id(pdb_param_info[0]).get_name(include_base_type=True), |
| 173 | + _get_pdb_param_description(pdb_param_info)) |
125 | 174 |
|
126 | 175 |
|
127 | 176 | def _get_ast_return_value_types_for_pdb_function(pdb_function): |
128 | 177 | if len(pdb_function.return_vals) > 1: |
129 | 178 | node_return_value_types = ast.Tuple( |
130 | | - elts=[ast.Name(id=_get_pdb_type_name_by_id(return_vals_info[0])) |
| 179 | + elts=[ast.Name(id=PdbType.get_by_id(return_vals_info[0]).get_name()) |
131 | 180 | for return_vals_info in pdb_function.return_vals]) |
132 | 181 | elif len(pdb_function.return_vals) == 1: |
133 | | - node_return_value_types = ast.Name(id=_get_pdb_type_name_by_id(pdb_function.return_vals[0][0])) |
| 182 | + node_return_value_types = ast.Name( |
| 183 | + id=PdbType.get_by_id(pdb_function.return_vals[0][0]).get_name()) |
134 | 184 | else: |
135 | 185 | node_return_value_types = ast.Name(id="None") |
136 | 186 |
|
@@ -167,17 +217,9 @@ def _get_pdb_params(pdb_function): |
167 | 217 | return pdb_params, has_run_mode_param |
168 | 218 |
|
169 | 219 |
|
170 | | -def _get_pdb_type_name_by_id(pdb_type_id): |
171 | | - pdb_type = _PDB_TYPES_MAP[pdb_type_id] |
172 | | - |
173 | | - pdb_type_module = inspect.getmodule(pdb_type) |
174 | | - |
175 | | - if (pdb_type_module and hasattr(pdb_type_module, "__name__") |
176 | | - and pdb_type_module.__name__ != "__builtin__"): |
177 | | - return ".".join([pdb_type_module.__name__, pdb_type.__name__]) |
178 | | - else: |
179 | | - return pdb_type.__name__ |
180 | | - |
181 | | - |
182 | 220 | def _get_pdb_param_name(pdb_param_info): |
183 | 221 | return pdb_param_info[1].replace("-", "_") |
| 222 | + |
| 223 | + |
| 224 | +def _get_pdb_param_description(pdb_param_info): |
| 225 | + return pdb_param_info[2] if pdb_param_info[2] is not None else "" |
0 commit comments