def get_action_attempt(
      self,
      context: ComponentContextMapping,
      action_spec: entity_lib.ActionSpec,
  ) -> str:
    """Decides the action of an entity.

    This function will be called by the entity with the context obtained from
    `pre_act` from all its components to decide the action of the entity.

    Args:
      context: The context for the action attempt. This is a mapping of
        component name to the information that the component returned in
        `pre_act`.
      action_spec: The action spec for the action attempt.

    Returns:
      The action that the entity is attempting.
    """
    raise NotImplementedError()
Decides the action of an entity.

    This function will be called by the entity with the context obtained from
    `pre_act` from all its components to decide the action of the entity.

    Args:
      context: The context for the action attempt. This is a mapping of
        component name to the information that the component returned in
        `pre_act`.
      action_spec: The action spec for the action attempt.

    Returns:
      The action that the entity is attempting.
    
concordia/typing/entity_component.py