diff --git a/cwltool/command_line_tool.py b/cwltool/command_line_tool.py index 2319e6211..29a54a5ca 100644 --- a/cwltool/command_line_tool.py +++ b/cwltool/command_line_tool.py @@ -881,11 +881,15 @@ def remove_prefix(s: str, prefix: str) -> str: "ShellCommandRequirement", "NetworkAccess", } - for rh in (self.original_requirements, self.original_hints): - for r in reversed(rh): - cls = cast(str, r["class"]) - if cls in interesting and cls not in keydict: - keydict[cls] = r + + for r in self.original_requirements: + cls = cast(str, r["class"]) + if cls in interesting and cls not in keydict: + keydict.setdefault("requirements", {})[cls] = r + for h in self.original_hints: + cls = cast(str, h["class"]) + if cls in interesting and cls not in keydict: + keydict.setdefault("hints",{})[cls] = h keydictstr = json_dumps(keydict, separators=(",", ":"), sort_keys=True) cachekey = hashlib.md5(keydictstr.encode("utf-8")).hexdigest() # nosec