code: def augment_calendar_df(df, freq="H"):
      """
      > * Q - [month]
      > * M - [month]
      > * W - [Day of month, week of year]
      > * D - [Day of week, day of month, day of year]
      > * B - [Day of week, day of month, day of year]
      > * H - [Hour of day, day of week, day of month, day of year]
      > * T - [Minute of hour*, hour of day, day of week, day of month, day of year]
      > * S - [Second of minute, minute of hour, hour of day, day of week, day of month, day of year]
      *minute returns a number from 0-3 corresponding to the 15 minute period it falls into.
      """
      df = df.copy()
  
      freq_map = {
          "Q": ["month"],
          "M": ["month"],
          "MS": ["month"],
          "W": ["monthday", "yearweek"],
          "D": ["weekday", "monthday", "yearday"],
          "B": ["weekday", "monthday", "yearday"],
          "H": ["dayhour", "weekday", "monthday", "yearday"],
          "T": [
              "hourminute",
              "dayhour",
              "weekday",
              "monthday",
              "yearday",
          ],
          "S": [
              "minutesecond",
              "hourminute",
              "dayhour",
              "weekday",
              "monthday",
              "yearday",
          ],
      }
  
      ds_col = pd.to_datetime(df.ds.values)
      ds_data = np.vstack(
          [
              feat(ds_col)
              for feat in time_features_from_frequency_str(freq)
          ]
      ).transpose(1, 0)
      ds_data = pd.DataFrame(ds_data, columns=freq_map[freq])
  
      return pd.concat([df, ds_data], axis=1), freq_map[freq]
  
imports: import random
  from itertools import chain
  import numpy
  import pandas
  from typing import List
label_desc: Use image node_id 3 for calling a global function with example usage: augment_calendar_df(df, freq) and returns: pd,  freq_map