1- from dataclasses import dataclass , field
1+ from dataclasses import dataclass
22from typing import TYPE_CHECKING , Dict , List , Optional , Protocol , Union
33
44from synapseclient import Synapse
55from synapseclient .api import evaluation_services
66from synapseclient .core .async_utils import async_to_sync
7- from synapseclient .models .mixins .access_control import AccessControllable
87
98if TYPE_CHECKING :
109 from synapseclient .models .submission import Submission
@@ -41,7 +40,11 @@ def get_evaluation_submission_bundles(
4140 A list of SubmissionBundle objects containing the submission bundles
4241 for the evaluation queue.
4342
43+ Note:
44+ The caller must be granted the ACCESS_TYPE.READ_PRIVATE_SUBMISSION on the specified Evaluation.
45+
4446 Example: Getting submission bundles for an evaluation
47+
4548 ```python
4649 from synapseclient import Synapse
4750 from synapseclient.models import SubmissionBundle
@@ -87,6 +90,7 @@ def get_user_submission_bundles(
8790 submission bundles for the evaluation queue.
8891
8992 Example: Getting user submission bundles
93+
9094 ```python
9195 from synapseclient import Synapse
9296 from synapseclient.models import SubmissionBundle
@@ -95,26 +99,24 @@ def get_user_submission_bundles(
9599 syn.login()
96100
97101 bundles = SubmissionBundle.get_user_submission_bundles(
98- evaluation_id="9614543 ",
102+ evaluation_id="9999999 ",
99103 limit=25
100104 )
101105 print(f"Found {len(bundles)} user submission bundles")
102106 for bundle in bundles:
103- print(f"Submission ID: {bundle.submission.id if bundle.submission else 'N/A' }")
107+ print(f"Submission ID: {bundle.submission.id}")
104108 ```
105109 """
106110 return []
107111
108112
109113@dataclass
110114@async_to_sync
111- class SubmissionBundle (
112- SubmissionBundleSynchronousProtocol ,
113- AccessControllable ,
114- ):
115+ class SubmissionBundle (SubmissionBundleSynchronousProtocol ):
115116 """A `SubmissionBundle` object represents a bundle containing a Synapse Submission
116117 and its accompanying SubmissionStatus. This bundle provides convenient access to both
117118 the submission data and its current status in a single object.
119+
118120 <https://rest-docs.synapse.org/rest/org/sagebionetworks/evaluation/model/SubmissionBundle.html>
119121
120122 Attributes:
@@ -124,6 +126,7 @@ class SubmissionBundle(
124126 This object should be used to contain scoring data about the Submission.
125127
126128 Example: Retrieve submission bundles for an evaluation.
129+
127130 ```python
128131 from synapseclient import Synapse
129132 from synapseclient.models import SubmissionBundle
@@ -141,6 +144,26 @@ class SubmissionBundle(
141144 print(f"Submission ID: {bundle.submission.id if bundle.submission else 'N/A'}")
142145 print(f"Status: {bundle.submission_status.status if bundle.submission_status else 'N/A'}")
143146 ```
147+
148+ Example: Retrieve user submission bundles for an evaluation.
149+
150+ ```python
151+ from synapseclient import Synapse
152+ from synapseclient.models import SubmissionBundle
153+
154+ syn = Synapse()
155+ syn.login()
156+
157+ # Get current user's submission bundles for an evaluation
158+ user_bundles = SubmissionBundle.get_user_submission_bundles(
159+ evaluation_id="9999999",
160+ limit=25
161+ )
162+
163+ for bundle in user_bundles:
164+ print(f"Submission ID: {bundle.submission.id}")
165+ print(f"Status: {bundle.submission_status.status}")
166+ ```
144167 """
145168
146169 submission : Optional ["Submission" ] = None
@@ -155,12 +178,6 @@ class SubmissionBundle(
155178 This object should be used to contain scoring data about the Submission.
156179 """
157180
158- _last_persistent_instance : Optional ["SubmissionBundle" ] = field (
159- default = None , repr = False , compare = False
160- )
161- """The last persistent instance of this object. This is used to determine if the
162- object has been changed and needs to be updated in Synapse."""
163-
164181 def fill_from_dict (
165182 self , synapse_submission_bundle : Dict [str , Union [bool , str , int , Dict ]]
166183 ) -> "SubmissionBundle" :
@@ -223,6 +240,7 @@ async def get_evaluation_submission_bundles_async(
223240 The caller must be granted the ACCESS_TYPE.READ_PRIVATE_SUBMISSION on the specified Evaluation.
224241
225242 Example: Getting submission bundles for an evaluation
243+
226244 ```python
227245 from synapseclient import Synapse
228246 from synapseclient.models import SubmissionBundle
@@ -231,13 +249,13 @@ async def get_evaluation_submission_bundles_async(
231249 syn.login()
232250
233251 bundles = await SubmissionBundle.get_evaluation_submission_bundles_async(
234- evaluation_id="9614543 ",
252+ evaluation_id="9999999 ",
235253 status="SCORED",
236254 limit=50
237255 )
238256 print(f"Found {len(bundles)} submission bundles")
239257 for bundle in bundles:
240- print(f"Submission ID: {bundle.submission.id if bundle.submission else 'N/A' }")
258+ print(f"Submission ID: {bundle.submission.id}")
241259 ```
242260 """
243261 response = await evaluation_services .get_evaluation_submission_bundles (
@@ -281,6 +299,8 @@ async def get_user_submission_bundles_async(
281299 submission bundles for the evaluation queue.
282300
283301 Example: Getting user submission bundles
302+
303+
284304 ```python
285305 from synapseclient import Synapse
286306 from synapseclient.models import SubmissionBundle
@@ -289,12 +309,12 @@ async def get_user_submission_bundles_async(
289309 syn.login()
290310
291311 bundles = await SubmissionBundle.get_user_submission_bundles_async(
292- evaluation_id="9614543 ",
312+ evaluation_id="9999999 ",
293313 limit=25
294314 )
295315 print(f"Found {len(bundles)} user submission bundles")
296316 for bundle in bundles:
297- print(f"Submission ID: {bundle.submission.id if bundle.submission else 'N/A' }")
317+ print(f"Submission ID: {bundle.submission.id}")
298318 ```
299319 """
300320 response = await evaluation_services .get_user_submission_bundles (
0 commit comments