2020import logging
2121import os
2222import re
23+ import urllib
2324import zipfile
2425from concurrent .futures import ThreadPoolExecutor
2526from typing import Any , List , Optional
@@ -1167,6 +1168,14 @@ def download_output(self, experiment):
11671168 with open (filepath , "w" ) as f :
11681169 f .write (output )
11691170
1171+ def submit_task_direct (self , task ):
1172+ if self .queue is None :
1173+ # Do it now:
1174+ task ()
1175+ else :
1176+ # add to queue
1177+ self .queue .submit (task )
1178+
11701179 def submit_task (self , file_path , experiment , method_name , args , kwargs ):
11711180 def task ():
11721181 method = getattr (experiment , method_name )
@@ -1175,12 +1184,7 @@ def task():
11751184 with open (file_path , "wb+" ) as f :
11761185 f .write (results )
11771186
1178- if self .queue is None :
1179- # Do it now:
1180- task ()
1181- else :
1182- # add to queue
1183- self .queue .submit (task )
1187+ self .submit_task_direct (task )
11841188
11851189 def end (self ):
11861190 if self .queue is not None :
@@ -1241,6 +1245,12 @@ def download_assets(self, experiment):
12411245 self .summary ["assets" ] += 1
12421246 path , filename = os .path .split (file_path )
12431247 os .makedirs (path , exist_ok = True )
1248+
1249+ if asset ["remote" ]:
1250+ self .submit_task_direct (
1251+ lambda : self .download_asset (experiment , asset ["fileName" ])
1252+ )
1253+ else :
12441254 self .submit_task (
12451255 file_path , experiment , "get_asset" , [asset ["assetId" ]], {}
12461256 )
@@ -1275,9 +1285,18 @@ def download_asset(self, experiment, asset_filename):
12751285 self .summary ["assets" ] += 1
12761286 path , filename = os .path .split (file_path )
12771287 os .makedirs (path , exist_ok = True )
1278- raw = experiment .get_asset (asset ["assetId" ])
1279- with open (file_path , "wb+" ) as f :
1280- f .write (raw )
1288+
1289+ if asset ["remote" ]:
1290+ if asset ["link" ].startswith ("http" ):
1291+ urllib .request .urlretrieve (asset ["link" ], file_path )
1292+ else :
1293+ print (
1294+ f"I don't know how to download { asset ['link' ]} remote asset; skipping"
1295+ )
1296+ else :
1297+ raw = experiment .get_asset (asset ["assetId" ])
1298+ with open (file_path , "wb+" ) as f :
1299+ f .write (raw )
12811300
12821301 def download_experiment (self , experiment , top_level = True ):
12831302 # type: (APIExperiment, Optional[bool]) -> None
0 commit comments