diff --git a/utils/generate_api.py b/utils/generate_api.py index 31ee5c76..d37bbf12 100644 --- a/utils/generate_api.py +++ b/utils/generate_api.py @@ -128,7 +128,8 @@ class API: self.description = definition["documentation"].get("description", "") self.doc_url = definition["documentation"].get("url", "") - def _all_parts(self): + @property + def all_parts(self): parts = {} for url in self._def["url"]["paths"]: parts.update(url.get("parts", {})) @@ -155,7 +156,7 @@ class API: @property def params(self): - parts = self._all_parts() + parts = self.all_parts return chain( ((p, parts[p]) for p in parts if parts[p]["required"]), self.body.items() if self.body["body"] else (), @@ -175,7 +176,7 @@ class API: return ( k for k in sorted(self._def.get("params", {}).keys()) - if k not in self._all_parts() + if k not in self.all_parts ) @property @@ -210,20 +211,9 @@ class API: return dynamic, parts - @property - def func_params(self): - parts = self._all_parts() - return chain( - (p for p in parts if parts[p]["required"]), - (b for b in self.body if self.body[b].get("required")), - (f"{b}=None" for b in self.body if not self.body[b].get("required", True)), - (f"{p}=None" for p in parts if not parts[p]["required"]), - ("params=None",), - ) - @property def required_parts(self): - parts = self._all_parts() + parts = self.all_parts return [p for p in parts if parts[p]["required"]] + [ b for b in self.body if self.body[b].get("required") ] diff --git a/utils/templates/base b/utils/templates/base index 7d5ba694..f4e79eec 100644 --- a/utils/templates/base +++ b/utils/templates/base @@ -1,6 +1,6 @@ @query_params({{ api.query_params|map("tojson")|join(", ")}}) - def {{ api.name }}(self, {{ api.func_params|join(", ") }}): + def {{ api.name }}(self, {% include "func_params" %}): """ {% if api.description %} {{ api.description|replace("\n", " ")|wordwrap(wrapstring="\n ") }} diff --git a/utils/templates/func_params b/utils/templates/func_params new file mode 100644 index 00000000..de595fda --- /dev/null +++ b/utils/templates/func_params @@ -0,0 +1,13 @@ +{% for p, info in api.all_parts.items() %} + {% if info.required %}{{ p }}, {% endif %} +{% endfor %} + +{% if api.body.body %} + body{% if not api.body.body.required %}=None{% endif %}, +{% endif %} + +{% for p, info in api.all_parts.items() %} + {% if not info.required %}{{ p }}=None, {% endif %} +{% endfor %} + +params=None