class_docstr: To enable users to delete single object or multiple objects from a bucket using a single HTTP request.
  
  .. seealso::
      For more information on how to use this operator, take a look at the guide:
      :ref:`howto/operator:S3DeleteObjectsOperator`
  
  :param bucket: Name of the bucket in which you are going to delete object(s). (templated)
  :param keys: The key(s) to delete from S3 bucket. (templated)
  
      When ``keys`` is a string, it's supposed to be the key name of
      the single object to delete.
  
      When ``keys`` is a list, it's supposed to be the list of the
      keys to delete.
  
  :param prefix: Prefix of objects to delete. (templated)
      All objects matching this prefix in the bucket will be deleted.
  :param aws_conn_id: Connection id of the S3 connection to use
  :param verify: Whether or not to verify SSL certificates for S3 connection.
      By default SSL certificates are verified.
  
      You can provide the following values:
  
      - ``False``: do not validate SSL certificates. SSL will still be used,
               but SSL certificates will not be
               verified.
      - ``path/to/cert/bundle.pem``: A filename of the CA cert bundle to uses.
               You can specify this argument if you want to use a different
               CA cert bundle than the one used by botocore.
class_docstr_tok: ["To","enable","users","to","delete","single","object","or","multiple","objects","from","a","bucket","using","a","single","HTTP","request",".","..","seealso",":",":","For","more","information","on","how","to","use","this","operator",",","take","a","look","at","the","guide",":",":","ref",":","`","howto\/operator",":","S3DeleteObjectsOperator","`",":","param","bucket",":","Name","of","the","bucket","in","which","you","are","going","to","delete","object","(","s",")",".","(","templated",")",":","param","keys",":","The","key","(","s",")","to","delete","from","S3","bucket",".","(","templated",")","When","``","keys","``","is","a","string",",","it","'s","supposed","to","be","the","key","name","of","the","single","object","to","delete",".","When","``","keys","``","is","a","list",",","it","'s","supposed","to","be","the","list","of","the","keys","to","delete",".",":","param","prefix",":","Prefix","of","objects","to","delete",".","(","templated",")","All","objects","matching","this","prefix","in","the","bucket","will","be","deleted",".",":","param","aws_conn_id",":","Connection","id","of","the","S3","connection","to","use",":","param","verify",":","Whether","or","not","to","verify","SSL","certificates","for","S3","connection",".","By","default","SSL","certificates","are","verified",".","You","can","provide","the","following","values",":","-","``","False","``",":","do","not","validate","SSL","certificates",".","SSL","will","still","be","used",",","but","SSL","certificates","will","not","be","verified",".","-","``","path\/to\/cert\/bundle.pem","``",":","A","filename","of","the","CA","cert","bundle","to","uses",".","You","can","specify","this","argument","if","you","want","to","use","a","different","CA","cert","bundle","than","the","one","used","by","botocore","."]
code: def execute(self, context: Context):
      if not exactly_one(self.keys is None, self.prefix is None):
          raise AirflowException("Either keys or prefix should be set.")
  
      if isinstance(self.keys, (list, str)) and not self.keys:
          return
      s3_hook = S3Hook(aws_conn_id=self.aws_conn_id, verify=self.verify)
  
      keys = self.keys or s3_hook.list_keys(
          bucket_name=self.bucket, prefix=self.prefix
      )
      if keys:
          s3_hook.delete_objects(bucket=self.bucket, keys=keys)
          self._keys = keys
  
imports: from __future__ import annotations
  import subprocess
  import sys
  from tempfile import NamedTemporaryFile
  from typing import TYPE_CHECKING, Sequence
  from airflow.exceptions import AirflowException
  from airflow.models import BaseOperator
  from airflow.providers.amazon.aws.hooks.s3 import S3Hook
  from airflow.utils.helpers import exactly_one
label_desc: Use image node_id 2 for calling the S3DeleteObjectsOperator obj's underlying member method code with example usage: obj.execute(context) without return types