X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/aed47afc7647f24af6541ff03a0cc0649a5358ee..a13547aec78a75da2174e083f6015280787cd597:/sdk/cwl/arvados_cwl/fsaccess.py diff --git a/sdk/cwl/arvados_cwl/fsaccess.py b/sdk/cwl/arvados_cwl/fsaccess.py index 252ca57d47..4688e65a37 100644 --- a/sdk/cwl/arvados_cwl/fsaccess.py +++ b/sdk/cwl/arvados_cwl/fsaccess.py @@ -133,10 +133,10 @@ class CollectionFsAccess(cwltool.stdfsaccess.StdFsAccess): patternsegments = rest.split("/") return sorted(self._match(collection, patternsegments, "keep:" + collection.manifest_locator())) - def open(self, fn, mode): + def open(self, fn, mode, encoding=None): collection, rest = self.get_collection(fn) if collection is not None: - return collection.open(rest, mode) + return collection.open(rest, mode, encoding=encoding) else: return super(CollectionFsAccess, self).open(self._abs(fn), mode) @@ -148,6 +148,11 @@ class CollectionFsAccess(cwltool.stdfsaccess.StdFsAccess): return False else: raise + except IOError as err: + if err.errno == errno.ENOENT: + return False + else: + raise if collection is not None: if rest: return collection.exists(rest) @@ -225,12 +230,13 @@ class CollectionFetcher(DefaultFetcher): def fetch_text(self, url): if url.startswith("keep:"): - with self.fsaccess.open(url, "r") as f: + with self.fsaccess.open(url, "r", encoding="utf-8") as f: return f.read() if url.startswith("arvwf:"): record = self.api_client.workflows().get(uuid=url[6:]).execute(num_retries=self.num_retries) - definition = record["definition"] + ('\nlabel: "%s"\n' % record["name"].replace('"', '\\"')) - return definition + definition = yaml.round_trip_load(record["definition"]) + definition["label"] = record["name"] + return yaml.round_trip_dump(definition) return super(CollectionFetcher, self).fetch_text(url) def check_exists(self, url):