20933: Code cleanups 20933-arv-copy-cwl
authorPeter Amstutz <peter.amstutz@curii.com>
Wed, 11 Oct 2023 20:57:59 +0000 (16:57 -0400)
committerPeter Amstutz <peter.amstutz@curii.com>
Wed, 11 Oct 2023 21:14:01 +0000 (17:14 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz@curii.com>

sdk/cwl/arvados_cwl/runner.py
sdk/cwl/setup.py
sdk/python/arvados/commands/arv_copy.py

index 554f13744901c1f4f8d5e1a1481dc71b96cf61b5..f6aab4b93f05110c6ed29d60bdb1c061921e013a 100644 (file)
@@ -983,4 +983,5 @@ def print_keep_deps(arvRunner, runtimeContext, merged_map, tool):
             if g:
                 references.add(g[1])
 
-    arvRunner.stdout.write(json.dumps(sorted(list(references)))+"\n")
+    json.dump(sorted(references), arvRunner.stdout)
+    print(file=arvRunner.stdout)
index 1be2c119c2ff4c455a27e093597af206ee2c24e6..f8aace06830e3780f1fad20c80bac8ee01517fa5 100644 (file)
@@ -44,6 +44,9 @@ setup(name='arvados-cwl-runner',
           'msgpack==1.0.3',
           'importlib-metadata<5',
           'setuptools>=40.3.0',
+
+          # zipp 3.16 dropped support for Python 3.7, so this can be
+          # removed this when we drop support for 3.7 as well.
           'zipp<3.16.0'
       ],
       data_files=[
index 6c7d873af4a0d7741123502c3444112ecafcf395..7f5245db863acd0c9c446ce6328b58f237125a3c 100755 (executable)
@@ -333,9 +333,15 @@ def copy_workflow(wf_uuid, src, dst, args):
         try:
             result = subprocess.run(["arvados-cwl-runner", "--quiet", "--print-keep-deps", "arvwf:"+wf_uuid],
                                     capture_output=True, env=env)
-        except (FileNotFoundError, subprocess.CalledProcessError):
-            logger.error('Copying workflows requires arvados-cwl-runner 2.7.1 or later to be installed in PATH.')
-            return
+        except FileNotFoundError:
+            no_arv_copy = True
+        else:
+            no_arv_copy = result.returncode == 2
+
+        if no_arv_copy:
+            raise Exception('Copying workflows requires arvados-cwl-runner 2.7.1 or later to be installed in PATH.')
+        elif result.returncode != 0:
+            raise Exception('There was an error getting Keep dependencies from workflow using arvados-cwl-runner --print-keep-deps')
 
         locations = json.loads(result.stdout)