code: func NewSummaryVec(opts SummaryOpts, labelNames []string) *SummaryVec {
  	for _, ln := range labelNames {
  		if ln == quantileLabel {
  			panic(errQuantileLabelNotAllowed)
  		}
  	}
  	desc := NewDesc(
  		BuildFQName(opts.Namespace, opts.Subsystem, opts.Name),
  		opts.Help,
  		labelNames,
  		opts.ConstLabels,
  	)
  	return &SummaryVec{
  		metricVec: newMetricVec(desc, func(lvs ...string) Metric {
  			return newSummary(desc, opts, lvs...)
  		}),
  	}
  }
docs: // NewSummaryVec creates a new SummaryVec based on the provided SummaryOpts and
  // partitioned by the given label names.
  //
  // Due to the way a Summary is represented in the Prometheus text format and how
  // it is handled by the Prometheus server internally, “quantile” is an illegal
  // label name. NewSummaryVec will panic if this label name is used.