Merge branch '9857-cwl-acceptlist-re' refs #9857
[arvados.git] / sdk / cwl / arvados_cwl / runner.py
index aafe7c3dd4560d7c3e48c4bbeba99012159b36b4..a4132ca3f762675ff9dccc0129f3f8139b313f1b 100644 (file)
@@ -21,9 +21,18 @@ from .pathmapper import ArvPathMapper
 
 logger = logging.getLogger('arvados.cwl-runner')
 
-cwltool.draft2tool.ACCEPTLIST_RE = re.compile(r"^[a-zA-Z0-9._+-]+$")
+cwltool.draft2tool.ACCEPTLIST_RE = re.compile(r".*")
+
+def trim_listing(obj):
+    """Remove 'listing' field from Directory objects that are keep references.
+
+    When Directory objects represent Keep references, it redundant and
+    potentially very expensive to pass fully enumerated Directory objects
+    between instances of cwl-runner (e.g. a submitting a job, or using the
+    RunInSingleContainer feature), so delete the 'listing' field when it is
+    safe to do so.
+    """
 
-def del_listing(obj):
     if obj.get("location", "").startswith("keep:") and "listing" in obj:
         del obj["listing"]
     if obj.get("location", "").startswith("_:"):
@@ -135,7 +144,7 @@ class Runner(object):
                                         self.job_order.get("id", "#"),
                                         False)
 
-        adjustDirObjs(self.job_order, del_listing)
+        adjustDirObjs(self.job_order, trim_listing)
 
         if "id" in self.job_order:
             del self.job_order["id"]