class_docstr: Base class representing a time interval.
class_docstr_tok: ["Base","class","representing","a","time","interval","."]
code: def process_bind_param(self, value, dialect):
      if isinstance(value, tuple(self.attr_keys)):
          attrs = {
              key: getattr(value, key)
              for key in self.attr_keys[type(value)]
          }
          return json.dumps(
              {"type": type(value).__name__, "attrs": attrs}
          )
      return json.dumps(value)
  
imports: from __future__ import annotations
  import contextlib
  import copy
  import datetime
  import json
  import logging
  from typing import TYPE_CHECKING, Any, Generator, Iterable, overload
  from dateutil import relativedelta
  from sqlalchemy import TIMESTAMP, PickleType, event, nullsfirst, tuple_
  from sqlalchemy.dialects import mysql
  from sqlalchemy.types import JSON, Text, TypeDecorator
  from airflow.configuration import conf
  from airflow.serialization.enums import Encoding
  from airflow.utils.timezone import make_naive, utc
label_desc: Use image node_id 1 for calling the Interval obj's underlying member method code with example usage: obj.process_bind_param(value, dialect) and returns: json, json