func NewContextualGaugeVec(opts prometheus.GaugeOpts, labelNames []string) *ContextualGaugeVec {
	opts.Namespace = Namespace
	if len(ContextLabelNames) > 0 {
		labelNames = append(ContextLabelNames, labelNames...)
	}
	return &ContextualGaugeVec{prometheus.NewGaugeVec(opts, labelNames)}
}
NewContextualGaugeVec returns a new ContextualGaugeVec and sets its namespace.
package metrics
import (
	"context"
	"github.com/prometheus/client_golang/prometheus"
)
func NewGauge(opts prometheus.GaugeOpts) prometheus.Gauge {
	opts.Namespace = Namespace
	return prometheus.NewGauge(opts)
}
func MustRegisterGauge(opts prometheus.GaugeOpts) prometheus.Gauge {
	metric := NewGauge(opts)
	MustRegister(metric)
	return metric
}
func NewGaugeFunc(opts prometheus.GaugeOpts, function func() float64) prometheus.GaugeFunc {
	opts.Namespace = Namespace
	return prometheus.NewGaugeFunc(opts, function)
}
func MustRegisterGaugeFunc(opts prometheus.GaugeOpts, function func() float64) prometheus.GaugeFunc {
	metric := NewGaugeFunc(opts, function)
	MustRegister(metric)
	return metric
}
func NewGaugeVec(opts prometheus.GaugeOpts, labelNames []string) *prometheus.GaugeVec {
	opts.Namespace = Namespace
	return prometheus.NewGaugeVec(opts, labelNames)
}
func MustRegisterGaugeVec(opts prometheus.GaugeOpts, labelNames []string) *prometheus.GaugeVec {
	metric := NewGaugeVec(opts, labelNames)
	MustRegister(metric)
	return metric
}
type ContextualGaugeVec struct {
	*prometheus.GaugeVec
}
func (c ContextualGaugeVec) With(ctx context.Context, labels prometheus.Labels) prometheus.Gauge {
	if LabelsFromContext == nil {
		return c.GaugeVec.With(labels)
	}
	return c.GaugeVec.MustCurryWith(LabelsFromContext(ctx)).With(labels)
}
func (c ContextualGaugeVec) WithLabelValues(ctx context.Context, lvs ...string) prometheus.Gauge {
	if len(ContextLabelNames) == 0 {
		return c.GaugeVec.WithLabelValues(lvs...)
	}
	return c.GaugeVec.MustCurryWith(LabelsFromContext(ctx)).WithLabelValues(lvs...)
}