code: def get_month_start_end(dt, first_day=None, last_day=None):
      """
      The first and last day of the month for the specified date.
  
      Parameters
      ----------
      dt: datetime
      first_day: datetime
      last_day: datetime
  
      Returns
      -------
      datetime, datetime
  
      """
      month_range = calendar.monthrange(dt.year, dt.month)
  
      if first_day:
          month_start = first_day
      else:
          month_start = pd.to_datetime(
              datetime(dt.year, dt.month, 1, 0, 0, 0, 0), utc=True
          )
  
      if last_day:
          month_end = last_day
      else:
          month_end = pd.to_datetime(
              datetime(dt.year, dt.month, month_range[1], 23, 59, 0, 0),
              utc=True,
          )
  
          if month_end > pd.Timestamp.utcnow():
              month_end = pd.Timestamp.utcnow().floor("1D")
  
      return month_start, month_end
  
file_path: catalyst/catalyst/exchange/utils/datetime_utils.py
imports: import calendar
  import math
  import re
  from datetime import datetime, timedelta, date
  import pandas
  import pytz
  from catalyst.exchange.exchange_errors import InvalidHistoryFrequencyError, InvalidHistoryFrequencyAlias
label_desc: Use image node_id 8 for calling a global function with example usage: get_month_start_end(dt, first_day, last_day) and returns: month_start,  month_end