Skip to content

Commit 3d94010

Browse files
authored
Merge pull request #182 from prometheus-erl/name_label_help_types
Types for name, labels, and help inputs
2 parents e328fea + a24e77b commit 3d94010

15 files changed

+162
-116
lines changed

src/metrics/prometheus_boolean.erl

Lines changed: 25 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,10 @@ set(Name, Value) ->
138138
set(default, Name, [], Value).
139139

140140
?DOC(#{equiv => set(default, Name, LabelValues, Value)}).
141-
-spec set(prometheus_metric:name(), prometheus_metric:labels(), prometheus:prometheus_boolean()) ->
142-
ok.
141+
-spec set(Name, LabelValues, Value) -> ok when
142+
Name :: prometheus_metric:name(),
143+
LabelValues :: prometheus_metric:label_values(),
144+
Value :: prometheus:prometheus_boolean().
143145
set(Name, LabelValues, Value) ->
144146
set(default, Name, LabelValues, Value).
145147

@@ -167,7 +169,7 @@ Raises:
167169
-spec set(Registry, Name, LabelValues, Value) -> ok when
168170
Registry :: prometheus_registry:registry(),
169171
Name :: prometheus_metric:name(),
170-
LabelValues :: prometheus_metric:labels(),
172+
LabelValues :: prometheus_metric:label_values(),
171173
Value :: prometheus:prometheus_boolean().
172174
set(Registry, Name, LabelValues, Value) ->
173175
Value1 = prometheus_model_helpers:boolean_value(Value),
@@ -179,7 +181,7 @@ toggle(Name) ->
179181
toggle(default, Name, []).
180182

181183
?DOC(#{equiv => toggle(default, Name, LabelValues)}).
182-
-spec toggle(prometheus_metric:name(), prometheus_metric:labels()) -> ok.
184+
-spec toggle(prometheus_metric:name(), prometheus_metric:label_values()) -> ok.
183185
toggle(Name, LabelValues) ->
184186
toggle(default, Name, LabelValues).
185187

@@ -194,8 +196,10 @@ Raises:
194196
* `{unknown_metric, Registry, Name}` error if boolean with named `Name` can't be found in `Registry`.
195197
* `{invalid_metric_arity, Present, Expected}` error if labels count mismatch.
196198
""").
197-
-spec toggle(prometheus_registry:registry(), prometheus_metric:name(), prometheus_metric:labels()) ->
198-
ok.
199+
-spec toggle(Registry, Name, LabelValues) -> ok when
200+
Registry :: prometheus_registry:registry(),
201+
Name :: prometheus_metric:name(),
202+
LabelValues :: prometheus_metric:label_values().
199203
toggle(Registry, Name, LabelValues) ->
200204
Key = {Registry, Name, LabelValues},
201205
Spec = {?BOOLEAN_POS, 1, 1, 0},
@@ -213,7 +217,7 @@ remove(Name) ->
213217
remove(default, Name, []).
214218

215219
?DOC(#{equiv => remove(default, Name, LabelValues)}).
216-
-spec remove(prometheus_metric:name(), prometheus_metric:labels()) -> boolean().
220+
-spec remove(prometheus_metric:name(), prometheus_metric:label_values()) -> boolean().
217221
remove(Name, LabelValues) ->
218222
remove(default, Name, LabelValues).
219223

@@ -225,8 +229,10 @@ Raises:
225229
* `{unknown_metric, Registry, Name}` error if boolean with name `Name` can't be found in `Registry`.
226230
* `{invalid_metric_arity, Present, Expected}` error if labels count mismatch.
227231
""").
228-
-spec remove(prometheus_registry:registry(), prometheus_metric:name(), prometheus_metric:labels()) ->
229-
boolean().
232+
-spec remove(Registry, Name, LabelValues) -> boolean() when
233+
Registry :: prometheus_registry:registry(),
234+
Name :: prometheus_metric:name(),
235+
LabelValues :: prometheus_metric:label_values().
230236
remove(Registry, Name, LabelValues) ->
231237
prometheus_metric:remove_labels(?TABLE, Registry, Name, LabelValues).
232238

@@ -236,7 +242,7 @@ reset(Name) ->
236242
reset(default, Name, []).
237243

238244
?DOC(#{equiv => reset(default, Name, LabelValues)}).
239-
-spec reset(prometheus_metric:name(), prometheus_metric:labels()) -> boolean().
245+
-spec reset(prometheus_metric:name(), prometheus_metric:label_values()) -> boolean().
240246
reset(Name, LabelValues) ->
241247
reset(default, Name, LabelValues).
242248

@@ -248,8 +254,10 @@ Raises:
248254
* `{unknown_metric, Registry, Name}` error if boolean with name `Name` can't be found in `Registry`.
249255
* `{invalid_metric_arity, Present, Expected}` error if labels count mismatch.
250256
""").
251-
-spec reset(prometheus_registry:registry(), prometheus_metric:name(), prometheus_metric:labels()) ->
252-
boolean().
257+
-spec reset(Registry, Name, LabelValues) -> boolean() when
258+
Registry :: prometheus_registry:registry(),
259+
Name :: prometheus_metric:name(),
260+
LabelValues :: prometheus_metric:label_values().
253261
reset(Registry, Name, LabelValues) ->
254262
prometheus_metric:check_mf_exists(?TABLE, Registry, Name, LabelValues),
255263
ets:update_element(?TABLE, {Registry, Name, LabelValues}, {?BOOLEAN_POS, 0}).
@@ -260,7 +268,7 @@ value(Name) ->
260268
value(default, Name, []).
261269

262270
?DOC(#{equiv => value(default, Name, LabelValues)}).
263-
-spec value(prometheus_metric:name(), prometheus_metric:labels()) -> boolean() | undefined.
271+
-spec value(prometheus_metric:name(), prometheus_metric:label_values()) -> boolean() | undefined.
264272
value(Name, LabelValues) ->
265273
value(default, Name, LabelValues).
266274

@@ -273,8 +281,10 @@ Raises:
273281
* `{unknown_metric, Registry, Name}` error if boolean named `Name` can't be found in `Registry`.
274282
* `{invalid_metric_arity, Present, Expected}` error if labels count mismatch.
275283
""").
276-
-spec value(prometheus_registry:registry(), prometheus_metric:name(), prometheus_metric:labels()) ->
277-
boolean() | undefined.
284+
-spec value(Registry, Name, LabelValues) -> boolean() | undefined when
285+
Registry :: prometheus_registry:registry(),
286+
Name :: prometheus_metric:name(),
287+
LabelValues :: prometheus_metric:label_values().
278288
value(Registry, Name, LabelValues) ->
279289
case ets:lookup(?TABLE, {Registry, Name, LabelValues}) of
280290
[{_Key, 0}] ->

src/metrics/prometheus_counter.erl

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,14 @@ inc(Name) ->
160160
If the second argument is a list, equivalent to [inc(default, Name, LabelValues,
161161
1)](`inc/4`) otherwise equivalent to [inc(default, Name, [], Value)](`inc/4`).
162162
""").
163-
-spec inc(prometheus_metric:name(), prometheus_metric:labels() | non_neg_integer()) -> ok.
163+
-spec inc(prometheus_metric:name(), prometheus_metric:label_values() | non_neg_integer()) -> ok.
164164
inc(Name, LabelValues) when is_list(LabelValues) ->
165165
inc(default, Name, LabelValues, 1);
166166
inc(Name, Value) ->
167167
inc(default, Name, [], Value).
168168

169169
?DOC(#{equiv => inc(default, Name, LabelValues, Value)}).
170-
-spec inc(prometheus_metric:name(), prometheus_metric:labels(), non_neg_integer()) -> ok.
170+
-spec inc(prometheus_metric:name(), prometheus_metric:label_values(), non_neg_integer()) -> ok.
171171
inc(Name, LabelValues, Value) ->
172172
inc(default, Name, LabelValues, Value).
173173

@@ -183,7 +183,7 @@ Raises:
183183
-spec inc(Registry, Name, LabelValues, Value) -> ok when
184184
Registry :: prometheus_registry:registry(),
185185
Name :: prometheus_metric:name(),
186-
LabelValues :: prometheus_metric:labels(),
186+
LabelValues :: prometheus_metric:label_values(),
187187
Value :: non_neg_integer() | float().
188188
inc(Registry, Name, LabelValues, Value) when is_integer(Value), Value >= 0 ->
189189
Key = key(Registry, Name, LabelValues),
@@ -215,7 +215,7 @@ remove(Name) ->
215215

216216
?DOC(#{equiv => remove(default, Name, LabelValues)}).
217217
?DOC("Equivalent to [remove(default, Name, LabelValues)](`remove/3`).").
218-
-spec remove(prometheus_metric:name(), prometheus_metric:labels()) -> boolean().
218+
-spec remove(prometheus_metric:name(), prometheus_metric:label_values()) -> boolean().
219219
remove(Name, LabelValues) ->
220220
remove(default, Name, LabelValues).
221221

@@ -227,8 +227,10 @@ Raises:
227227
* `{unknown_metric, Registry, Name}` error if counter with name `Name` can't be found in `Registry`.
228228
* `{invalid_metric_arity, Present, Expected}` error if labels count mismatch.
229229
""").
230-
-spec remove(prometheus_registry:registry(), prometheus_metric:name(), prometheus_metric:labels()) ->
231-
boolean().
230+
-spec remove(Registry, Name, LabelValues) -> boolean() when
231+
Registry :: prometheus_registry:registry(),
232+
Name :: prometheus_metric:name(),
233+
LabelValues :: prometheus_metric:label_values().
232234
remove(Registry, Name, LabelValues) ->
233235
prometheus_metric:check_mf_exists(?TABLE, Registry, Name, LabelValues),
234236
List = [
@@ -246,7 +248,7 @@ reset(Name) ->
246248
reset(default, Name, []).
247249

248250
?DOC(#{equiv => reset(default, Name, LabelValues)}).
249-
-spec reset(prometheus_metric:name(), prometheus_metric:labels()) -> boolean().
251+
-spec reset(prometheus_metric:name(), prometheus_metric:label_values()) -> boolean().
250252
reset(Name, LabelValues) ->
251253
reset(default, Name, LabelValues).
252254

@@ -258,8 +260,10 @@ Raises:
258260
* `{unknown_metric, Registry, Name}` error if counter with name `Name` can't be found in `Registry`.
259261
* `{invalid_metric_arity, Present, Expected}` error if labels count mismatch.
260262
""").
261-
-spec reset(prometheus_registry:registry(), prometheus_metric:name(), prometheus_metric:labels()) ->
262-
boolean().
263+
-spec reset(Registry, Name, LabelValues) -> boolean() when
264+
Registry :: prometheus_registry:registry(),
265+
Name :: prometheus_metric:name(),
266+
LabelValues :: prometheus_metric:label_values().
263267
reset(Registry, Name, LabelValues) ->
264268
prometheus_metric:check_mf_exists(?TABLE, Registry, Name, LabelValues),
265269
Spec = [{?ISUM_POS, 0}, {?FSUM_POS, 0}],
@@ -279,7 +283,7 @@ value(Name) ->
279283
value(default, Name, []).
280284

281285
?DOC(#{equiv => value(default, Name, LabelValues)}).
282-
-spec value(prometheus_metric:name(), prometheus_metric:labels()) -> number() | undefined.
286+
-spec value(prometheus_metric:name(), prometheus_metric:label_values()) -> number() | undefined.
283287
value(Name, LabelValues) ->
284288
value(default, Name, LabelValues).
285289

@@ -292,8 +296,10 @@ Raises:
292296
* `{unknown_metric, Registry, Name}` error if counter named `Name` can't be found in `Registry`.
293297
* `{invalid_metric_arity, Present, Expected}` error if labels count mismatch.
294298
""").
295-
-spec value(prometheus_registry:registry(), prometheus_metric:name(), prometheus_metric:labels()) ->
296-
number() | undefined.
299+
-spec value(Registry, Name, LabelValues) -> number() | undefined when
300+
Registry :: prometheus_registry:registry(),
301+
Name :: prometheus_metric:name(),
302+
LabelValues :: prometheus_metric:label_values().
297303
value(Registry, Name, LabelValues) ->
298304
prometheus_metric:check_mf_exists(?TABLE, Registry, Name, LabelValues),
299305
Spec = [{{{Registry, Name, LabelValues, '_'}, '$1', '$2'}, [], [{'+', '$1', '$2'}]}],

src/metrics/prometheus_gauge.erl

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ set(Name, Value) ->
172172
set(default, Name, [], Value).
173173

174174
?DOC(#{equiv => set(default, Name, LabelValues, Value)}).
175-
-spec set(prometheus_metric:name(), prometheus_metric:labels(), number()) -> ok.
175+
-spec set(prometheus_metric:name(), prometheus_metric:label_values(), number()) -> ok.
176176
set(Name, LabelValues, Value) ->
177177
set(default, Name, LabelValues, Value).
178178

@@ -188,7 +188,7 @@ Raises:
188188
-spec set(Registry, Name, LabelValues, Value) -> ok when
189189
Registry :: prometheus_registry:registry(),
190190
Name :: prometheus_metric:name(),
191-
LabelValues :: prometheus_metric:labels(),
191+
LabelValues :: prometheus_metric:label_values(),
192192
Value :: undefined | number().
193193
set(Registry, Name, LabelValues, Value) when is_integer(Value) ->
194194
Update = [{?IGAUGE_POS, Value}, {?FGAUGE_POS, 0}],
@@ -226,14 +226,14 @@ inc(Name) ->
226226
If the second argument is a list, equivalent to [inc(default, Name, LabelValues, 1)](`inc/4`)
227227
otherwise equivalent to [inc(default, Name, [], Value)](`inc/4`).
228228
""").
229-
-spec inc(prometheus_metric:name(), prometheus_metric:labels() | non_neg_integer()) -> ok.
229+
-spec inc(prometheus_metric:name(), prometheus_metric:label_values() | non_neg_integer()) -> ok.
230230
inc(Name, LabelValues) when is_list(LabelValues) ->
231231
inc(default, Name, LabelValues, 1);
232232
inc(Name, Value) ->
233233
inc(default, Name, [], Value).
234234

235235
?DOC(#{equiv => inc(default, Name, LabelValues, Value)}).
236-
-spec inc(prometheus_metric:name(), prometheus_metric:labels(), non_neg_integer()) -> ok.
236+
-spec inc(prometheus_metric:name(), prometheus_metric:label_values(), non_neg_integer()) -> ok.
237237
inc(Name, LabelValues, Value) ->
238238
inc(default, Name, LabelValues, Value).
239239

@@ -249,7 +249,7 @@ Raises:
249249
-spec inc(Registry, Name, LabelValues, Value) -> ok when
250250
Registry :: prometheus_registry:registry(),
251251
Name :: prometheus_metric:name(),
252-
LabelValues :: prometheus_metric:labels(),
252+
LabelValues :: prometheus_metric:label_values(),
253253
Value :: number().
254254
inc(Registry, Name, LabelValues, Value) when is_integer(Value) ->
255255
Key = key(Registry, Name, LabelValues),
@@ -282,7 +282,7 @@ dec(Name) ->
282282
If the second argument is a list, equivalent to [inc(default, Name, LabelValues, -1)](`inc/4`)
283283
otherwise equivalent to [inc(default, Name, [], -Value)](`inc/4`).
284284
""").
285-
-spec dec(prometheus_metric:name(), prometheus_metric:labels() | number()) -> ok.
285+
-spec dec(prometheus_metric:name(), prometheus_metric:label_values() | number()) -> ok.
286286
dec(Name, LabelValues) when is_list(LabelValues) ->
287287
inc(default, Name, LabelValues, -1);
288288
dec(Name, Value) when is_number(Value) ->
@@ -291,7 +291,7 @@ dec(_Name, Value) ->
291291
erlang:error({invalid_value, Value, "dec accepts only numbers"}).
292292

293293
?DOC(#{equiv => inc(default, Name, LabelValues, -Value)}).
294-
-spec dec(prometheus_metric:name(), prometheus_metric:labels(), number()) -> ok.
294+
-spec dec(prometheus_metric:name(), prometheus_metric:label_values(), number()) -> ok.
295295
dec(Name, LabelValues, Value) when is_number(Value) ->
296296
inc(default, Name, LabelValues, -Value);
297297
dec(_Name, _LabelValues, Value) ->
@@ -301,7 +301,7 @@ dec(_Name, _LabelValues, Value) ->
301301
-spec dec(Registry, Name, LabelValues, Value) -> ok when
302302
Registry :: prometheus_registry:registry(),
303303
Name :: prometheus_metric:name(),
304-
LabelValues :: prometheus_metric:labels(),
304+
LabelValues :: prometheus_metric:label_values(),
305305
Value :: number().
306306
dec(Registry, Name, LabelValues, Value) when is_number(Value) ->
307307
inc(Registry, Name, LabelValues, -Value);
@@ -314,7 +314,7 @@ set_to_current_time(Name) ->
314314
set_to_current_time(default, Name, []).
315315

316316
?DOC(#{equiv => set_to_current_time(default, Name, LabelValues)}).
317-
-spec set_to_current_time(prometheus_metric:name(), prometheus_metric:labels()) -> ok.
317+
-spec set_to_current_time(prometheus_metric:name(), prometheus_metric:label_values()) -> ok.
318318
set_to_current_time(Name, LabelValues) ->
319319
set_to_current_time(default, Name, LabelValues).
320320

@@ -329,7 +329,7 @@ Raises:
329329
-spec set_to_current_time(Registry, Name, LabelValues) -> ok when
330330
Registry :: prometheus_registry:registry(),
331331
Name :: prometheus_metric:name(),
332-
LabelValues :: prometheus_metric:labels().
332+
LabelValues :: prometheus_metric:label_values().
333333
set_to_current_time(Registry, Name, LabelValues) ->
334334
set(Registry, Name, LabelValues, os:system_time(seconds)).
335335

@@ -339,7 +339,7 @@ track_inprogress(Name, Fun) ->
339339
track_inprogress(default, Name, [], Fun).
340340

341341
?DOC(#{equiv => track_inprogress(default, Name, LabelValues, Fun)}).
342-
-spec track_inprogress(prometheus_metric:name(), prometheus_metric:labels(), fun(() -> any())) ->
342+
-spec track_inprogress(prometheus_metric:name(), prometheus_metric:label_values(), fun(() -> any())) ->
343343
any().
344344
track_inprogress(Name, LabelValues, Fun) ->
345345
track_inprogress(default, Name, LabelValues, Fun).
@@ -357,7 +357,7 @@ Raises:
357357
-spec track_inprogress(Registry, Name, LabelValues, Fun) -> any() when
358358
Registry :: prometheus_registry:registry(),
359359
Name :: prometheus_metric:name(),
360-
LabelValues :: prometheus_metric:labels(),
360+
LabelValues :: prometheus_metric:label_values(),
361361
Fun :: fun(() -> any()).
362362
track_inprogress(Registry, Name, LabelValues, Fun) when is_function(Fun, 0) ->
363363
inc(Registry, Name, LabelValues, 1),
@@ -375,7 +375,8 @@ set_duration(Name, Fun) ->
375375
set_duration(default, Name, [], Fun).
376376

377377
?DOC(#{equiv => set_duration(default, Name, LabelValues, Fun)}).
378-
-spec set_duration(prometheus_metric:name(), prometheus_metric:labels(), fun(() -> any())) -> any().
378+
-spec set_duration(prometheus_metric:name(), prometheus_metric:label_values(), fun(() -> any())) ->
379+
any().
379380
set_duration(Name, LabelValues, Fun) ->
380381
set_duration(default, Name, LabelValues, Fun).
381382

@@ -392,7 +393,7 @@ Raises:
392393
-spec set_duration(Registry, Name, LabelValues, Fun) -> any() when
393394
Registry :: prometheus_registry:registry(),
394395
Name :: prometheus_metric:name(),
395-
LabelValues :: prometheus_metric:labels(),
396+
LabelValues :: prometheus_metric:label_values(),
396397
Fun :: fun(() -> any()).
397398
set_duration(Registry, Name, LabelValues, Fun) when is_function(Fun, 0) ->
398399
Start = erlang:monotonic_time(),
@@ -410,7 +411,7 @@ remove(Name) ->
410411
remove(default, Name, []).
411412

412413
?DOC(#{equiv => remove(default, Name, LabelValues)}).
413-
-spec remove(prometheus_metric:name(), prometheus_metric:labels()) -> boolean().
414+
-spec remove(prometheus_metric:name(), prometheus_metric:label_values()) -> boolean().
414415
remove(Name, LabelValues) ->
415416
remove(default, Name, LabelValues).
416417

@@ -422,8 +423,10 @@ Raises:
422423
* `{unknown_metric, Registry, Name}` error if gauge with name `Name` can't be found in `Registry`.
423424
* `{invalid_metric_arity, Present, Expected}` error if labels count mismatch.
424425
""").
425-
-spec remove(prometheus_registry:registry(), prometheus_metric:name(), prometheus_metric:labels()) ->
426-
boolean().
426+
-spec remove(Registry, Name, LabelValues) -> boolean() when
427+
Registry :: prometheus_registry:registry(),
428+
Name :: prometheus_metric:name(),
429+
LabelValues :: prometheus_metric:label_values().
427430
remove(Registry, Name, LabelValues) ->
428431
prometheus_metric:remove_labels(?TABLE, Registry, Name, LabelValues).
429432

@@ -433,7 +436,7 @@ reset(Name) ->
433436
reset(default, Name, []).
434437

435438
?DOC(#{equiv => reset(default, Name, LabelValues)}).
436-
-spec reset(prometheus_metric:name(), prometheus_metric:labels()) -> boolean().
439+
-spec reset(prometheus_metric:name(), prometheus_metric:label_values()) -> boolean().
437440
reset(Name, LabelValues) ->
438441
reset(default, Name, LabelValues).
439442

@@ -445,8 +448,10 @@ Raises:
445448
* `{unknown_metric, Registry, Name}` error if gauge with name `Name` can't be found in `Registry`.
446449
* `{invalid_metric_arity, Present, Expected}` error if labels count mismatch.
447450
""").
448-
-spec reset(prometheus_registry:registry(), prometheus_metric:name(), prometheus_metric:labels()) ->
449-
boolean().
451+
-spec reset(Registry, Name, LabelValues) -> boolean() when
452+
Registry :: prometheus_registry:registry(),
453+
Name :: prometheus_metric:name(),
454+
LabelValues :: prometheus_metric:label_values().
450455
reset(Registry, Name, LabelValues) ->
451456
prometheus_metric:check_mf_exists(?TABLE, Registry, Name, LabelValues),
452457
ets:update_element(?TABLE, {Registry, Name, LabelValues}, [{?IGAUGE_POS, 0}, {?FGAUGE_POS, 0}]).
@@ -457,7 +462,7 @@ value(Name) ->
457462
value(default, Name, []).
458463

459464
?DOC(#{equiv => value(default, Name, LabelValues)}).
460-
-spec value(prometheus_metric:name(), prometheus_metric:labels()) -> number() | undefined.
465+
-spec value(prometheus_metric:name(), prometheus_metric:label_values()) -> number() | undefined.
461466
value(Name, LabelValues) ->
462467
value(default, Name, LabelValues).
463468

@@ -473,8 +478,10 @@ Raises:
473478
* `{unknown_metric, Registry, Name}` error if gauge named `Name` can't be found in `Registry`.
474479
* `{invalid_metric_arity, Present, Expected}` error if labels count mismatch.
475480
""").
476-
-spec value(prometheus_registry:registry(), prometheus_metric:name(), prometheus_metric:labels()) ->
477-
number() | undefined.
481+
-spec value(Registry, Name, LabelValues) -> number() | undefined when
482+
Registry :: prometheus_registry:registry(),
483+
Name :: prometheus_metric:name(),
484+
LabelValues :: prometheus_metric:label_values().
478485
value(Registry, Name, LabelValues) ->
479486
MF = prometheus_metric:check_mf_exists(?TABLE, Registry, Name, LabelValues),
480487
DU = prometheus_metric:mf_duration_unit(MF),

0 commit comments

Comments
 (0)