Skip to content

Commit 1985cdc

Browse files
committed
Fixed function signatures to uniformly use Optional[] as type hint where appropriate
1 parent 2acec4e commit 1985cdc

File tree

5 files changed

+65
-59
lines changed

5 files changed

+65
-59
lines changed

cs3client/app.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
"""
88

99
import logging
10+
from typing import Optional
11+
1012
import cs3.app.registry.v1beta1.registry_api_pb2 as cs3arreg
1113
import cs3.app.registry.v1beta1.resources_pb2 as cs3arres
1214
import cs3.gateway.v1beta1.gateway_api_pb2 as cs3gw
@@ -44,7 +46,7 @@ def __init__(
4446
self._config: Config = config
4547

4648
def open_in_app(
47-
self, auth_token: tuple, resource: Resource, view_mode: str = None, app: str = None
49+
self, auth_token: tuple, resource: Resource, view_mode: Optional[str] = None, app: Optional[str] = None
4850
) -> cs3apr.OpenInAppURL:
4951
"""
5052
Open a file in an app, given the resource, view mode (VIEW_MODE_VIEW_ONLY, VIEW_MODE_READ_ONLY,

cs3client/checkpoint.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
Last updated: 30/08/2024
77
"""
88

9-
from typing import Generator
9+
from typing import Generator, Optional
1010
import logging
11+
1112
import cs3.storage.provider.v1beta1.resources_pb2 as cs3spr
1213
import cs3.storage.provider.v1beta1.provider_api_pb2 as cs3spp
1314
from cs3.gateway.v1beta1.gateway_api_pb2_grpc import GatewayAPIStub
@@ -65,7 +66,7 @@ def list_file_versions(
6566
return res.versions
6667

6768
def restore_file_version(
68-
self, auth_token: tuple, resource: Resource, version_key: str, lock_id: str = None
69+
self, auth_token: tuple, resource: Resource, version_key: str, lock_id: Optional[str] = None
6970
) -> None:
7071
"""
7172
Restore a file to a previous version.

cs3client/file.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@
1010
import logging
1111
import http
1212
import requests
13-
from typing import Union
14-
from typing import Generator
13+
from typing import Union, Optional, Generator
1514
import cs3.storage.provider.v1beta1.resources_pb2 as cs3spr
1615
import cs3.storage.provider.v1beta1.provider_api_pb2 as cs3sp
1716
from cs3.gateway.v1beta1.gateway_api_pb2_grpc import GatewayAPIStub
@@ -71,7 +70,7 @@ def stat(self, auth_token: tuple, resource: Resource) -> cs3spr.ResourceInfo:
7170
)
7271
return res.info
7372

74-
def set_xattr(self, auth_token: tuple, resource: Resource, key: str, value: str, lock_id: str = None) -> None:
73+
def set_xattr(self, auth_token: tuple, resource: Resource, key: str, value: str, lock_id: Optional[str] = None) -> None:
7574
"""
7675
Set the extended attribute <key> to <value> for a resource.
7776
@@ -94,7 +93,7 @@ def set_xattr(self, auth_token: tuple, resource: Resource, key: str, value: str,
9493
self._status_code_handler.handle_errors(res.status, "set extended attribute", resource.get_file_ref_str())
9594
self._log.debug(f'msg="Invoked setxattr" trace="{res.status.trace}"')
9695

97-
def remove_xattr(self, auth_token: tuple, resource: Resource, key: str, lock_id: str = None) -> None:
96+
def remove_xattr(self, auth_token: tuple, resource: Resource, key: str, lock_id: Optional[str] = None) -> None:
9897
"""
9998
Remove the extended attribute <key>.
10099
@@ -113,7 +112,7 @@ def remove_xattr(self, auth_token: tuple, resource: Resource, key: str, lock_id:
113112
self._log.debug(f'msg="Invoked UnsetArbitraryMetaData" trace="{res.status.trace}"')
114113

115114
def rename_file(
116-
self, auth_token: tuple, resource: Resource, newresource: Resource, lock_id: str = None
115+
self, auth_token: tuple, resource: Resource, newresource: Resource, lock_id: Optional[str] = None
117116
) -> None:
118117
"""
119118
Rename/move resource to new resource.
@@ -133,7 +132,7 @@ def rename_file(
133132
self._status_code_handler.handle_errors(res.status, "rename file", resource.get_file_ref_str())
134133
self._log.debug(f'msg="Invoked Move" trace="{res.status.trace}"')
135134

136-
def remove_file(self, auth_token: tuple, resource: Resource, lock_id: str = None) -> None:
135+
def remove_file(self, auth_token: tuple, resource: Resource, lock_id: Optional[str] = None) -> None:
137136
"""
138137
Remove a resource.
139138
@@ -171,7 +170,7 @@ def touch_file(self, auth_token: tuple, resource: Resource) -> None:
171170

172171
def write_file(
173172
self, auth_token: tuple, resource: Resource, content: Union[str, bytes], size: int,
174-
app_name: str = None, lock_id: str = None
173+
app_name: Optional[str] = None, lock_id: Optional[str] = None
175174
) -> None:
176175
"""
177176
Write a file using the given userid as access token. The entire content is written
@@ -270,7 +269,7 @@ def write_file(
270269
f'elapsedTimems="{(tend - tstart) * 1000:.1f}"'
271270
)
272271

273-
def read_file(self, auth_token: tuple, resource: Resource, lock_id: str = None) -> Generator[bytes, None, None]:
272+
def read_file(self, auth_token: tuple, resource: Resource, lock_id: Optional[str] = None) -> Generator[bytes, None, None]:
274273
"""
275274
Read a file. Note that the function is a generator, managed by the app server.
276275

cs3client/share.py

Lines changed: 43 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
"""
88

99
import logging
10+
from typing import Optional
11+
1012
import cs3.sharing.collaboration.v1beta1.collaboration_api_pb2 as cs3scapi
1113
from cs3.gateway.v1beta1.gateway_api_pb2_grpc import GatewayAPIStub
1214
import cs3.sharing.collaboration.v1beta1.resources_pb2 as cs3scr
@@ -87,7 +89,7 @@ def create_share(
8789
return res.share
8890

8991
def list_existing_shares(
90-
self, auth_token: tuple, filter_list: list[cs3scr.Filter] = None, page_size: int = 0, page_token: str = None
92+
self, auth_token: tuple, filter_list: list[cs3scr.Filter] = None, page_size: int = 0, page_token: Optional[str] = None
9193
) -> list[cs3scr.Share]:
9294
"""
9395
List shares based on a filter.
@@ -109,7 +111,7 @@ def list_existing_shares(
109111
)
110112
return (res.share_infos, res.next_page_token)
111113

112-
def get_share(self, auth_token: tuple, opaque_id: str = None, share_key: cs3scr.ShareKey = None) -> cs3scr.Share:
114+
def get_share(self, auth_token: tuple, opaque_id: Optional[str] = None, share_key: Optional[cs3scr.ShareKey] = None) -> cs3scr.Share:
113115
"""
114116
Get a share by its opaque id or share key (combination of resource_id, grantee and owner),
115117
one of them is required.
@@ -141,7 +143,7 @@ def get_share(self, auth_token: tuple, opaque_id: str = None, share_key: cs3scr.
141143
)
142144
return res.share
143145

144-
def remove_share(self, auth_token: tuple, opaque_id: str = None, share_key: cs3scr.ShareKey = None) -> None:
146+
def remove_share(self, auth_token: tuple, opaque_id: Optional[str] = None, share_key: Optional[cs3scr.ShareKey] = None) -> None:
145147
"""
146148
Remove a share by its opaque id or share key (combination of resource_id, grantee and owner),
147149
one of them is required.
@@ -175,9 +177,9 @@ def remove_share(self, auth_token: tuple, opaque_id: str = None, share_key: cs3s
175177
def update_share(
176178
self, auth_token: tuple,
177179
role: str,
178-
opaque_id: str = None,
179-
share_key: cs3scr.ShareKey = None,
180-
display_name: str = None
180+
opaque_id: Optional[str] = None,
181+
share_key: Optional[cs3scr.ShareKey] = None,
182+
display_name: Optional[str] = None
181183
) -> cs3scr.Share:
182184
"""
183185
Update a share by its opaque id.
@@ -216,7 +218,7 @@ def update_share(
216218
return res.share
217219

218220
def list_received_existing_shares(
219-
self, auth_token: tuple, filter_list: list = None, page_size: int = 0, page_token: str = None
221+
self, auth_token: tuple, filter_list: Optional[list] = None, page_size: int = 0, page_token: Optional[str] = None
220222
) -> list:
221223
"""
222224
List received existing shares.
@@ -240,7 +242,7 @@ def list_received_existing_shares(
240242
return (res.share_infos, res.next_page_token)
241243

242244
def get_received_share(
243-
self, auth_token: tuple, opaque_id: str = None, share_key: cs3scr.ShareKey = None
245+
self, auth_token: tuple, opaque_id: Optional[str] = None, share_key: Optional[cs3scr.ShareKey] = None
244246
) -> cs3scr.ReceivedShare:
245247
"""
246248
Get a received share by its opaque id or share key (combination of resource_id, grantee and owner),
@@ -313,12 +315,12 @@ def create_public_share(
313315
auth_token: tuple,
314316
resource_info: cs3spr.ResourceInfo,
315317
role: str,
316-
password: str = None,
317-
expiration: cs3types.Timestamp = None,
318-
description: str = None,
318+
password: Optional[str] = None,
319+
expiration: Optional[cs3types.Timestamp] = None,
320+
description: Optional[str] = None,
319321
internal: bool = False,
320322
notify_uploads: bool = False,
321-
notify_uploads_extra_recipients: list = None,
323+
notify_uploads_extra_recipients: Optional[list] = None,
322324
) -> cs3slr.PublicShare:
323325
"""
324326
Create a public share.
@@ -358,7 +360,7 @@ def create_public_share(
358360
return res.share
359361

360362
def list_existing_public_shares(
361-
self, auth_token: tuple, filter_list: list = None, page_size: int = 0, page_token: str = None, sign: bool = None
363+
self, auth_token: tuple, filter_list: Optional[list] = None, page_size: int = 0, page_token: Optional[str] = None, sign: bool = False
362364
) -> list:
363365
"""
364366
List existing public shares.
@@ -385,7 +387,7 @@ def list_existing_public_shares(
385387
return (res.share_infos, res.next_page_token)
386388

387389
def get_public_share(
388-
self, auth_token: tuple, opaque_id: str = None, token: str = None, sign: bool = False
390+
self, auth_token: tuple, opaque_id: Optional[str] = None, token: Optional[str] = None, sign: bool = False
389391
) -> cs3slr.PublicShare:
390392
"""
391393
Get a public share by its opaque id or token, one of them is required.
@@ -423,14 +425,14 @@ def update_public_share(
423425
auth_token: tuple,
424426
type: str,
425427
role: str,
426-
opaque_id: str = None,
427-
token: str = None,
428-
password: str = None,
429-
expiration: cs3types.Timestamp = None,
430-
notify_uploads_extra_recipients: str = None,
431-
description: str = None,
432-
display_name: str = None,
433-
notify_uploads: bool = None,
428+
opaque_id: Optional[str] = None,
429+
token: Optional[str] = None,
430+
password: Optional[str] = None,
431+
expiration: Optional[cs3types.Timestamp] = None,
432+
notify_uploads_extra_recipients: Optional[str] = None,
433+
description: Optional[str] = None,
434+
display_name: Optional[str] = None,
435+
notify_uploads: bool = False,
434436
) -> None:
435437
"""
436438
Update a public share by its opaque id or token. (one of them is required), role and type are required,
@@ -486,7 +488,7 @@ def update_public_share(
486488
)
487489
return res.share
488490

489-
def remove_public_share(self, auth_token: tuple, token: str = None, opaque_id: str = None) -> None:
491+
def remove_public_share(self, auth_token: tuple, token: Optional[str] = None, opaque_id: Optional[str] = None) -> None:
490492
"""
491493
Remove a public share by its token or opaque id, one of them is required.
492494
@@ -520,12 +522,12 @@ def _create_public_share_update(
520522
cls,
521523
type: str,
522524
role: str,
523-
password: str = None,
524-
expiration: cs3types.Timestamp = None,
525-
display_name: str = None,
526-
description: str = None,
527-
notify_uploads: bool = None,
528-
notify_uploads_extra_recipients: str = None,
525+
password: Optional[str] = None,
526+
expiration: Optional[cs3types.Timestamp] = None,
527+
display_name: Optional[str] = None,
528+
description: Optional[str] = None,
529+
notify_uploads: bool = False,
530+
notify_uploads_extra_recipients: Optional[str] = None,
529531
) -> cs3slr.PublicShare:
530532
"""
531533
Create a public share update object, based on the type the property will be updated,
@@ -567,7 +569,7 @@ def _create_public_share_update(
567569

568570
@classmethod
569571
def _create_share_grant(
570-
cls, opaque_id: str, idp: str, role: str, grantee_type: str, expiration: cs3types.Timestamp = None
572+
cls, opaque_id: str, idp: str, role: str, grantee_type: str, expiration: Optional[cs3types.Timestamp] = None
571573
) -> cs3scr.ShareGrant:
572574
"""
573575
Create a share grant object.
@@ -643,10 +645,10 @@ def create_public_share_filter(
643645
cls,
644646
filter_type: str,
645647
resource_id: cs3spr.ResourceId = None,
646-
owner_idp: str = None,
647-
owner_opaque_id: str = None,
648-
creator_idp: str = None,
649-
creator_opaque_id: str = None,
648+
owner_idp: Optional[str] = None,
649+
owner_opaque_id: Optional[str] = None,
650+
creator_idp: Optional[str] = None,
651+
creator_opaque_id: Optional[str] = None,
650652
) -> cs3slapi.ListPublicSharesRequest.Filter:
651653
"""
652654
Create a public share filter object, based on the filter type (can be TYPE_RESOURCE_ID, TYPE_OWNER,
@@ -688,13 +690,13 @@ def create_share_filter(
688690
cls,
689691
filter_type: str,
690692
resource_id: cs3spr.ResourceId = None,
691-
owner_idp: str = None,
692-
owner_opaque_id: str = None,
693-
creator_idp: str = None,
694-
creator_opaque_id: str = None,
695-
grantee_type: str = None,
696-
space_id: str = None,
697-
share_state: str = None,
693+
owner_idp: Optional[str] = None,
694+
owner_opaque_id: Optional[str] = None,
695+
creator_idp: Optional[str] = None,
696+
creator_opaque_id: Optional[str] = None,
697+
grantee_type: Optional[str] = None,
698+
space_id: Optional[str] = None,
699+
share_state: Optional[str] = None,
698700
) -> cs3scr.Filter:
699701
"""
700702
Create a share filter object, based on the filter type (can be TYPE_RESOURCE_ID, TYPE_OWNER, TYPE_CREATOR,

cs3client/statuscodehandler.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
"""
88

99
import logging
10+
from typing import Optional
11+
1012
import cs3.rpc.v1beta1.code_pb2 as cs3code
1113
import cs3.rpc.v1beta1.status_pb2 as cs3status
1214

@@ -20,53 +22,53 @@ def __init__(self, log: logging.Logger, config: Config) -> None:
2022
self._log = log
2123
self._config = config
2224

23-
def _log_not_found_info(self, status: cs3status.Status, operation: str, status_msg: str, msg: str = None) -> None:
25+
def _log_not_found_info(self, status: cs3status.Status, operation: str, status_msg: str, msg: Optional[str] = None) -> None:
2426
self._log.info(
2527
f'msg="Not found on {operation}" {msg + " " if msg else ""} '
2628
f'userid="{self._config.auth_client_id if self._config.auth_client_id else "no_id_set"}" '
2729
f'trace="{status.trace}" reason="{status_msg}"'
2830
)
2931

3032
def _log_authentication_error(
31-
self, status: cs3status.Status, operation: str, status_msg: str, msg: str = None
33+
self, status: cs3status.Status, operation: str, status_msg: str, msg: Optional[str] = None
3234
) -> None:
3335
self._log.error(
3436
f'msg="Authentication failed on {operation}" {msg + " " if msg else ""}'
3537
f'userid="{self._config.auth_client_id if self._config.auth_client_id else "no_id_set"}" '
3638
f'trace="{status.trace}" reason="{status_msg}"'
3739
)
3840

39-
def _log_unknown_error(self, status: cs3status.Status, operation: str, status_msg: str, msg: str = None) -> None:
41+
def _log_unknown_error(self, status: cs3status.Status, operation: str, status_msg: str, msg: Optional[str] = None) -> None:
4042
self._log.error(
4143
f'msg="Failed to {operation}, unknown error" {msg + " " if msg else ""}'
4244
f'userid="{self._config.auth_client_id if self._config.auth_client_id else "no_id_set"}" '
4345
f'trace="{status.trace}" reason="{status_msg}"'
4446
)
4547

4648
def _log_precondition_info(
47-
self, status: cs3status.Status, operation: str, status_msg: str, msg: str = None
49+
self, status: cs3status.Status, operation: str, status_msg: str, msg: Optional[str] = None
4850
) -> None:
4951
self._log.info(
5052
f'msg="Failed precondition on {operation}" {msg + " " if msg else ""}'
5153
f'userid="{self._config.auth_client_id if self._config.auth_client_id else "no_id_set"}" '
5254
f'trace="{status.trace}" reason="{status_msg}"'
5355
)
5456

55-
def _log_already_exists(self, status: cs3status.Status, operation: str, status_msg: str, msg: str = None) -> None:
57+
def _log_already_exists(self, status: cs3status.Status, operation: str, status_msg: str, msg: Optional[str] = None) -> None:
5658
self._log.info(
5759
f'msg="Already exists on {operation}" {msg + " " if msg else ""}'
5860
f'userid="{self._config.auth_client_id if self._config.auth_client_id else "no_id_set"}" '
5961
f'trace="{status.trace}" reason="{status_msg}"'
6062
)
6163

62-
def _log_unimplemented(self, status: cs3status.Status, operation: str, status_msg: str, msg: str = None) -> None:
64+
def _log_unimplemented(self, status: cs3status.Status, operation: str, status_msg: str, msg: Optional[str] = None) -> None:
6365
self._log.info(
6466
f'msg="Invoked {operation} on unimplemented feature" {msg + " " if msg else ""}'
6567
f'userid="{self._config.auth_client_id if self._config.auth_client_id else "no_id_set"}" '
6668
f'trace="{status.trace}" reason="{status_msg}"'
6769
)
6870

69-
def handle_errors(self, status: cs3status.Status, operation: str, msg: str = None) -> None:
71+
def handle_errors(self, status: cs3status.Status, operation: str, msg: Optional[str] = None) -> None:
7072

7173
if status.code == cs3code.CODE_OK:
7274
return

0 commit comments

Comments
 (0)