code: def remove_task_decorator(
      python_source: str, task_decorator_name: str
  ) -> str:
      """
      Remove @task.kubernetes or similar as well as @setup and @teardown.
  
      :param python_source: python source code
      :param task_decorator_name: the task decorator name
      """
  
      def _remove_task_decorator(py_source, decorator_name):
          if decorator_name not in py_source:
              return python_source
          split = python_source.split(decorator_name)
          before_decorator, after_decorator = split[0], split[1]
          if after_decorator[0] == "(":
              after_decorator = _balance_parens(after_decorator)
          if after_decorator[0] == "\n":
              after_decorator = after_decorator[1:]
          return before_decorator + after_decorator
  
      decorators = ["@setup", "@teardown", task_decorator_name]
      for decorator in decorators:
          python_source = _remove_task_decorator(
              python_source, decorator
          )
      return python_source
  
file_path: airflow/airflow/providers/cncf/kubernetes/python_kubernetes_script.py
imports: from __future__ import annotations
  import os
  from collections import deque
  import jinja2
  from jinja2 import select_autoescape
label_desc: Use image node_id 2 for calling a global function with example usage: remove_task_decorator(python_source, task_decorator_name) and returns: python_source, unknown, python_source