class_docstr: level infrastructure is created by executor, and then shared to strategies on the same level
docstr: reset trade calendar manager
docstr_tok: ["reset","trade","calendar","manager"]
code: def reset_cal(
      self,
      freq: str,
      start_time: Union[str, pd.Timestamp, None],
      end_time: Union[str, pd.Timestamp, None],
  ) -> None:
      """reset trade calendar manager"""
      if self.has("trade_calendar"):
          self.get("trade_calendar").reset(
              freq, start_time=start_time, end_time=end_time
          )
      else:
          self.reset_infra(
              trade_calendar=TradeCalendarManager(
                  freq,
                  start_time=start_time,
                  end_time=end_time,
                  level_infra=self,
              ),
          )
  
imports: from __future__ import annotations
  from abc import abstractmethod
  from typing import Any, Set, Tuple, TYPE_CHECKING, Union
  import numpy
  from qlib.utils.time import epsilon_change
  import warnings
  import pandas
  from ..data.data import Cal
label_desc: Use image node_id 2 for calling the LevelInfrastructure obj's underlying member method code with example usage: obj.reset_cal(freq, start_time, end_time) without return types