class_docstr: Create or update a function in Google Cloud Functions.
  
  .. seealso::
      For more information on how to use this operator, take a look at the guide:
      :ref:`howto/operator:CloudFunctionDeployFunctionOperator`
  
  :param location: Google Cloud region where the function should be created.
  :param body: Body of the Cloud Functions definition. The body must be a
      Cloud Functions dictionary as described in:
      https://cloud.google.com/functions/docs/reference/rest/v1/projects.locations.functions
      . Different API versions require different variants of the Cloud Functions
      dictionary.
  :param project_id: (Optional) Google Cloud project ID where the function
      should be created.
  :param gcp_conn_id: (Optional) The connection ID used to connect to Google Cloud.
      Default 'google_cloud_default'.
  :param api_version: (Optional) API version used (for example v1 - default -  or
      v1beta1).
  :param zip_path: Path to zip file containing source code of the function. If the path
      is set, the sourceUploadUrl should not be specified in the body or it should
      be empty. Then the zip file will be uploaded using the upload URL generated
      via generateUploadUrl from the Cloud Functions API.
  :param validate_body: If set to False, body validation is not performed.
  :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: ["Create","or","update","a","function","in","Google","Cloud","Functions",".","..","seealso",":",":","For","more","information","on","how","to","use","this","operator",",","take","a","look","at","the","guide",":",":","ref",":","`","howto\/operator",":","CloudFunctionDeployFunctionOperator","`",":","param","location",":","Google","Cloud","region","where","the","function","should","be","created",".",":","param","body",":","Body","of","the","Cloud","Functions","definition",".","The","body","must","be","a","Cloud","Functions","dictionary","as","described","in",":","https",":","\/\/cloud.google.com\/functions\/docs\/reference\/rest\/v1\/projects.locations.functions",".","Different","API","versions","require","different","variants","of","the","Cloud","Functions","dictionary",".",":","param","project_id",":","(","Optional",")","Google","Cloud","project","ID","where","the","function","should","be","created",".",":","param","gcp_conn_id",":","(","Optional",")","The","connection","ID","used","to","connect","to","Google","Cloud",".","Default","'google_cloud_default","'",".",":","param","api_version",":","(","Optional",")","API","version","used","(","for","example","v1","-","default","-","or","v1beta1",")",".",":","param","zip_path",":","Path","to","zip","file","containing","source","code","of","the","function",".","If","the","path","is","set",",","the","sourceUploadUrl","should","not","be","specified","in","the","body","or","it","should","be","empty",".","Then","the","zip","file","will","be","uploaded","using","the","upload","URL","generated","via","generateUploadUrl","from","the","Cloud","Functions","API",".",":","param","validate_body",":","If","set","to","False",",","body","validation","is","not","performed",".",":","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",")","."]
code: def _set_airflow_version_label(self) -> None:
      if "labels" not in self.body.keys():
          self.body["labels"] = {}
      self.body["labels"].update(
          {
              "airflow-version": "v"
              + version.replace(".", "-").replace("+", "-")
          }
      )
  
imports: from __future__ import annotations
  import re
  from typing import TYPE_CHECKING, Any, Sequence
  from googleapiclient.errors import HttpError
  from airflow.exceptions import AirflowException
  from airflow.providers.google.cloud.hooks.functions import CloudFunctionsHook
  from airflow.providers.google.cloud.links.cloud_functions import CloudFunctionsDetailsLink, CloudFunctionsListLink
  from airflow.providers.google.cloud.operators.cloud_base import GoogleCloudBaseOperator
  from airflow.providers.google.cloud.utils.field_validator import GcpBodyFieldValidator, GcpFieldValidationException
  from airflow.version import version
label_desc: Use image node_id 8 for calling the CloudFunctionDeployFunctionOperator obj's underlying member method code with example usage: obj._set_airflow_version_label() without return types