code: def load_steps(working_dir=None, steps_dir=None, step_file=None,
                 step_list=None):
      
      if steps_dir is not None:
          step_files = glob.glob(os.path.join(steps_dir, '*.cwl'))
      elif step_file is not None:
          step_files = [step_file]
      elif step_list is not None:
          step_files = []
          for path in step_list:
              if os.path.isdir(path):
                  step_files += glob.glob(os.path.join(path, '*.cwl'))
              else:
                  step_files.append(path)
      else:
          step_files = []
  
      if working_dir is not None:
          step_files = sort_loading_order(step_files)
  
      steps = {}
      for f in step_files:
          if working_dir is not None:
              # Copy file to working_dir
              if not working_dir == os.path.dirname(f) and not is_url(f):
                  copied_file = os.path.join(working_dir, os.path.basename(f))
                  shutil.copy2(f, copied_file)
                  f = copied_file
  
          # Create steps
          try:
              s = Step(f)
              steps[s.name] = s
          except (NotImplementedError, ValidationException,
                  PackedWorkflowException) as e:
              logger.warning(e)
  
      return steps
docs: Return a dictionary containing Steps read from file.
  
      Args:
          steps_dir (str, optional): path to directory containing CWL files.
          step_file (str, optional): path or http(s) url to a single CWL file.
          step_list (list, optional): a list of directories, urls or local file
              paths to CWL files or directories containing CWL files.
  
      Return:
          dict containing (name, Step) entries.