class_docstr: Watches for a glue job, triggers when it finishes.
  
  :param job_name: glue job name
  :param run_id: the ID of the specific run to watch for that job
  :param verbose: whether to print the job's logs in airflow logs or not
  :param aws_conn_id: The Airflow connection used for AWS credentials.
code: def serialize(self) -> tuple[str, dict[str, Any]]:
      return (
          # dynamically generate the fully qualified name of the class
          self.__class__.__module__ + "." + self.__class__.__qualname__,
          {
              "job_name": self.job_name,
              "run_id": self.run_id,
              "verbose": str(self.verbose),
              "aws_conn_id": self.aws_conn_id,
              "job_poll_interval": self.job_poll_interval,
          },
      )
  
file_path: airflow/airflow/providers/amazon/aws/triggers/glue.py
imports: from __future__ import annotations
  import asyncio
  from functools import cached_property
  from typing import Any, AsyncIterator
  from airflow.providers.amazon.aws.hooks.glue import GlueJobHook
  from airflow.providers.amazon.aws.hooks.glue_catalog import GlueCatalogHook
  from airflow.triggers.base import BaseTrigger, TriggerEvent
label_desc: Use image node_id 2 for calling the GlueJobCompleteTrigger obj's underlying member method code with example usage: obj.serialize() and returns: unknown,  dict