class_docstr: Deletes objects from a list or all objects matching a prefix from a Google Cloud Storage bucket.
  
  :param bucket_name: The GCS bucket to delete from
  :param objects: List of objects to delete. These should be the names
      of objects in the bucket, not including gs://bucket/
  :param prefix: String or list of strings, which filter objects whose name begin with
         it/them. (templated)
  :param gcp_conn_id: (Optional) The connection ID used to connect to Google Cloud.
  :param impersonation_chain: Optional service account to impersonate using short-term
      credentials, or chained list of accounts required to get the access_token
      of the last account in the list, which will be impersonated in the request.
      If set as a string, the account must grant the originating account
      the Service Account Token Creator IAM role.
      If set as a sequence, the identities from the list must grant
      Service Account Token Creator IAM role to the directly preceding identity, with first
      account from the list granting this role to the originating account (templated).
class_docstr_tok: ["Deletes","objects","from","a","list","or","all","objects","matching","a","prefix","from","a","Google","Cloud","Storage","bucket",".",":","param","bucket_name",":","The","GCS","bucket","to","delete","from",":","param","objects",":","List","of","objects","to","delete",".","These","should","be","the","names","of","objects","in","the","bucket",",","not","including","gs",":","\/\/bucket\/",":","param","prefix",":","String","or","list","of","strings",",","which","filter","objects","whose","name","begin","with","it\/them",".","(","templated",")",":","param","gcp_conn_id",":","(","Optional",")","The","connection","ID","used","to","connect","to","Google","Cloud",".",":","param","impersonation_chain",":","Optional","service","account","to","impersonate","using","short-term","credentials",",","or","chained","list","of","accounts","required","to","get","the","access_token","of","the","last","account","in","the","list",",","which","will","be","impersonated","in","the","request",".","If","set","as","a","string",",","the","account","must","grant","the","originating","account","the","Service","Account","Token","Creator","IAM","role",".","If","set","as","a","sequence",",","the","identities","from","the","list","must","grant","Service","Account","Token","Creator","IAM","role","to","the","directly","preceding","identity",",","with","first","account","from","the","list","granting","this","role","to","the","originating","account","(","templated",")","."]
docstr: Implementing on_complete as execute() resolves object names.
docstr_tok: ["Implementing","on_complete","as","execute","(",")","resolves","object","names","."]
code: def get_openlineage_facets_on_complete(self, task_instance):
      """Implementing on_complete as execute() resolves object names."""
      from openlineage.client.facet import (
          LifecycleStateChange,
          LifecycleStateChangeDatasetFacet,
          LifecycleStateChangeDatasetFacetPreviousIdentifier,
      )
      from openlineage.client.run import Dataset
  
      from airflow.providers.openlineage.extractors import (
          OperatorLineage,
      )
  
      if not self._objects:
          return OperatorLineage()
  
      bucket_url = f"gs://{self.bucket_name}"
      input_datasets = [
          Dataset(
              namespace=bucket_url,
              name=object_name,
              facets={
                  "lifecycleStateChange": LifecycleStateChangeDatasetFacet(
                      lifecycleStateChange=LifecycleStateChange.DROP.value,
                      previousIdentifier=LifecycleStateChangeDatasetFacetPreviousIdentifier(
                          namespace=bucket_url,
                          name=object_name,
                      ),
                  )
              },
          )
          for object_name in self._objects
      ]
  
      return OperatorLineage(inputs=input_datasets)
  
imports: from __future__ import annotations
  import datetime
  import subprocess
  import sys
  import warnings
  from pathlib import Path
  from tempfile import NamedTemporaryFile, TemporaryDirectory
  from typing import TYPE_CHECKING, Sequence
  import pendulum
  from google.api_core.exceptions import Conflict
  from google.cloud.exceptions import GoogleCloudError
  from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning
  from airflow.providers.google.cloud.hooks.gcs import GCSHook
  from airflow.providers.google.cloud.operators.cloud_base import GoogleCloudBaseOperator
  from airflow.providers.google.common.links.storage import FileDetailsLink, StorageLink
  from airflow.utils import timezone
label_desc: Use image node_id 3 for calling the GCSDeleteObjectsOperator obj's underlying member method code with example usage: obj.get_openlineage_facets_on_complete(task_instance) and returns: OperatorLineage, OperatorLineage