// API facts derived from Prometheus v3.14.0 (Apache-2.0); see THIRD_PARTY_NOTICES.md.
// Generated by tools/generate-tables.py using the unmodified reference parser.
///|
pub(all) struct FunctionSignature {
name : String
arguments : Array[QueryType]
min_args : Int
max_args : Int?
result : QueryType
experimental : Bool
} derive(Debug, Eq, ToJson)
///|
fn function_signature(name : String) -> FunctionSignature? {
match name {
"abs" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"absent" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"absent_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"acos" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"acosh" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"asin" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"asinh" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"atan" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"atanh" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"avg_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"ceil" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"changes" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"clamp" =>
Some({
name,
arguments: [InstantVector, Scalar, Scalar],
min_args: 3,
max_args: Some(3),
result: InstantVector,
experimental: false,
})
"clamp_max" =>
Some({
name,
arguments: [InstantVector, Scalar],
min_args: 2,
max_args: Some(2),
result: InstantVector,
experimental: false,
})
"clamp_min" =>
Some({
name,
arguments: [InstantVector, Scalar],
min_args: 2,
max_args: Some(2),
result: InstantVector,
experimental: false,
})
"cos" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"cosh" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"count_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"day_of_month" =>
Some({
name,
arguments: [InstantVector],
min_args: 0,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"day_of_week" =>
Some({
name,
arguments: [InstantVector],
min_args: 0,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"day_of_year" =>
Some({
name,
arguments: [InstantVector],
min_args: 0,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"days_in_month" =>
Some({
name,
arguments: [InstantVector],
min_args: 0,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"deg" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"delta" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"deriv" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"double_exponential_smoothing" =>
Some({
name,
arguments: [RangeVector, Scalar, Scalar],
min_args: 3,
max_args: Some(3),
result: InstantVector,
experimental: true,
})
"end" =>
Some({
name,
arguments: [],
min_args: 0,
max_args: Some(0),
result: Scalar,
experimental: true,
})
"exp" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"first_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"floor" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"histogram_avg" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"histogram_count" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"histogram_fraction" =>
Some({
name,
arguments: [Scalar, Scalar, InstantVector],
min_args: 3,
max_args: Some(3),
result: InstantVector,
experimental: false,
})
"histogram_quantile" =>
Some({
name,
arguments: [Scalar, InstantVector],
min_args: 2,
max_args: Some(2),
result: InstantVector,
experimental: false,
})
"histogram_quantiles" =>
Some({
name,
arguments: [InstantVector, StringValue, Scalar, Scalar],
min_args: 3,
max_args: Some(12),
result: InstantVector,
experimental: true,
})
"histogram_stddev" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"histogram_stdvar" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"histogram_sum" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"hour" =>
Some({
name,
arguments: [InstantVector],
min_args: 0,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"idelta" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"increase" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"info" =>
Some({
name,
arguments: [InstantVector, InstantVector],
min_args: 1,
max_args: Some(2),
result: InstantVector,
experimental: true,
})
"irate" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"label_join" =>
Some({
name,
arguments: [InstantVector, StringValue, StringValue, StringValue],
min_args: 3,
max_args: None,
result: InstantVector,
experimental: false,
})
"label_replace" =>
Some({
name,
arguments: [
InstantVector,
StringValue,
StringValue,
StringValue,
StringValue,
],
min_args: 5,
max_args: Some(5),
result: InstantVector,
experimental: false,
})
"last_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"ln" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"log10" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"log2" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"mad_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: true,
})
"max_of" =>
Some({
name,
arguments: [Scalar, Scalar],
min_args: 2,
max_args: Some(2),
result: Scalar,
experimental: true,
})
"max_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"min_of" =>
Some({
name,
arguments: [Scalar, Scalar],
min_args: 2,
max_args: Some(2),
result: Scalar,
experimental: true,
})
"min_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"minute" =>
Some({
name,
arguments: [InstantVector],
min_args: 0,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"month" =>
Some({
name,
arguments: [InstantVector],
min_args: 0,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"pi" =>
Some({
name,
arguments: [],
min_args: 0,
max_args: Some(0),
result: Scalar,
experimental: false,
})
"predict_linear" =>
Some({
name,
arguments: [RangeVector, Scalar],
min_args: 2,
max_args: Some(2),
result: InstantVector,
experimental: false,
})
"present_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"quantile_over_time" =>
Some({
name,
arguments: [Scalar, RangeVector],
min_args: 2,
max_args: Some(2),
result: InstantVector,
experimental: false,
})
"rad" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"range" =>
Some({
name,
arguments: [],
min_args: 0,
max_args: Some(0),
result: Scalar,
experimental: true,
})
"rate" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"resets" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"round" =>
Some({
name,
arguments: [InstantVector, Scalar],
min_args: 1,
max_args: Some(2),
result: InstantVector,
experimental: false,
})
"scalar" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: Scalar,
experimental: false,
})
"sgn" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"sin" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"sinh" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"sort" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"sort_by_label" =>
Some({
name,
arguments: [InstantVector, StringValue],
min_args: 1,
max_args: None,
result: InstantVector,
experimental: true,
})
"sort_by_label_desc" =>
Some({
name,
arguments: [InstantVector, StringValue],
min_args: 1,
max_args: None,
result: InstantVector,
experimental: true,
})
"sort_desc" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"sqrt" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"start" =>
Some({
name,
arguments: [],
min_args: 0,
max_args: Some(0),
result: Scalar,
experimental: true,
})
"start_timestamp" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: true,
})
"stddev_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"stdvar_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"step" =>
Some({
name,
arguments: [],
min_args: 0,
max_args: Some(0),
result: Scalar,
experimental: true,
})
"sum_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"tan" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"tanh" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"time" =>
Some({
name,
arguments: [],
min_args: 0,
max_args: Some(0),
result: Scalar,
experimental: false,
})
"timestamp" =>
Some({
name,
arguments: [InstantVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"ts_of_first_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: true,
})
"ts_of_last_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: true,
})
"ts_of_max_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: true,
})
"ts_of_min_over_time" =>
Some({
name,
arguments: [RangeVector],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: true,
})
"vector" =>
Some({
name,
arguments: [Scalar],
min_args: 1,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
"year" =>
Some({
name,
arguments: [InstantVector],
min_args: 0,
max_args: Some(1),
result: InstantVector,
experimental: false,
})
_ => None
}
}
///|
pub fn function_signatures() -> Array[FunctionSignature] {
[
"abs", "absent", "absent_over_time", "acos", "acosh", "asin", "asinh", "atan",
"atanh", "avg_over_time", "ceil", "changes", "clamp", "clamp_max", "clamp_min",
"cos", "cosh", "count_over_time", "day_of_month", "day_of_week", "day_of_year",
"days_in_month", "deg", "delta", "deriv", "double_exponential_smoothing", "end",
"exp", "first_over_time", "floor", "histogram_avg", "histogram_count", "histogram_fraction",
"histogram_quantile", "histogram_quantiles", "histogram_stddev", "histogram_stdvar",
"histogram_sum", "hour", "idelta", "increase", "info", "irate", "label_join",
"label_replace", "last_over_time", "ln", "log10", "log2", "mad_over_time", "max_of",
"max_over_time", "min_of", "min_over_time", "minute", "month", "pi", "predict_linear",
"present_over_time", "quantile_over_time", "rad", "range", "rate", "resets",
"round", "scalar", "sgn", "sin", "sinh", "sort", "sort_by_label", "sort_by_label_desc",
"sort_desc", "sqrt", "start", "start_timestamp", "stddev_over_time", "stdvar_over_time",
"step", "sum_over_time", "tan", "tanh", "time", "timestamp", "ts_of_first_over_time",
"ts_of_last_over_time", "ts_of_max_over_time", "ts_of_min_over_time", "vector",
"year",
].map(name => function_signature(name).unwrap())
}