code: def serialize(o: object) -> tuple[U, str, int, bool]:
      """Encode a Pendulum Timezone for serialization.
  
      Airflow only supports timezone objects that implements Pendulum's Timezone
      interface. We try to keep as much information as possible to make conversion
      round-tripping possible (see ``decode_timezone``). We need to special-case
      UTC; Pendulum implements it as a FixedTimezone (i.e. it gets encoded as
      0 without the special case), but passing 0 into ``pendulum.timezone`` does
      not give us UTC (but ``+00:00``).
      """
      from pendulum.tz.timezone import FixedTimezone
  
      name = qualname(o)
  
      if isinstance(o, FixedTimezone):
          if o.offset == 0:
              return "UTC", name, __version__, True
          return o.offset, name, __version__, True
  
      tz_name = _get_tzinfo_name(cast(datetime.tzinfo, o))
      if tz_name is not None:
          return tz_name, name, __version__, True
  
      if cast(datetime.tzinfo, o).utcoffset(None) == datetime.timedelta(
          0
      ):
          return "UTC", qualname(FixedTimezone), __version__, True
  
      return "", "", 0, False
  
file_path: airflow/airflow/serialization/serializers/timezone.py
imports: from __future__ import annotations
  import datetime
  import sys
  from typing import TYPE_CHECKING, Any, cast
  from airflow.utils.module_loading import qualname
label_desc: Use image node_id 1 for calling a global function with example usage: serialize(o) and returns: str,  str,  int,  False, o,  name,  __version__,  True, tz_name,  name,  __version__,  True, str,  qualname,  __version__,  True, str,  name,  __version__,  True