2828 cwl_v1_2 .InputRecordField ,
2929]
3030"""Type union for a CWL v1.x InputRecordSchema object."""
31+ InputSchema = Union [cwl_v1_0 .InputSchema , cwl_v1_1 .InputSchema , cwl_v1_2 .InputSchema ]
32+ """Type union for a CWL v1.x InputSchema object."""
3133OutputParameter = Union [
3234 cwl_v1_0 .OutputParameter , cwl_v1_1 .OutputParameter , cwl_v1_2 .OutputParameter
3335]
@@ -243,8 +245,6 @@ def load_document_by_uri(
243245 load_all : bool = False ,
244246) -> Any :
245247 """Load a CWL object from a URI or a path."""
246- base_uri = ""
247- real_uri = ""
248248 if isinstance (path , str ):
249249 uri = urlparse (path )
250250 id_ = uri .fragment or None
@@ -259,8 +259,24 @@ def load_document_by_uri(
259259 base_uri = path .resolve ().parent .as_uri ()
260260 id_ = path .resolve ().name .split ("#" )[1 ] if "#" in path .resolve ().name else None
261261
262- if loadingOptions is None :
262+ if isinstance (loadingOptions , cwl_v1_0 .LoadingOptions ):
263+ loadingOptions = cwl_v1_0 .LoadingOptions (
264+ fileuri = real_uri , baseuri = base_uri , copyfrom = loadingOptions
265+ )
266+ elif isinstance (loadingOptions , cwl_v1_1 .LoadingOptions ):
267+ loadingOptions = cwl_v1_1 .LoadingOptions (
268+ fileuri = real_uri , baseuri = base_uri , copyfrom = loadingOptions
269+ )
270+ elif isinstance (loadingOptions , cwl_v1_2 .LoadingOptions ):
271+ loadingOptions = cwl_v1_2 .LoadingOptions (
272+ fileuri = real_uri , baseuri = base_uri , copyfrom = loadingOptions
273+ )
274+ elif loadingOptions is None :
263275 loadingOptions = cwl_v1_2 .LoadingOptions (fileuri = real_uri , baseuri = base_uri )
276+ else :
277+ raise ValidationException (
278+ f"Unsupported loadingOptions type: { type (loadingOptions )} "
279+ )
264280
265281 doc = loadingOptions .fetcher .fetch_text (real_uri )
266282 return load_document_by_string (doc , real_uri , loadingOptions , id_ , load_all )
0 commit comments