code: func ParseName(v string) (wn Name, err error) {
  	base := strings.TrimSuffix(v, ".whl")
  	if len(base) == len(v) {
  		err = errors.New("missing .whl suffix")
  		return
  	}
  
  	skip := 0
  	switch parts := strings.Split(base, "-"); len(parts) {
  	case 6:
  		// Extra part: build tag.
  		wn.BuildTag = parts[2]
  		skip = 1
  		fallthrough
  
  	case 5:
  		wn.Distribution = parts[0]
  		wn.Version = parts[1]
  		wn.PythonTag = parts[2+skip]
  		wn.ABITag = parts[3+skip]
  		wn.PlatformTag = parts[4+skip]
  
  	default:
  		err = errors.Reason("unknown number of segments (%d)", len(parts)).Err()
  		return
  	}
  	return
  }
docs: // ParseName parses a wheel Name from its filename.