def get_forecast_dates(all_obs, fs_from):
    """
    Return the dates for which forecasts should be generated.

    :param all_obs: The available observations.
    :type all_obs: List[Dict[str, Any]]
    :param fs_from: The earliest potential forecasting date; if this is
        ``None`` then only the most recent forecasting date will be returned.
    :type fs_from: Optional[datetime.datetime]
    """
    newest_obs = max(obs['date'] for obs in all_obs)
    if fs_from is None:
        return [newest_obs]
    return sorted(obs['date'] for obs in all_obs
                  if obs['date'] >= fs_from)