code: def _split_variables(variables):
      
      file_vs = []
      std_vs = []
      for v in variables:
          cur_type = v["type"]
          while isinstance(cur_type, dict):
              if "items" in cur_type:
                  cur_type = cur_type["items"]
              else:
                  cur_type = cur_type["type"]
          if (cur_type in ["File", "null", "record"] or
                (isinstance(cur_type, (list, tuple)) and
                 ("File" in cur_type or {'items': 'File', 'type': 'array'} in cur_type))):
              file_vs.append(v)
          elif v["id"] in ALWAYS_AVAILABLE:
              std_vs.append(v)
          else:
              file_vs.append(v)
      return file_vs, std_vs
docs: Split variables into always passed (std) and specified (file).
  
      We always pass some variables to each step but need to
      explicitly define file and algorithm variables so they can
      be linked in as needed.