Skip to content

Commit 725c415

Browse files
author
Lingling Peng
committed
add dataclass docstring; turn filter_by_state to be required; edit test
1 parent 39d0a5f commit 725c415

File tree

4 files changed

+18
-20
lines changed

4 files changed

+18
-20
lines changed

synapseclient/models/form.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
@dataclass
2222
@async_to_sync
2323
class FormGroup(FormGroupMixin, FormGroupProtocol):
24+
"""Dataclass representing a FormGroup."""
25+
2426
async def create_async(
2527
self,
2628
*,
@@ -68,9 +70,11 @@ async def create_my_form_group():
6870
@dataclass
6971
@async_to_sync
7072
class FormData(FormDataMixin, FormDataProtocol):
73+
"""Dataclass representing a FormData."""
74+
7175
def _validate_filter_by_state(
7276
self,
73-
filter_by_state: Optional[List["StateEnum"]] = None,
77+
filter_by_state: List["StateEnum"],
7478
allow_waiting_submission: bool = True,
7579
) -> None:
7680
"""
@@ -79,13 +83,7 @@ def _validate_filter_by_state(
7983
Arguments:
8084
filter_by_state: List of StateEnum values to validate.
8185
allow_waiting_submission: If False, raises error if WAITING_FOR_SUBMISSION is present.
82-
83-
Raises:
84-
ValueError: If filter_by_state is empty or contains invalid values.
8586
"""
86-
if not filter_by_state:
87-
raise ValueError("filter_by_state cannot be None or empty.")
88-
8987
# Define valid states based on whether WAITING_FOR_SUBMISSION is allowed
9088
valid_states = {
9189
StateEnum.SUBMITTED_WAITING_FOR_REVIEW,
@@ -179,16 +177,15 @@ async def create_my_form_data():
179177
async def list_async(
180178
self,
181179
*,
180+
filter_by_state: List["StateEnum"],
182181
synapse_client: Optional["Synapse"] = None,
183-
filter_by_state: Optional[List["StateEnum"]] = None,
184182
as_reviewer: bool = False,
185183
) -> AsyncGenerator["FormData", None]:
186184
"""
187185
List FormData objects in a FormGroup.
188186
189187
Arguments:
190-
synapse_client: The Synapse client to use for the request.
191-
filter_by_state: Optional list of StateEnum to filter the results.
188+
filter_by_state: list of StateEnum to filter the results.
192189
When as_reviewer=False (default), valid values are:
193190
- StateEnum.WAITING_FOR_SUBMISSION
194191
- StateEnum.SUBMITTED_WAITING_FOR_REVIEW
@@ -200,6 +197,7 @@ async def list_async(
200197
- StateEnum.ACCEPTED
201198
- StateEnum.REJECTED
202199
Note: WAITING_FOR_SUBMISSION is NOT allowed when as_reviewer=True.
200+
synapse_client: The Synapse client to use for the request.
203201
204202
as_reviewer: If True, uses the reviewer endpoint (requires READ_PRIVATE_SUBMISSION
205203
permission). If False (default), lists only FormData owned by the caller.
@@ -286,15 +284,14 @@ async def list_for_review():
286284
def list(
287285
self,
288286
*,
287+
filter_by_state: List["StateEnum"],
289288
synapse_client: Optional["Synapse"] = None,
290-
filter_by_state: Optional[List["StateEnum"]] = None,
291289
as_reviewer: bool = False,
292290
) -> Generator["FormData", None, None]:
293291
"""
294292
List FormData objects in a FormGroup.
295293
296294
Arguments:
297-
synapse_client: The Synapse client to use for the request.
298295
filter_by_state: Optional list of StateEnum to filter the results.
299296
When as_reviewer=False (default), valid values are:
300297
- StateEnum.WAITING_FOR_SUBMISSION
@@ -310,6 +307,7 @@ def list(
310307
311308
as_reviewer: If True, uses the reviewer endpoint (requires READ_PRIVATE_SUBMISSION
312309
permission). If False (default), lists only FormData owned by the caller.
310+
synapse_client: The Synapse client to use for the request.
313311
314312
Yields:
315313
FormData objects matching the request.

synapseclient/models/mixins/form.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55

66
@dataclass
77
class FormGroup:
8+
"""Dataclass representing a FormGroup.s"""
9+
810
group_id: Optional[str] = None
911
"""Unique identifier provided by the system."""
1012

@@ -29,6 +31,8 @@ def fill_from_dict(self, synapse_response: dict[str, Any]) -> "FormGroup":
2931

3032
@dataclass
3133
class FormChangeRequest:
34+
"""Dataclass representing a FormChangeRequest."""
35+
3236
name: Optional[str] = None
3337
"""The name of the form. Required for FormData create. Optional for FormData update. Between 3 and 256 characters"""
3438

tests/unit/synapseclient/models/async/unit_test_form_async.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,10 +222,8 @@ async def mock_generator():
222222
@pytest.mark.parametrize(
223223
"as_reviewer,filter_by_state, expected",
224224
[
225-
# Test for non-reviewers - empty filter
226-
(False, [], ValueError),
227-
# Test for reviewers - empty filter
228-
(True, [], ValueError),
225+
# Test for non-reviewers - WAITING_FOR_SUBMISSION is allowed
226+
(False, [StateEnum.WAITING_FOR_SUBMISSION, StateEnum.ACCEPTED], None),
229227
# Test for reviewers - invalid state filter
230228
(True, [StateEnum.WAITING_FOR_SUBMISSION], ValueError),
231229
],

tests/unit/synapseclient/models/synchronous/unit_test_form.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -220,10 +220,8 @@ async def mock_generator():
220220
@pytest.mark.parametrize(
221221
"as_reviewer,filter_by_state, expected",
222222
[
223-
# Test for non-reviewers - empty filter
224-
(False, [], ValueError),
225-
# Test for reviewers - empty filter
226-
(True, [], ValueError),
223+
# Test for non-reviewers - WAITING_FOR_SUBMISSION is allowed
224+
(False, [StateEnum.WAITING_FOR_SUBMISSION, StateEnum.ACCEPTED], None),
227225
# Test for reviewers - invalid state filter
228226
(True, [StateEnum.WAITING_FOR_SUBMISSION], ValueError),
229227
],

0 commit comments

Comments
 (0)