@@ -91,15 +91,30 @@ async def native_upload(
9191 "proxy" : proxy ,
9292 }
9393
94+ files_new = [file for file in files if not file .to_replace ]
95+ files_new_metadata = [file for file in files if file .to_replace and file ._unchanged_data ]
96+ files_replace = [file for file in files if file .to_replace and not file ._unchanged_data ]
97+
9498 async with httpx .AsyncClient (** session_params ) as session :
9599 with tempfile .TemporaryDirectory () as tmp_dir :
96- packages = distribute_files (files )
100+ packages = distribute_files (files_new )
97101 packaged_files = _zip_packages (
98102 packages = packages ,
99103 tmp_dir = tmp_dir ,
100104 progress = progress ,
101105 )
102106
107+ replacable_files = [
108+ (
109+ progress .add_task (
110+ file .file_name , # type: ignore
111+ total = file ._size ,
112+ ),
113+ file
114+ )
115+ for file in files_replace
116+ ]
117+
103118 tasks = [
104119 _single_native_upload (
105120 session = session ,
@@ -108,15 +123,15 @@ async def native_upload(
108123 pbar = pbar , # type: ignore
109124 progress = progress ,
110125 )
111- for pbar , file in packaged_files
126+ for pbar , file in ( packaged_files + replacable_files )
112127 ]
113128
114129 responses = await asyncio .gather (* tasks )
115130 _validate_upload_responses (responses , files )
116131
117132 await _update_metadata (
118133 session = session ,
119- files = files ,
134+ files = files_new + files_new_metadata ,
120135 persistent_id = persistent_id ,
121136 dataverse_url = dataverse_url ,
122137 api_token = api_token ,
@@ -167,6 +182,10 @@ def _zip_packages(
167182 for index , package in packages :
168183 if len (package ) == 1 :
169184 file = package [0 ]
185+ pbar = progress .add_task (
186+ file .file_name , # type: ignore
187+ total = file ._size ,
188+ )
170189 else :
171190 path = zip_files (
172191 files = package ,
@@ -178,10 +197,10 @@ def _zip_packages(
178197 file .extract_file_name ()
179198 file .mimeType = "application/zip"
180199
181- pbar = progress .add_task (
182- file . file_name , # type: ignore
183- total = file ._size ,
184- )
200+ pbar = progress .add_task (
201+ f"Zip package of { len ( package ) } files" , # type: ignore
202+ total = file ._size ,
203+ )
185204
186205 files .append ((pbar , file ))
187206
@@ -401,7 +420,6 @@ async def _update_single_metadata(
401420 json_data = _get_json_data (file )
402421
403422 del json_data ["forceReplace" ]
404- del json_data ["restrict" ]
405423
406424 # Send metadata as a readable byte stream
407425 # This is a workaround since "data" and "json"
0 commit comments