docstr: This method will be call with following way
  
  The outer strategy give a decision with with `TradeRange`
  The decision will be checked by the inner decision.
  inner decision will pass its trade_calendar as parameter when getting the trading range
  - The framework's step is integer-index based.
  
  Parameters
  ----------
  trade_calendar : TradeCalendarManager
      the trade_calendar is from inner strategy
  
  Returns
  -------
  Tuple[int, int]:
      the start index and end index which are tradable
  
  Raises
  ------
  NotImplementedError:
      Exceptions are raised when no range limitation
code: def __call__(
      self, trade_calendar: TradeCalendarManager
  ) -> Tuple[int, int]:
      """
      This method will be call with following way
  
      The outer strategy give a decision with with `TradeRange`
      The decision will be checked by the inner decision.
      inner decision will pass its trade_calendar as parameter when getting the trading range
      - The framework's step is integer-index based.
  
      Parameters
      ----------
      trade_calendar : TradeCalendarManager
          the trade_calendar is from inner strategy
  
      Returns
      -------
      Tuple[int, int]:
          the start index and end index which are tradable
  
      Raises
      ------
      NotImplementedError:
          Exceptions are raised when no range limitation
      """
      raise NotImplementedError(
          f"Please implement the `__call__` method"
      )
  
imports: from __future__ import annotations
  from abc import abstractmethod
  from datetime import time
  from enum import IntEnum
  from typing import TYPE_CHECKING, Any, ClassVar, Generic, List, Optional, Tuple, TypeVar, Union, cast
  from qlib.backtest.utils import TradeCalendarManager
  from qlib.data.data import Cal
  from qlib.log import get_module_logger
  from qlib.utils.time import concat_date_time, epsilon_change
  from dataclasses import dataclass
  import numpy
  import pandas
label_desc: Use image node_id 1 for calling the TradeRange obj's underlying member method code with example usage: obj.__call__(trade_calendar) without return types