18994: Fix for colon characters in filenames
authorPeter Amstutz <peter.amstutz@curii.com>
Fri, 15 Apr 2022 17:44:57 +0000 (13:44 -0400)
committerPeter Amstutz <peter.amstutz@curii.com>
Fri, 15 Apr 2022 17:44:57 +0000 (13:44 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

sdk/cwl/arvados_cwl/executor.py
sdk/cwl/arvados_cwl/pathmapper.py

index 6e23d80a85e2434c222e47d7a1589f1087a9a3d9..5f24d2407d1ad727a9aa534382973399f89b0090 100644 (file)
@@ -18,6 +18,7 @@ import json
 import re
 from functools import partial
 import time
+import urllib
 
 from cwltool.errors import WorkflowException
 import cwltool.workflow
@@ -450,7 +451,7 @@ The 'jobs' API is no longer supported.
             srccollection = sp[0][5:]
             try:
                 reader = self.collection_cache.get(srccollection)
-                srcpath = "/".join(sp[1:]) if len(sp) > 1 else "."
+                srcpath = urllib.parse.unquote("/".join(sp[1:]) if len(sp) > 1 else ".")
                 final.copy(srcpath, v.target, source_collection=reader, overwrite=False)
             except arvados.errors.ArgumentError as e:
                 logger.error("Creating CollectionReader for '%s' '%s': %s", k, v, e)
index e0216aae52b352b2d970fbe7bf13bf14f8668423..d7b535eebdfd84fdc0b65123b53bd77fddb96d81 100644 (file)
@@ -166,7 +166,7 @@ class ArvPathMapper(PathMapper):
         else:
             suffix = loc[len(prefix):]
 
-        if prefix+suffix != prefix+urllib.parse.quote(srcobj["basename"], "/+@"):
+        if "basename" in srcobj and prefix+suffix != prefix+urllib.parse.quote(srcobj["basename"], "/+@"):
             return True
 
         if srcobj["class"] == "File" and loc not in self._pathmap: