docs: def from_ep_string(cls, ep_string, location):
          """Initalize from an EnergyPlus string of a SizingPeriod:DesignDay.
  
          args:
              ep_string: A full string representing a SizingPeriod:DesignDay.
          """
          # format the object into a list of properties
          ep_string = ep_string.strip()
          if '\n' in ep_string:
              ep_lines = ep_string.split('\n')
          else:
              ep_lines = ep_string.split('\r')
          lines = [l.split('!')[0].strip().replace(',', '') for l in ep_lines]
  
          # check to be sure that we have a valid ddy object
          assert len(lines) == 27 or len(lines) == 26, "Number " \
              "of lines of text [{}] does not correspond" \
              " to an EP Design Day [26 or 27]".format(
                  len(lines))
          lines[-1] = lines[-1].split(';')[0]
  
          # extract primary properties
          name = lines[1]
          day_type = lines[4]
  
          # extract dry bulb temperatures
          dry_bulb_condition = DryBulbCondition(
              float(lines[5]), float(lines[6]), lines[7], lines[8])
  
          # extract humidity conditions
          h_type = lines[9]
          h_val = 0 if lines[10] == '' else float(lines[10])
          if h_type == 'HumidityRatio':
              h_val = float(lines[12])
          elif h_type == 'Enthalpy':
              h_val = float(lines[13])
          humidity_condition = HumidityCondition(
              h_type, h_val, float(lines[15]), lines[11])
  
          # extract wind conditions
          wind_condition = WindCondition(
              float(lines[16]), float(lines[17]), lines[18], lines[19])
  
          # extract the sky conditions
          sky_model = lines[21]
          if sky_model == 'ASHRAEClearSky':
              sky_condition = OriginalClearSkyCondition(
                  int(lines[2]), int(lines[3]), float(lines[26]), lines[20])
          elif sky_model == 'ASHRAETau':
              sky_condition = RevisedClearSkyCondition(
                  int(lines[2]), int(lines[3]), float(lines[24]),
                  float(lines[25]), lines[20])
          else:
              sky_condition = SkyCondition(
                  sky_model, int(lines[2]), int(lines[3]), lines[20])
          if sky_model == 'Schedule':
              sky_condition.beam_shced = lines[22]
              sky_condition.diff_shced = lines[23]
  
          return cls(name, day_type, location, dry_bulb_condition,
                     humidity_condition, wind_condition, sky_condition)