code: def attach_list(filepaths, notes):
      '''
      all the arguments are lists
      returns a list of dictionaries; each dictionary "represent" an attachment
      '''
      assert type(filepaths) in (list, tuple)
      assert type(notes) in (list, tuple)
  
      # this if clause means "if those lists are not of the same length"
      if len(filepaths) != len(notes):
          die('The number of --filepath, and --notes must be the same')
  
      attach_list = []
      for fname, note in zip(filepaths, notes):
          name = os.path.basename(fname)
          assert os.path.exists(fname)
          mime = mimetypes.guess_type(fname)[0]
          if mime is not None and '/' not in mime:
              mime = None
          attach_list.append({
              'file': fname,
              'name': name,
              'mime': mime,
              'note': note
          })
      return attach_lisf attach_list(filepaths, notes):
      '''
      all the arguments are lists
      returns a list of dictionaries; each dictionary "represent" an attachment
      '''
      assert type(filepaths) in (list, tuple)
      assert type(notes) in (list, tuple)
  
      # this if clause means "if those lists are not of the same length"
      if len(filepaths) != len(notes):
          die('The number of --filepath, and --notes must be the same')
  
      attach_list = []
      for fname, note in zip(filepaths, notes):
          name = os.path.basename(fname)
          assert os.path.exists(fname)
          mime = mimetypes.guess_type(fname)[0]
          if mime is not None and '/' not in mime:
              mime = None
          attach_list.append({
              'file': fname,
              'name': name,
              'mime': mime,
              'note': note
          })
      return attach_list
docs: all the arguments are lists
      returns a list of dictionaries; each dictionary "represent" an attachment