docs: def parse_value(cls, itype, value):
          """Parse the input value."""
  
          parsed = None
          if itype == "date":
              m = RE_DATE.match(value)
              if m:
                  year = int(m.group('year'), 10)
                  month = int(m.group('month'), 10)
                  day = int(m.group('day'), 10)
                  if cls.validate_year(year) and cls.validate_month(month) and cls.validate_day(year, month, day):
                      parsed = (year, month, day)
          elif itype == "month":
              m = RE_MONTH.match(value)
              if m:
                  year = int(m.group('year'), 10)
                  month = int(m.group('month'), 10)
                  if cls.validate_year(year) and cls.validate_month(month):
                      parsed = (year, month)
          elif itype == "week":
              m = RE_WEEK.match(value)
              if m:
                  year = int(m.group('year'), 10)
                  week = int(m.group('week'), 10)
                  if cls.validate_year(year) and cls.validate_week(year, week):
                      parsed = (year, week)
          elif itype == "time":
              m = RE_TIME.match(value)
              if m:
                  hour = int(m.group('hour'), 10)
                  minutes = int(m.group('minutes'), 10)
                  if cls.validate_hour(hour) and cls.validate_minutes(minutes):
                      parsed = (hour, minutes)
          elif itype == "datetime-local":
              m = RE_DATETIME.match(value)
              if m:
                  year = int(m.group('year'), 10)
                  month = int(m.group('month'), 10)
                  day = int(m.group('day'), 10)
                  hour = int(m.group('hour'), 10)
                  minutes = int(m.group('minutes'), 10)
                  if (
                      cls.validate_year(year) and cls.validate_month(month) and cls.validate_day(year, month, day) and
                      cls.validate_hour(hour) and cls.validate_minutes(minutes)
                  ):
                      parsed = (year, month, day, hour, minutes)
          elif itype in ("number", "range"):
              m = RE_NUM.match(value)
              if m:
                  parsed = float(m.group('value'))
          return parsed