docstr: The ibovespa index is updated every four months.
  Therefore, we will represent each time period as 2003_1Q
  which means 2003 first four mount period (Jan, Feb, Mar, Apr)
docstr_tok: ["The","ibovespa","index","is","updated","every","four","months",".","Therefore",",","we","will","represent","each","time","period","as","2003_1Q","which","means","2003","first","four","mount","period","(","Jan",",","Feb",",","Mar",",","Apr",")"]
code: def get_four_month_period(self):
      """
      The ibovespa index is updated every four months.
      Therefore, we will represent each time period as 2003_1Q
      which means 2003 first four mount period (Jan, Feb, Mar, Apr)
      """
      four_months_period = ["1Q", "2Q", "3Q"]
      init_year = 2003
      now = datetime.datetime.now()
      current_year = now.year
      current_month = now.month
      for year in [
          item for item in range(init_year, current_year)
      ]:  # pylint: disable=R1721
          for el in four_months_period:
              self.years_4_month_periods.append(str(year) + "_" + el)
      # For current year the logic must be a little different
      current_4_month_period = self.get_current_4_month_period(
          current_month
      )
      for i in range(int(current_4_month_period[0])):
          self.years_4_month_periods.append(
              str(current_year) + "_" + str(i + 1) + "Q"
          )
      return self.years_4_month_periods
  
imports: from functools import partial
  import sys
  from pathlib import Path
  import datetime
  import fire
  import pandas
  from tqdm import tqdm
  from loguru import logger
  from data_collector.index import IndexBase
  from data_collector.utils import get_instruments
label_desc: Use image node_id 4 for calling the IBOVIndex obj's underlying member method code with example usage: obj.get_four_month_period() and returns: self