code: def remove(self, attachments):
          
          if isinstance(attachments, (list, tuple)):
              attachments = ({attachment.name
                              if isinstance(attachment, BaseAttachment)
                              else attachment for attachment in attachments})
          elif isinstance(attachments, str):
              attachments = {attachments}
          elif isinstance(attachments, BaseAttachment):
              attachments = {attachments.name}
          else:
              raise ValueError('Incorrect parameter type for attachments')
  
          new_attachments = []
          for attachment in self.__attachments:
              if attachment.name not in attachments:
                  new_attachments.append(attachment)
              else:
                  if attachment.on_cloud:
                      # add to removed_attachments so later we can delete them
                      self.__removed_attachments.append(
                          attachment)
          self.__attachments = new_attachments
          self._update_parent_attachments()
          self._track_changes()
docs: Remove the specified attachments
  
          :param attachments: list of attachments
          :type attachments: list[str] or list[Path] or str or Path or dict