libsrg 5.2.0__tar.gz → 5.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {libsrg-5.2.0 → libsrg-5.2.2}/PKG-INFO +1 -1
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/DiscreteStatsBase.py +19 -5
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/DiscteteStatsBase_test.cpython-311.pyc +0 -0
- libsrg-5.2.2/libsrg/Statistics/__pycache__/ADStatsBase.cpython-311.pyc +0 -0
- libsrg-5.2.2/libsrg/Statistics/__pycache__/DiscreteStatsBase.cpython-311.pyc +0 -0
- libsrg-5.2.2/libsrg/Statistics/__pycache__/__init__.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/pyproject.toml +1 -1
- libsrg-5.2.0/libsrg/Statistics/__pycache__/ADStatsBase.cpython-311.pyc +0 -0
- libsrg-5.2.0/libsrg/Statistics/__pycache__/DiscreteStatsBase.cpython-311.pyc +0 -0
- libsrg-5.2.0/libsrg/Statistics/__pycache__/__init__.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/LICENSE.txt +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/README.md +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/AppTemplate.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Config.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/ElapsedTime.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Info.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/LevelBanner.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/LoggerGUIProxy.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/LoggingAppBase.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/LoggingCounter.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/LoggingUtils.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/LoggingWatcher.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/NagiosBase.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Runner.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Runner2.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/ADStatsBase.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/AnalogStatsBase.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/AnalogStatsCumulative.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/AnalogStatsFading.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/AnalogStatsSlidingWindow.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/DiscreteStatsCumulative.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/DiscreteStatsSlidingWindow.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/ADStatsBase_test.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/AnalogStatsBase_test.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/AnalogStatsCumulative_test.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/AnalogStatsFading_test.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/AnalogStatsSlidingWindow_test.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/DiscteteStatsBase_test.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/DiscteteStatsSlidingWindow_test.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__init__.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/ADStatsBase_test.cpython-311-pytest-7.2.0.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/ADStatsBase_test.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/AnalogStatsBase_test.cpython-311-pytest-7.2.0.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/AnalogStatsBase_test.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/AnalogStatsCumulative_test.cpython-311-pytest-7.2.0.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/AnalogStatsCumulative_test.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/AnalogStatsFading_test.cpython-311-pytest-7.2.0.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/AnalogStatsFading_test.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/AnalogStatsSlidingWindow_test.cpython-311-pytest-7.2.0.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/AnalogStatsSlidingWindow_test.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/DiscteteStatsBase_test.cpython-311-pytest-7.2.0.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/DiscteteStatsSlidingWindow_test.cpython-311-pytest-7.2.0.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/DiscteteStatsSlidingWindow_test.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/RunStatsBase_test.cpython-311-pytest-7.2.0.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/__init__.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/__init__.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/__pycache__/AnalogStatsBase.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/__pycache__/AnalogStatsCumulative.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/__pycache__/AnalogStatsFading.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/__pycache__/AnalogStatsSlidingWindow.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/__pycache__/DiscreteStatsCumulative.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/__pycache__/DiscreteStatsSlidingWindow.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/TKGUI/GuiBase.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/TKGUI/GuiRequest.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/TKGUI/GuiRequestQueue.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/TKGUI/LoggerGUI.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/TKGUI/__init__.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/TKGUI/__pycache__/GuiBase.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/TKGUI/__pycache__/GuiRequest.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/TKGUI/__pycache__/GuiRequestQueue.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/TKGUI/__pycache__/LoggerGUI.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/TKGUI/__pycache__/__init__.cpython-311.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/UnitTests/Config_test.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/UnitTests/Info_test.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/UnitTests/RolloverTest_filename.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/UnitTests/RolloverTest_logfile.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/UnitTests/Sample.env +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/UnitTests/Sample.ini +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/UnitTests/Sample.json +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/UnitTests/__init__.py +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/UnitTests/__pycache__/Config_test.cpython-311-pytest-7.2.0.pyc +0 -0
- {libsrg-5.2.0 → libsrg-5.2.2}/libsrg/__init__.py +0 -0
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
from collections import Counter
|
|
6
6
|
from dataclasses import dataclass
|
|
7
|
+
from datetime import datetime, timezone
|
|
7
8
|
from typing import Optional, Callable, Any
|
|
8
9
|
|
|
9
10
|
from libsrg.Statistics.ADStatsBase import ADStatsBase, ADStatsRecord
|
|
@@ -24,6 +25,7 @@ class DiscreteStatsBase(ADStatsBase):
|
|
|
24
25
|
def __init__(self, name, callbacks: Optional[list[Callable]] = None):
|
|
25
26
|
super().__init__(name=name, callbacks=callbacks)
|
|
26
27
|
self.counter = Counter()
|
|
28
|
+
self.last_time:dict[str,datetime]=dict()
|
|
27
29
|
|
|
28
30
|
def get_all_callbacks(self) -> list[Callable]:
|
|
29
31
|
lst = super().get_all_callbacks()
|
|
@@ -33,6 +35,7 @@ class DiscreteStatsBase(ADStatsBase):
|
|
|
33
35
|
def sample(self, value: Any, sample_time: Optional[float] = None) -> bool:
|
|
34
36
|
first = super().sample(value=value, sample_time=sample_time)
|
|
35
37
|
self.counter[value] += 1
|
|
38
|
+
self.last_time[value] = datetime.now(timezone.utc)
|
|
36
39
|
return first
|
|
37
40
|
|
|
38
41
|
def reset(self):
|
|
@@ -42,14 +45,25 @@ class DiscreteStatsBase(ADStatsBase):
|
|
|
42
45
|
def counts(self) -> Counter:
|
|
43
46
|
return self.counter.copy()
|
|
44
47
|
|
|
48
|
+
def datetimes(self) -> dict[str, datetime]:
|
|
49
|
+
return self.last_time.copy()
|
|
50
|
+
|
|
45
51
|
def count_for(self, value: Any) -> int:
|
|
46
52
|
return self.counter[value]
|
|
47
53
|
|
|
48
|
-
def most_common(self, n: int) -> list[tuple[Any, int]]:
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
54
|
+
def most_common(self, n: int) -> list[tuple[Any, int,str]]:
|
|
55
|
+
if time_format is None:
|
|
56
|
+
time_format="%Y-%m-%d %H:%M:%S %Z"
|
|
57
|
+
mc = self.counter.most_common(n)
|
|
58
|
+
mct = [(key,val,self.last_time[key].astimezone().strftime(time_format)) for key,val in mc]
|
|
59
|
+
return mct
|
|
60
|
+
|
|
61
|
+
def most_common_as_str(self, n: int,time_format:str=None) -> str:
|
|
62
|
+
if time_format is None:
|
|
63
|
+
time_format="%Y-%m-%d %H:%M:%S %Z"
|
|
64
|
+
mc = self.counter.most_common(n)
|
|
65
|
+
mct = [(key,val,self.last_time[key].astimezone().strftime(time_format)) for key,val in mc]
|
|
66
|
+
return str(mct)
|
|
53
67
|
|
|
54
68
|
def form_record(self, name: str, count: int, time: float, val: Any) -> DStatsRecord:
|
|
55
69
|
return DStatsRecord(value=val, name=name, count=count, time=time)
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/DiscteteStatsSlidingWindow_test.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/UnitTests/__pycache__/__init__.cpython-311.pyc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/__pycache__/AnalogStatsCumulative.cpython-311.pyc
RENAMED
|
File without changes
|
{libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/__pycache__/AnalogStatsFading.cpython-311.pyc
RENAMED
|
File without changes
|
{libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/__pycache__/AnalogStatsSlidingWindow.cpython-311.pyc
RENAMED
|
File without changes
|
{libsrg-5.2.0 → libsrg-5.2.2}/libsrg/Statistics/__pycache__/DiscreteStatsCumulative.cpython-311.pyc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{libsrg-5.2.0 → libsrg-5.2.2}/libsrg/UnitTests/__pycache__/Config_test.cpython-311-pytest-7.2.0.pyc
RENAMED
|
File without changes
|
|
File without changes
|