class_docstr: Interact with Alibaba Cloud OSS, using the oss2 library.
class_docstr_tok: ["Interact","with","Alibaba","Cloud","OSS",",","using","the","oss2","library","."]
docstr: Find out whether the specified key exists in the oss remote storage.
  
  :param bucket_name: the name of the bucket
  :param key: oss bucket key
docstr_tok: ["Find","out","whether","the","specified","key","exists","in","the","oss","remote","storage",".",":","param","bucket_name",":","the","name","of","the","bucket",":","param","key",":","oss","bucket","key"]
code: def key_exist(self, bucket_name: str | None, key: str) -> bool:
      """
      Find out whether the specified key exists in the oss remote storage.
  
      :param bucket_name: the name of the bucket
      :param key: oss bucket key
      """
      # full_path = None
      self.log.info(
          "Looking up oss bucket %s for bucket key %s ...",
          bucket_name,
          key,
      )
      try:
          return self.get_bucket(bucket_name).object_exists(key)
      except Exception as e:
          self.log.error(e)
          raise AirflowException(
              f"Errors when check bucket object existence: {key}"
          )
  
imports: from __future__ import annotations
  from functools import wraps
  from inspect import signature
  from typing import TYPE_CHECKING, Callable, TypeVar, cast
  from urllib.parse import urlsplit
  import oss2
  from oss2.exceptions import ClientError
  from airflow.exceptions import AirflowException
  from airflow.hooks.base import BaseHook
label_desc: Use image node_id 16 for calling the OSSHook obj's underlying member method code with example usage: obj.key_exist(bucket_name, key) and returns: self