From 646d88ab0dbe0d11a6cd16c494f588ae773f4552 Mon Sep 17 00:00:00 2001 From: Christy Jacob Date: Mon, 10 Mar 2025 18:04:33 +0530 Subject: [PATCH] fix: add typing module for python 3.13 --- .github/workflows/tests.yml | 1 + src/SDK/Language/Python.php | 4 +-- .../python/package/services/service.py.twig | 1 + tests/Python313Test.php | 34 +++++++++++++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 tests/Python313Test.php diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 895be9eb7..0210b890d 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -40,6 +40,7 @@ jobs: Python310, Python311, Python312, + Python313, Ruby27, Ruby30, Ruby31, diff --git a/src/SDK/Language/Python.php b/src/SDK/Language/Python.php index a16accee4..555fdc787 100644 --- a/src/SDK/Language/Python.php +++ b/src/SDK/Language/Python.php @@ -243,9 +243,9 @@ public function getTypeName(array $parameter, array $spec = []): string return 'str'; case self::TYPE_ARRAY: if (!empty(($parameter['array'] ?? [])['type']) && !\is_array($parameter['array']['type'])) { - return 'list[' . $this->getTypeName($parameter['array']) . ']'; + return 'List[' . $this->getTypeName($parameter['array']) . ']'; } - return 'list[str]'; + return 'List[str]'; case self::TYPE_OBJECT: return 'dict'; default: diff --git a/templates/python/package/services/service.py.twig b/templates/python/package/services/service.py.twig index 37a42f76a..1443d183b 100644 --- a/templates/python/package/services/service.py.twig +++ b/templates/python/package/services/service.py.twig @@ -1,4 +1,5 @@ from ..service import Service +from typing import List from ..exception import AppwriteException {% set added = [] %} {% for method in service.methods %} diff --git a/tests/Python313Test.php b/tests/Python313Test.php new file mode 100644 index 000000000..293fad180 --- /dev/null +++ b/tests/Python313Test.php @@ -0,0 +1,34 @@ + tests/sdks/python/__init__.py', + 'docker run --rm -v $(pwd):/app -w /app --env PIP_TARGET=tests/sdks/python/vendor python:3.13-alpine pip install -r tests/sdks/python/requirements.txt --upgrade', + ]; + protected string $command = + 'docker run --network="mockapi" --rm -v $(pwd):/app -w /app --env PIP_TARGET=tests/sdks/python/vendor --env PYTHONPATH=tests/sdks/python/vendor python:3.13-alpine python tests/sdks/python/test.py'; + + protected array $expectedOutput = [ + ...Base::FOO_RESPONSES, + ...Base::BAR_RESPONSES, + ...Base::GENERAL_RESPONSES, + ...Base::UPLOAD_RESPONSES, + ...Base::ENUM_RESPONSES, + ...Base::EXCEPTION_RESPONSES, + ...Base::OAUTH_RESPONSES, + ...Base::QUERY_HELPER_RESPONSES, + ...Base::PERMISSION_HELPER_RESPONSES, + ...Base::ID_HELPER_RESPONSES + ]; +}