func (o *GaugeOpts) annotateStabilityLevel() {
	o.annotateOnce.Do(func() {
		o.Help = fmt.Sprintf("[%v] %v", o.StabilityLevel, o.Help)
	})
}
annotateStabilityLevel annotates help description on the metric description with the stability level
of the metric
package metrics
import (
	"fmt"
	"strings"
	"sync"
	"time"
	"github.com/prometheus/client_golang/prometheus"
	"k8s.io/apimachinery/pkg/util/sets"
)
var (
	labelValueAllowLists = map[string]*MetricLabelAllowList{}
	allowListLock        sync.RWMutex
)
type KubeOpts struct {
	Namespace            string
	Subsystem            string
	Name                 string
	Help                 string
	ConstLabels          map[string]string
	DeprecatedVersion    string
	deprecateOnce        sync.Once
	annotateOnce         sync.Once
	StabilityLevel       StabilityLevel
	LabelValueAllowLists *MetricLabelAllowList
}
func BuildFQName(namespace, subsystem, name string) string {
	return prometheus.BuildFQName(namespace, subsystem, name)
}
type StabilityLevel string
const (
	ALPHA StabilityLevel = "ALPHA"
	STABLE StabilityLevel = "STABLE"
)
func (sl *StabilityLevel) setDefaults() {
	switch *sl {
	case "":
		*sl = ALPHA
	default:
	}
}
type CounterOpts KubeOpts
func (o *CounterOpts) markDeprecated() {
	o.deprecateOnce.Do(func() {
		o.Help = fmt.Sprintf("(Deprecated since %v) %v", o.DeprecatedVersion, o.Help)
	})
}
func (o *CounterOpts) annotateStabilityLevel() {
	o.annotateOnce.Do(func() {
		o.Help = fmt.Sprintf("[%v] %v", o.StabilityLevel, o.Help)
	})
}
func (o *CounterOpts) toPromCounterOpts() prometheus.CounterOpts {
	return prometheus.CounterOpts{
		Namespace:   o.Namespace,
		Subsystem:   o.Subsystem,
		Name:        o.Name,
		Help:        o.Help,
		ConstLabels: o.ConstLabels,
	}
}
type GaugeOpts KubeOpts
func (o *GaugeOpts) markDeprecated() {
	o.deprecateOnce.Do(func() {
		o.Help = fmt.Sprintf("(Deprecated since %v) %v", o.DeprecatedVersion, o.Help)
	})
}