class_docstr: Model to track dynamic task-mapping information.
  
  This is currently only populated by an upstream TaskInstance pushing an
  XCom that's pulled by a downstream for mapping purposes.
code: def variant(self) -> TaskMapVariant:
      if self.keys is None:
          return TaskMapVariant.LIST
      return TaskMapVariant.DICT
  
file_path: airflow/airflow/models/taskmap.py
imports: from __future__ import annotations
  import collections.abc
  import enum
  from typing import TYPE_CHECKING, Any, Collection
  from sqlalchemy import CheckConstraint, Column, ForeignKeyConstraint, Integer, String
  from airflow.models.base import COLLATION_ARGS, ID_LEN, TaskInstanceDependencies
  from airflow.utils.sqlalchemy import ExtendedJSON
label_desc: Use image node_id 3 for calling the TaskMap obj's underlying member method code with example usage: obj.variant() and returns: TaskMapVariant, TaskMapVariant