Skip to content

Commit 08f8394

Browse files
authored
Merge pull request #1244 from appwrite/chore-wrap-optional-python
fix: wrap non required values with Optional[] in python
2 parents 1685a96 + e2fd487 commit 08f8394

File tree

3 files changed

+40
-26
lines changed

3 files changed

+40
-26
lines changed

src/SDK/Language/Python.php

Lines changed: 39 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -235,32 +235,48 @@ public function getFiles(): array
235235
*/
236236
public function getTypeName(array $parameter, array $spec = []): string
237237
{
238+
$typeName = '';
239+
238240
if (isset($parameter['enumName'])) {
239-
return \ucfirst($parameter['enumName']);
240-
}
241-
if (!empty($parameter['enumValues'])) {
242-
return \ucfirst($parameter['name']);
241+
$typeName = \ucfirst($parameter['enumName']);
242+
} elseif (!empty($parameter['enumValues'])) {
243+
$typeName = \ucfirst($parameter['name']);
244+
} else {
245+
switch ($parameter['type'] ?? '') {
246+
case self::TYPE_FILE:
247+
$typeName = 'InputFile';
248+
break;
249+
case self::TYPE_NUMBER:
250+
case self::TYPE_INTEGER:
251+
$typeName = 'float';
252+
break;
253+
case self::TYPE_BOOLEAN:
254+
$typeName = 'bool';
255+
break;
256+
case self::TYPE_STRING:
257+
$typeName = 'str';
258+
break;
259+
case self::TYPE_ARRAY:
260+
if (!empty(($parameter['array'] ?? [])['type']) && !\is_array($parameter['array']['type'])) {
261+
$typeName = 'List[' . $this->getTypeName($parameter['array']) . ']';
262+
} else {
263+
$typeName = 'List[Any]';
264+
}
265+
break;
266+
case self::TYPE_OBJECT:
267+
$typeName = 'dict';
268+
break;
269+
default:
270+
$typeName = $parameter['type'];
271+
break;
272+
}
243273
}
244-
switch ($parameter['type'] ?? '') {
245-
case self::TYPE_FILE:
246-
return 'InputFile';
247-
case self::TYPE_NUMBER:
248-
case self::TYPE_INTEGER:
249-
return 'float';
250-
case self::TYPE_BOOLEAN:
251-
return 'bool';
252-
case self::TYPE_STRING:
253-
return 'str';
254-
case self::TYPE_ARRAY:
255-
if (!empty(($parameter['array'] ?? [])['type']) && !\is_array($parameter['array']['type'])) {
256-
return 'List[' . $this->getTypeName($parameter['array']) . ']';
257-
}
258-
return 'List[Any]';
259-
case self::TYPE_OBJECT:
260-
return 'dict';
261-
default:
262-
return $parameter['type'];
274+
275+
if (!($parameter['required'] ?? true) || ($parameter['nullable'] ?? false)) {
276+
return 'Optional[' . $typeName . ']';
263277
}
278+
279+
return $typeName;
264280
}
265281

266282
/**

templates/python/package/client.py.twig

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,6 @@ class Client:
5757
if params is None:
5858
params = {}
5959

60-
params = {k: v for k, v in params.items() if v is not None} # Remove None values from params dictionary
61-
6260
data = {}
6361
files = {}
6462
stringify = False

templates/python/package/services/service.py.twig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from ..service import Service
2-
from typing import List, Dict, Any
2+
from typing import List, Dict, Any, Optional
33
from ..exception import AppwriteException
44
from appwrite.utils.deprecated import deprecated
55
{% set added = [] %}

0 commit comments

Comments
 (0)