1111from synapseclient import Synapse
1212from synapseclient .core .typing_utils import DataFrame as DATA_FRAME_TYPE
1313from synapseclient .core .utils import test_import_pandas
14+ from synapseclient .extensions .curator .utils import project_id_from_entity_id
1415from synapseclient .models import (
1516 CurationTask ,
1617 Grid ,
@@ -99,7 +100,6 @@ def extract_schema_properties_from_web(
99100
100101
101102def create_record_based_metadata_task (
102- project_id : str ,
103103 folder_id : str ,
104104 record_set_name : str ,
105105 record_set_description : str ,
@@ -112,6 +112,7 @@ def create_record_based_metadata_task(
112112 assignee_principal_id : Optional [Union [str , int ]] = None ,
113113 * ,
114114 synapse_client : Optional [Synapse ] = None ,
115+ project_id : Optional [str ] = None , # Deprecated, will be removed in v5.0.0
115116) -> Tuple [RecordSet , CurationTask , Grid ]:
116117 """
117118 Generate and upload CSV templates as a RecordSet for record-based metadata,
@@ -142,7 +143,6 @@ def create_record_based_metadata_task(
142143
143144 record_set, task, grid = create_record_based_metadata_task(
144145 synapse_client=syn,
145- project_id="syn12345678",
146146 folder_id="syn87654321",
147147 record_set_name="BiospecimenMetadata_RecordSet",
148148 record_set_description="RecordSet for biospecimen metadata curation",
@@ -155,9 +155,10 @@ def create_record_based_metadata_task(
155155 ```
156156
157157 Arguments:
158- project_id: The Synapse ID of the project where the folder exists.
159158 folder_id: The Synapse ID of the folder to upload RecordSet to.
160- record_set_name: Name for the RecordSet.
159+ record_set_name: Name for the RecordSet entity that will be created.
160+ A RecordSet entity captures record-based metadata as a special type of CSV and stores contributor
161+ provided metadata collected via Curator enabling sharing and download of validated metadata in Synapse.
161162 record_set_description: Description for the RecordSet.
162163 curation_task_name: Name for the CurationTask (used as data_type field).
163164 Must be unique within the project, otherwise if it matches an existing
@@ -177,6 +178,7 @@ def create_record_based_metadata_task(
177178 synapse_client: If not passed in and caching was not disabled by
178179 `Synapse.allow_client_caching(False)` this will use the last created
179180 instance from the Synapse class constructor.
181+ project_id: Deprecated, will be removed in v5.0.0
180182
181183 Returns:
182184 Tuple containing the created RecordSet, CurationTask, and Grid objects
@@ -186,8 +188,6 @@ def create_record_based_metadata_task(
186188 SynapseError: If there are issues with Synapse operations.
187189 """
188190 # Validate required parameters
189- if not project_id :
190- raise ValueError ("project_id is required" )
191191 if not folder_id :
192192 raise ValueError ("folder_id is required" )
193193 if not record_set_name :
@@ -203,8 +203,18 @@ def create_record_based_metadata_task(
203203 if not schema_uri :
204204 raise ValueError ("schema_uri is required" )
205205
206+ if project_id :
207+ synapse_client .logger .warning (
208+ "The 'project_id' parameter is deprecated and will be removed in v5.0.0. "
209+ "The project ID will be inferred from the folder ID provided."
210+ )
211+
206212 synapse_client = Synapse .get_client (synapse_client = synapse_client )
207213
214+ project_id = project_id_from_entity_id (
215+ entity_id = folder_id , synapse_client = synapse_client
216+ )
217+
208218 template_df = extract_schema_properties_from_web (
209219 syn = synapse_client , schema_uri = schema_uri
210220 )
0 commit comments