code: def compare_datetimes(d1, d2):
    
    if d1.tzinfo is None or d1.tzinfo.utcoffset(d1) is None:
      d1 = d1.replace(tzinfo=pytz.UTC)
    if d2.tzinfo is None or d2.tzinfo.utcoffset(d2) is None:
      d2 = d2.replace(tzinfo=pytz.UTC)
    if d1 < d2:
      return -1
    elif d1 > d2:
      return 1
    return 0
docs: Compares two datetimes safely, whether they are timezone-naive or timezone-aware.
  
    If either datetime is naive it is converted to an aware datetime assuming UTC.
  
    Args:
      d1: first datetime.
      d2: second datetime.
  
    Returns:
      -1 if d1 < d2, 0 if they are the same, or +1 is d1 > d2.