From 8ad03fa91d191f26ff3f40601c9634ac01411bf5 Mon Sep 17 00:00:00 2001 From: ChiragAgg5k Date: Wed, 19 Mar 2025 08:34:27 +0530 Subject: [PATCH 1/7] chore: improve docstrings for python --- templates/python/package/services/service.py.twig | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/templates/python/package/services/service.py.twig b/templates/python/package/services/service.py.twig index 1443d183b..b3f73815a 100644 --- a/templates/python/package/services/service.py.twig +++ b/templates/python/package/services/service.py.twig @@ -29,7 +29,13 @@ class {{ service.name | caseUcfirst }}(Service): {% for method in service.methods %} def {{ method.name | caseSnake }}(self{% if method.parameters.all|length > 0 %}, {% endif %}{% for parameter in method.parameters.all %}{{ parameter.name | escapeKeyword | caseSnake }}: {{ parameter | getPropertyType(method) | raw }}{% if not parameter.required %} = None{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, on_progress = None{% endif %}): - """{{method.title}}""" + """ + {{ method.description }} + + {% for parameter in method.parameters.all %}@param {{ parameter.name | escapeKeyword | caseSnake }}: {{ parameter.description }} + {% endfor %}{% if 'multipart/form-data' in method.consumes %}@param on_progress: Optional callback for upload progress + {% endif %}@raises AppwriteException: If API request fails + """ api_path = '{{ method.path }}' {{ include('python/base/params.twig') }} From 4131c4bd377767575b4cc013302cd43d176f0430 Mon Sep 17 00:00:00 2001 From: ChiragAgg5k Date: Wed, 19 Mar 2025 14:04:48 +0530 Subject: [PATCH 2/7] chore: added numpy style docstring --- example.php | 2 +- .../python/package/services/service.py.twig | 24 +++++++++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/example.php b/example.php index 67106c4fb..5852efd94 100644 --- a/example.php +++ b/example.php @@ -42,7 +42,7 @@ function getSSLPage($url) { $platform = 'console'; // $platform = 'server'; - $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/1.6.x/app/config/specs/swagger2-latest-{$platform}.json"); + $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/pla-2684/app/config/specs/swagger2-latest-{$platform}.json"); if(empty($spec)) { throw new Exception('Failed to fetch spec from Appwrite server'); diff --git a/templates/python/package/services/service.py.twig b/templates/python/package/services/service.py.twig index b3f73815a..636d43eb5 100644 --- a/templates/python/package/services/service.py.twig +++ b/templates/python/package/services/service.py.twig @@ -30,11 +30,27 @@ class {{ service.name | caseUcfirst }}(Service): def {{ method.name | caseSnake }}(self{% if method.parameters.all|length > 0 %}, {% endif %}{% for parameter in method.parameters.all %}{{ parameter.name | escapeKeyword | caseSnake }}: {{ parameter | getPropertyType(method) | raw }}{% if not parameter.required %} = None{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, on_progress = None{% endif %}): """ - {{ method.description }} + {{ method.description | replace({"\n": "\n "}) }} +{% if method.parameters.all|length > 0 or 'multipart/form-data' in method.consumes %} - {% for parameter in method.parameters.all %}@param {{ parameter.name | escapeKeyword | caseSnake }}: {{ parameter.description }} - {% endfor %}{% if 'multipart/form-data' in method.consumes %}@param on_progress: Optional callback for upload progress - {% endif %}@raises AppwriteException: If API request fails + Parameters + ---------- + {% for parameter in method.parameters.all %}{{ parameter.name | escapeKeyword | caseSnake }} : {{ parameter | getPropertyType(method) | raw }} + {{ parameter.description | replace({"\n": "\n "}) }} + {% endfor %}{% if 'multipart/form-data' in method.consumes %} + on_progress : callable, optional + Optional callback for upload progress + {% endif %}{% endif %} + + Returns + ------- + dict + API response as a dictionary + + Raises + ------ + AppwriteException + If API request fails """ api_path = '{{ method.path }}' From 5df322dc2b0dd463e36b1a08800798fd53413c2c Mon Sep 17 00:00:00 2001 From: ChiragAgg5k Date: Wed, 19 Mar 2025 14:10:05 +0530 Subject: [PATCH 3/7] chore: added return type --- templates/python/package/services/service.py.twig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/python/package/services/service.py.twig b/templates/python/package/services/service.py.twig index 636d43eb5..fe7f2c07d 100644 --- a/templates/python/package/services/service.py.twig +++ b/templates/python/package/services/service.py.twig @@ -1,5 +1,5 @@ from ..service import Service -from typing import List +from typing import List, Dict, Any from ..exception import AppwriteException {% set added = [] %} {% for method in service.methods %} @@ -24,11 +24,11 @@ from ..enums.{{ name | caseSnake }} import {{ name | caseUcfirst }}; class {{ service.name | caseUcfirst }}(Service): - def __init__(self, client): + def __init__(self, client) -> None: super({{ service.name | caseUcfirst }}, self).__init__(client) {% for method in service.methods %} - def {{ method.name | caseSnake }}(self{% if method.parameters.all|length > 0 %}, {% endif %}{% for parameter in method.parameters.all %}{{ parameter.name | escapeKeyword | caseSnake }}: {{ parameter | getPropertyType(method) | raw }}{% if not parameter.required %} = None{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, on_progress = None{% endif %}): + def {{ method.name | caseSnake }}(self{% if method.parameters.all|length > 0 %}, {% endif %}{% for parameter in method.parameters.all %}{{ parameter.name | escapeKeyword | caseSnake }}: {{ parameter | getPropertyType(method) | raw }}{% if not parameter.required %} = None{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, on_progress = None{% endif %}) -> Dict[str, Any]: """ {{ method.description | replace({"\n": "\n "}) }} {% if method.parameters.all|length > 0 or 'multipart/form-data' in method.consumes %} From df3841538af66ca7c8211982a4cb7e1e8e578089 Mon Sep 17 00:00:00 2001 From: ChiragAgg5k Date: Wed, 19 Mar 2025 15:28:29 +0530 Subject: [PATCH 4/7] chore: fix auto escape --- templates/python/package/services/service.py.twig | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/python/package/services/service.py.twig b/templates/python/package/services/service.py.twig index fe7f2c07d..be2b47c3c 100644 --- a/templates/python/package/services/service.py.twig +++ b/templates/python/package/services/service.py.twig @@ -36,7 +36,8 @@ class {{ service.name | caseUcfirst }}(Service): Parameters ---------- {% for parameter in method.parameters.all %}{{ parameter.name | escapeKeyword | caseSnake }} : {{ parameter | getPropertyType(method) | raw }} - {{ parameter.description | replace({"\n": "\n "}) }} + {% autoescape false %}{{ parameter.description | replace({"\n": "\n "}) }}{% endautoescape %} + {% endfor %}{% if 'multipart/form-data' in method.consumes %} on_progress : callable, optional Optional callback for upload progress From 7781166f53269e8fa564f462ec173c8d23f0e3be Mon Sep 17 00:00:00 2001 From: ChiragAgg5k Date: Wed, 19 Mar 2025 18:53:41 +0530 Subject: [PATCH 5/7] revert to 1.6.x --- example.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/example.php b/example.php index 5852efd94..67106c4fb 100644 --- a/example.php +++ b/example.php @@ -42,7 +42,7 @@ function getSSLPage($url) { $platform = 'console'; // $platform = 'server'; - $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/pla-2684/app/config/specs/swagger2-latest-{$platform}.json"); + $spec = getSSLPage("https://raw.githubusercontent.com/appwrite/appwrite/1.6.x/app/config/specs/swagger2-latest-{$platform}.json"); if(empty($spec)) { throw new Exception('Failed to fetch spec from Appwrite server'); From f457b517db909755e823a1d7dac16fe89d6e32e5 Mon Sep 17 00:00:00 2001 From: ChiragAgg5k Date: Thu, 20 Mar 2025 22:31:31 +0530 Subject: [PATCH 6/7] chore: add autoescape to description --- templates/python/package/services/service.py.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/python/package/services/service.py.twig b/templates/python/package/services/service.py.twig index be2b47c3c..c3329dd59 100644 --- a/templates/python/package/services/service.py.twig +++ b/templates/python/package/services/service.py.twig @@ -30,7 +30,7 @@ class {{ service.name | caseUcfirst }}(Service): def {{ method.name | caseSnake }}(self{% if method.parameters.all|length > 0 %}, {% endif %}{% for parameter in method.parameters.all %}{{ parameter.name | escapeKeyword | caseSnake }}: {{ parameter | getPropertyType(method) | raw }}{% if not parameter.required %} = None{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, on_progress = None{% endif %}) -> Dict[str, Any]: """ - {{ method.description | replace({"\n": "\n "}) }} + {% autoescape false %}{{ method.description | replace({"\n": "\n "}) }}{% endautoescape %} {% if method.parameters.all|length > 0 or 'multipart/form-data' in method.consumes %} Parameters From 5aafbbe248a9ecb22b687acfe4eebc66bd054f7c Mon Sep 17 00:00:00 2001 From: ChiragAgg5k Date: Tue, 25 Mar 2025 18:35:51 +0530 Subject: [PATCH 7/7] chore: add check for webAuth --- templates/python/package/services/service.py.twig | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/templates/python/package/services/service.py.twig b/templates/python/package/services/service.py.twig index c3329dd59..463f68719 100644 --- a/templates/python/package/services/service.py.twig +++ b/templates/python/package/services/service.py.twig @@ -28,7 +28,7 @@ class {{ service.name | caseUcfirst }}(Service): super({{ service.name | caseUcfirst }}, self).__init__(client) {% for method in service.methods %} - def {{ method.name | caseSnake }}(self{% if method.parameters.all|length > 0 %}, {% endif %}{% for parameter in method.parameters.all %}{{ parameter.name | escapeKeyword | caseSnake }}: {{ parameter | getPropertyType(method) | raw }}{% if not parameter.required %} = None{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, on_progress = None{% endif %}) -> Dict[str, Any]: + def {{ method.name | caseSnake }}(self{% if method.parameters.all|length > 0 %}, {% endif %}{% for parameter in method.parameters.all %}{{ parameter.name | escapeKeyword | caseSnake }}: {{ parameter | getPropertyType(method) | raw }}{% if not parameter.required %} = None{% endif %}{% if not loop.last %}, {% endif %}{% endfor %}{% if 'multipart/form-data' in method.consumes %}, on_progress = None{% endif %}) -> {% if method.type == 'webAuth' %}str{% else %}Dict[str, Any]{% endif %}: """ {% autoescape false %}{{ method.description | replace({"\n": "\n "}) }}{% endautoescape %} {% if method.parameters.all|length > 0 or 'multipart/form-data' in method.consumes %} @@ -45,8 +45,11 @@ class {{ service.name | caseUcfirst }}(Service): Returns ------- - dict + {% if method.type == 'webAuth' %}str + Authentication response as a string + {% else %}Dict[str, Any] API response as a dictionary + {% endif %} Raises ------