code: def __init__(
      self,
      is_metadata: bool,
      impl: DefaultImpl,
      const: ForeignKeyConstraint,
  ) -> None:
      self._is_metadata = is_metadata
  
      self.impl = impl
      self.const = const
  
      self.name = sqla_compat.constraint_name_or_none(const.name)
  
      (
          self.source_schema,
          self.source_table,
          self.source_columns,
          self.target_schema,
          self.target_table,
          self.target_columns,
          onupdate,
          ondelete,
          deferrable,
          initially,
      ) = sqla_compat._fk_spec(const)
  
      self._sig: Tuple[Any, ...] = (
          self.source_schema,
          self.source_table,
          tuple(self.source_columns),
          self.target_schema,
          self.target_table,
          tuple(self.target_columns),
      ) + (
          (
              None
              if onupdate.lower() == "no action"
              else onupdate.lower()
          )
          if onupdate
          else None,
          (
              None
              if ondelete.lower() == "no action"
              else ondelete.lower()
          )
          if ondelete
          else None,
          # convert initially + deferrable into one three-state value
          "initially_deferrable"
          if initially and initially.lower() == "deferred"
          else "deferrable"
          if deferrable
          else "not deferrable",
      )
  
imports: from __future__ import annotations
  from typing import Any
  from typing import ClassVar
  from typing import Dict
  from typing import Generic
  from typing import NamedTuple
  from typing import Optional
  from typing import Sequence
  from typing import Tuple
  from typing import Type
  from typing import TYPE_CHECKING
  from typing import TypeVar
  from typing import Union
  from sqlalchemy.sql.schema import Constraint
  from sqlalchemy.sql.schema import ForeignKeyConstraint
  from sqlalchemy.sql.schema import Index
  from sqlalchemy.sql.schema import UniqueConstraint
  from typing_extensions import TypeGuard
  from ..None import util
  from ..util import sqla_compat
label_desc: Use image node_id 2 to create a new _fk_constraint_sig object from inherited base classes: _constraint_sig with example: obj = _fk_constraint_sig(is_metadata, impl, const)