Skip to content

Commit 7a2fdc0

Browse files
committed
Improve error message when submitting a Project with no members
1 parent 3422f9a commit 7a2fdc0

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

packages/syft/src/syft/service/project/project.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,6 +1132,9 @@ def pending_requests(self) -> int:
11321132
)
11331133

11341134

1135+
_EMPTY_MEMBER_LIST_ERROR_MESSAGE = "Project needs at least 1 member."
1136+
1137+
11351138
@serializable(without=["bootstrap_events", "clients"])
11361139
class ProjectSubmit(SyftObject):
11371140
__canonical_name__ = "ProjectSubmit"
@@ -1258,6 +1261,9 @@ def start(self, return_all_projects: bool = False) -> Project | list[Project]:
12581261
return self.send(return_all_projects=return_all_projects)
12591262

12601263
def send(self, return_all_projects: bool = False) -> Project | list[Project]:
1264+
if len(self.clients) == 0:
1265+
return SyftError(message=_EMPTY_MEMBER_LIST_ERROR_MESSAGE)
1266+
12611267
# Currently we are assuming that the first member is the leader
12621268
# This would be changed in our future leaderless approach
12631269
leader = self.clients[0]

packages/syft/tests/syft/project/project_test.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
# syft absolute
66
import syft as sy
77
from syft.service.project.project import Project
8+
from syft.service.project.project import _EMPTY_MEMBER_LIST_ERROR_MESSAGE
9+
from syft.service.response import SyftError
810

911

1012
def test_project_creation(worker):
@@ -108,3 +110,13 @@ def test_project_serde(worker):
108110
deser_data = sy.deserialize(ser_data, from_bytes=True)
109111
assert isinstance(deser_data, type(project))
110112
assert deser_data == project
113+
114+
115+
def test_submit_project_with_empty_member_list_error() -> None:
116+
new_project = sy.Project(
117+
name="My Cool Project", description="My Cool Description", members=[]
118+
)
119+
120+
res = new_project.send()
121+
assert isinstance(res, SyftError)
122+
assert _EMPTY_MEMBER_LIST_ERROR_MESSAGE in res.message

0 commit comments

Comments
 (0)