logger-36 2024.1__py3-none-any.whl → 2025.3__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. logger_36/__init__.py +64 -42
  2. logger_36/api/logger.py +53 -0
  3. logger_36/api/storage.py +53 -0
  4. logger_36/catalog/config/console_rich.py +76 -0
  5. logger_36/catalog/handler/console.py +117 -0
  6. logger_36/catalog/handler/console_rich.py +235 -0
  7. logger_36/catalog/handler/file.py +128 -0
  8. logger_36/catalog/handler/generic.py +228 -0
  9. logger_36/catalog/logger/chronos.py +61 -0
  10. logger_36/catalog/logger/gpu.py +90 -0
  11. logger_36/catalog/logger/memory.py +129 -0
  12. logger_36/catalog/logger/system.py +84 -0
  13. logger_36/config/issue.py +56 -0
  14. logger_36/config/logger.py +103 -0
  15. logger_36/config/memory.py +54 -0
  16. logger_36/config/message.py +66 -0
  17. logger_36/config/system.py +70 -0
  18. logger_36/constant/error.py +70 -0
  19. logger_36/constant/generic.py +58 -0
  20. logger_36/constant/handler.py +58 -0
  21. logger_36/constant/issue.py +58 -0
  22. logger_36/constant/logger.py +67 -0
  23. logger_36/constant/memory.py +58 -0
  24. logger_36/constant/message.py +72 -0
  25. logger_36/constant/record.py +55 -0
  26. logger_36/constant/system.py +60 -0
  27. logger_36/content.py +55 -0
  28. logger_36/exception.py +105 -0
  29. logger_36/gpu.py +53 -0
  30. logger_36/handler.py +209 -0
  31. logger_36/instance/logger.py +55 -0
  32. logger_36/instance/loggers.py +56 -0
  33. logger_36/memory.py +60 -0
  34. logger_36/storage.py +53 -0
  35. logger_36/system.py +53 -0
  36. logger_36/task/format/memory.py +132 -0
  37. logger_36/task/format/message.py +111 -0
  38. logger_36/task/format/rule.py +74 -0
  39. logger_36/task/inspection.py +70 -48
  40. logger_36/task/measure/chronos.py +84 -0
  41. logger_36/task/measure/memory.py +72 -0
  42. logger_36/task/storage.py +127 -46
  43. logger_36/time.py +54 -0
  44. logger_36/type/handler.py +184 -0
  45. logger_36/type/issue.py +91 -0
  46. logger_36/type/logger.py +542 -0
  47. logger_36/type/loggers.py +78 -0
  48. logger_36/version.py +53 -32
  49. logger_36-2025.3.dist-info/METADATA +154 -0
  50. logger_36-2025.3.dist-info/RECORD +52 -0
  51. {logger_36-2024.1.dist-info → logger_36-2025.3.dist-info}/WHEEL +1 -1
  52. logger_36/catalog/gpu.py +0 -56
  53. logger_36/catalog/memory.py +0 -109
  54. logger_36/catalog/system.py +0 -84
  55. logger_36/config.py +0 -48
  56. logger_36/constant.py +0 -52
  57. logger_36/instance.py +0 -34
  58. logger_36/main.py +0 -96
  59. logger_36/measure/chronos.py +0 -55
  60. logger_36/measure/memory.py +0 -50
  61. logger_36/type/console.py +0 -122
  62. logger_36/type/extension.py +0 -122
  63. logger_36/type/file.py +0 -52
  64. logger_36/type/generic.py +0 -115
  65. logger_36-2024.1.dist-info/METADATA +0 -106
  66. logger_36-2024.1.dist-info/RECORD +0 -21
  67. {logger_36-2024.1.dist-info → logger_36-2025.3.dist-info}/top_level.txt +0 -0
logger_36/handler.py ADDED
@@ -0,0 +1,209 @@
1
+ """
2
+ Copyright CNRS/Inria/UniCA
3
+ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
4
+ SEE COPYRIGHT NOTICE BELOW
5
+ """
6
+
7
+ import logging as lggg
8
+ import sys as sstm
9
+ from pathlib import Path as path_t
10
+
11
+ from logger_36.catalog.handler.console import console_handler_t
12
+ from logger_36.catalog.handler.file import file_handler_t
13
+ from logger_36.catalog.handler.generic import generic_handler_t, show_message_p
14
+ from logger_36.constant.error import MISSING_RICH_ERROR
15
+ from logger_36.instance.logger import LOGGER
16
+
17
+ try:
18
+ from logger_36.catalog.handler.console_rich import console_rich_handler_t
19
+
20
+ _MISSING_RICH_ERROR = None
21
+ except ModuleNotFoundError:
22
+ from logger_36.catalog.handler.console import (
23
+ console_handler_t as console_rich_handler_t,
24
+ )
25
+
26
+ _MISSING_RICH_ERROR = MISSING_RICH_ERROR
27
+
28
+
29
+ def AddGenericHandler(
30
+ ShowMessage: show_message_p,
31
+ /,
32
+ *,
33
+ logger: lggg.Logger | None = None,
34
+ name: str | None = None,
35
+ level: int = lggg.INFO,
36
+ should_store_memory_usage: bool = False,
37
+ message_width: int = -1,
38
+ formatter: lggg.Formatter | None = None,
39
+ supports_html: bool = False,
40
+ alternating_lines: int = 2,
41
+ should_record: bool = False,
42
+ should_hold_messages: bool = False,
43
+ **kwargs,
44
+ ) -> None:
45
+ """"""
46
+ if logger is None:
47
+ logger = LOGGER
48
+
49
+ handler = generic_handler_t(
50
+ name=name,
51
+ level=level,
52
+ should_store_memory_usage=should_store_memory_usage,
53
+ message_width=message_width,
54
+ formatter=formatter,
55
+ supports_html=supports_html,
56
+ alternating_lines=alternating_lines,
57
+ should_record=should_record,
58
+ rich_kwargs=kwargs,
59
+ ShowMessage=ShowMessage,
60
+ )
61
+ logger.AddHandler(handler, should_hold_messages)
62
+
63
+
64
+ def AddConsoleHandler(
65
+ *,
66
+ logger: lggg.Logger | None = None,
67
+ name: str | None = None,
68
+ level: int = lggg.INFO,
69
+ should_store_memory_usage: bool = False,
70
+ message_width: int = -1,
71
+ formatter: lggg.Formatter | None = None,
72
+ should_hold_messages: bool = False,
73
+ ) -> None:
74
+ """"""
75
+ if logger is None:
76
+ logger = LOGGER
77
+
78
+ handler = console_handler_t(
79
+ name=name,
80
+ level=level,
81
+ should_store_memory_usage=should_store_memory_usage,
82
+ message_width=message_width,
83
+ formatter=formatter,
84
+ )
85
+ logger.AddHandler(handler, should_hold_messages)
86
+
87
+
88
+ def AddRichConsoleHandler(
89
+ *,
90
+ logger: lggg.Logger | None = None,
91
+ name: str | None = None,
92
+ level: int = lggg.INFO,
93
+ should_store_memory_usage: bool = False,
94
+ message_width: int = -1,
95
+ formatter: lggg.Formatter | None = None,
96
+ alternating_lines: int = 2,
97
+ should_hold_messages: bool = False,
98
+ should_install_traceback: bool = False,
99
+ should_record: bool = False,
100
+ **kwargs,
101
+ ) -> None:
102
+ """"""
103
+ global _MISSING_RICH_ERROR
104
+ if _MISSING_RICH_ERROR is not None:
105
+ print(_MISSING_RICH_ERROR, file=sstm.stderr)
106
+ _MISSING_RICH_ERROR = None
107
+
108
+ if logger is None:
109
+ logger = LOGGER
110
+
111
+ if console_rich_handler_t is console_handler_t:
112
+ additional_s = {}
113
+ else:
114
+ additional_s = {
115
+ "alternating_lines": alternating_lines,
116
+ "should_install_traceback": should_install_traceback,
117
+ "should_record": should_record,
118
+ "rich_kwargs": kwargs,
119
+ }
120
+ handler = console_rich_handler_t(
121
+ name=name,
122
+ level=level,
123
+ should_store_memory_usage=should_store_memory_usage,
124
+ message_width=message_width,
125
+ formatter=formatter,
126
+ **additional_s,
127
+ )
128
+ logger.AddHandler(handler, should_hold_messages)
129
+
130
+
131
+ def AddFileHandler(
132
+ path: str | path_t,
133
+ /,
134
+ *args,
135
+ logger: lggg.Logger | None = None,
136
+ name: str | None = None,
137
+ level: int = lggg.INFO,
138
+ should_store_memory_usage: bool = False,
139
+ message_width: int = -1,
140
+ formatter: lggg.Formatter | None = None,
141
+ should_hold_messages: bool = False,
142
+ **kwargs,
143
+ ) -> None:
144
+ """"""
145
+ if isinstance(path, str):
146
+ path = path_t(path)
147
+ if path.exists():
148
+ raise ValueError(f"File or folder already exists: {path}.")
149
+ if logger is None:
150
+ logger = LOGGER
151
+
152
+ handler = file_handler_t(
153
+ name=name,
154
+ level=level,
155
+ should_store_memory_usage=should_store_memory_usage,
156
+ message_width=message_width,
157
+ formatter=formatter,
158
+ path=path,
159
+ handler_args=args,
160
+ handler_kwargs=kwargs,
161
+ )
162
+ logger.AddHandler(handler, should_hold_messages)
163
+
164
+
165
+ """
166
+ COPYRIGHT NOTICE
167
+
168
+ This software is governed by the CeCILL license under French law and
169
+ abiding by the rules of distribution of free software. You can use,
170
+ modify and/ or redistribute the software under the terms of the CeCILL
171
+ license as circulated by CEA, CNRS and INRIA at the following URL
172
+ "http://www.cecill.info".
173
+
174
+ As a counterpart to the access to the source code and rights to copy,
175
+ modify and redistribute granted by the license, users are provided only
176
+ with a limited warranty and the software's author, the holder of the
177
+ economic rights, and the successive licensors have only limited
178
+ liability.
179
+
180
+ In this respect, the user's attention is drawn to the risks associated
181
+ with loading, using, modifying and/or developing or reproducing the
182
+ software by the user in light of its specific status of free software,
183
+ that may mean that it is complicated to manipulate, and that also
184
+ therefore means that it is reserved for developers and experienced
185
+ professionals having in-depth computer knowledge. Users are therefore
186
+ encouraged to load and test the software's suitability as regards their
187
+ requirements in conditions enabling the security of their systems and/or
188
+ data to be ensured and, more generally, to use and operate it in the
189
+ same conditions as regards security.
190
+
191
+ The fact that you are presently reading this means that you have had
192
+ knowledge of the CeCILL license and that you accept its terms.
193
+
194
+ SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
195
+
196
+ This software is being developed by Eric Debreuve, a CNRS employee and
197
+ member of team Morpheme.
198
+ Team Morpheme is a joint team between Inria, CNRS, and UniCA.
199
+ It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
200
+ I3S, and Laboratory iBV.
201
+
202
+ CNRS: https://www.cnrs.fr/index.php/en
203
+ Inria: https://www.inria.fr/en/
204
+ UniCA: https://univ-cotedazur.eu/
205
+ Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
206
+ I3S: https://www.i3s.unice.fr/en/
207
+ iBV: http://ibv.unice.fr/
208
+ Team Morpheme: https://team.inria.fr/morpheme/
209
+ """
@@ -0,0 +1,55 @@
1
+ """
2
+ Copyright CNRS/Inria/UniCA
3
+ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
4
+ SEE COPYRIGHT NOTICE BELOW
5
+ """
6
+
7
+ from logger_36.type.logger import logger_t
8
+
9
+ LOGGER = logger_t()
10
+
11
+ """
12
+ COPYRIGHT NOTICE
13
+
14
+ This software is governed by the CeCILL license under French law and
15
+ abiding by the rules of distribution of free software. You can use,
16
+ modify and/ or redistribute the software under the terms of the CeCILL
17
+ license as circulated by CEA, CNRS and INRIA at the following URL
18
+ "http://www.cecill.info".
19
+
20
+ As a counterpart to the access to the source code and rights to copy,
21
+ modify and redistribute granted by the license, users are provided only
22
+ with a limited warranty and the software's author, the holder of the
23
+ economic rights, and the successive licensors have only limited
24
+ liability.
25
+
26
+ In this respect, the user's attention is drawn to the risks associated
27
+ with loading, using, modifying and/or developing or reproducing the
28
+ software by the user in light of its specific status of free software,
29
+ that may mean that it is complicated to manipulate, and that also
30
+ therefore means that it is reserved for developers and experienced
31
+ professionals having in-depth computer knowledge. Users are therefore
32
+ encouraged to load and test the software's suitability as regards their
33
+ requirements in conditions enabling the security of their systems and/or
34
+ data to be ensured and, more generally, to use and operate it in the
35
+ same conditions as regards security.
36
+
37
+ The fact that you are presently reading this means that you have had
38
+ knowledge of the CeCILL license and that you accept its terms.
39
+
40
+ SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
41
+
42
+ This software is being developed by Eric Debreuve, a CNRS employee and
43
+ member of team Morpheme.
44
+ Team Morpheme is a joint team between Inria, CNRS, and UniCA.
45
+ It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
46
+ I3S, and Laboratory iBV.
47
+
48
+ CNRS: https://www.cnrs.fr/index.php/en
49
+ Inria: https://www.inria.fr/en/
50
+ UniCA: https://univ-cotedazur.eu/
51
+ Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
52
+ I3S: https://www.i3s.unice.fr/en/
53
+ iBV: http://ibv.unice.fr/
54
+ Team Morpheme: https://team.inria.fr/morpheme/
55
+ """
@@ -0,0 +1,56 @@
1
+ """
2
+ Copyright CNRS/Inria/UniCA
3
+ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
4
+ SEE COPYRIGHT NOTICE BELOW
5
+ """
6
+
7
+ from logger_36.type.loggers import loggers_t
8
+
9
+ LOGGERS = loggers_t()
10
+
11
+
12
+ """
13
+ COPYRIGHT NOTICE
14
+
15
+ This software is governed by the CeCILL license under French law and
16
+ abiding by the rules of distribution of free software. You can use,
17
+ modify and/ or redistribute the software under the terms of the CeCILL
18
+ license as circulated by CEA, CNRS and INRIA at the following URL
19
+ "http://www.cecill.info".
20
+
21
+ As a counterpart to the access to the source code and rights to copy,
22
+ modify and redistribute granted by the license, users are provided only
23
+ with a limited warranty and the software's author, the holder of the
24
+ economic rights, and the successive licensors have only limited
25
+ liability.
26
+
27
+ In this respect, the user's attention is drawn to the risks associated
28
+ with loading, using, modifying and/or developing or reproducing the
29
+ software by the user in light of its specific status of free software,
30
+ that may mean that it is complicated to manipulate, and that also
31
+ therefore means that it is reserved for developers and experienced
32
+ professionals having in-depth computer knowledge. Users are therefore
33
+ encouraged to load and test the software's suitability as regards their
34
+ requirements in conditions enabling the security of their systems and/or
35
+ data to be ensured and, more generally, to use and operate it in the
36
+ same conditions as regards security.
37
+
38
+ The fact that you are presently reading this means that you have had
39
+ knowledge of the CeCILL license and that you accept its terms.
40
+
41
+ SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
42
+
43
+ This software is being developed by Eric Debreuve, a CNRS employee and
44
+ member of team Morpheme.
45
+ Team Morpheme is a joint team between Inria, CNRS, and UniCA.
46
+ It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
47
+ I3S, and Laboratory iBV.
48
+
49
+ CNRS: https://www.cnrs.fr/index.php/en
50
+ Inria: https://www.inria.fr/en/
51
+ UniCA: https://univ-cotedazur.eu/
52
+ Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
53
+ I3S: https://www.i3s.unice.fr/en/
54
+ iBV: http://ibv.unice.fr/
55
+ Team Morpheme: https://team.inria.fr/morpheme/
56
+ """
logger_36/memory.py ADDED
@@ -0,0 +1,60 @@
1
+ """
2
+ Copyright CNRS/Inria/UniCA
3
+ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
4
+ SEE COPYRIGHT NOTICE BELOW
5
+ """
6
+
7
+ from logger_36.catalog.logger.memory import LogMaximumMemoryUsage, LogMemoryUsages
8
+ from logger_36.task.format.memory import FormattedUsage as FormattedMemoryUsage
9
+ from logger_36.task.format.memory import (
10
+ FormattedUsageWithAutoUnit as FormattedMemoryUsageWithAutoUnit,
11
+ )
12
+ from logger_36.task.format.memory import UsageBar as MemoryUsageBar
13
+ from logger_36.task.measure.memory import CanCheckUsage as CanCheckMemoryUsage
14
+ from logger_36.task.measure.memory import CurrentUsage as CurrentMemoryUsage
15
+
16
+ """
17
+ COPYRIGHT NOTICE
18
+
19
+ This software is governed by the CeCILL license under French law and
20
+ abiding by the rules of distribution of free software. You can use,
21
+ modify and/ or redistribute the software under the terms of the CeCILL
22
+ license as circulated by CEA, CNRS and INRIA at the following URL
23
+ "http://www.cecill.info".
24
+
25
+ As a counterpart to the access to the source code and rights to copy,
26
+ modify and redistribute granted by the license, users are provided only
27
+ with a limited warranty and the software's author, the holder of the
28
+ economic rights, and the successive licensors have only limited
29
+ liability.
30
+
31
+ In this respect, the user's attention is drawn to the risks associated
32
+ with loading, using, modifying and/or developing or reproducing the
33
+ software by the user in light of its specific status of free software,
34
+ that may mean that it is complicated to manipulate, and that also
35
+ therefore means that it is reserved for developers and experienced
36
+ professionals having in-depth computer knowledge. Users are therefore
37
+ encouraged to load and test the software's suitability as regards their
38
+ requirements in conditions enabling the security of their systems and/or
39
+ data to be ensured and, more generally, to use and operate it in the
40
+ same conditions as regards security.
41
+
42
+ The fact that you are presently reading this means that you have had
43
+ knowledge of the CeCILL license and that you accept its terms.
44
+
45
+ SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
46
+
47
+ This software is being developed by Eric Debreuve, a CNRS employee and
48
+ member of team Morpheme.
49
+ Team Morpheme is a joint team between Inria, CNRS, and UniCA.
50
+ It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
51
+ I3S, and Laboratory iBV.
52
+
53
+ CNRS: https://www.cnrs.fr/index.php/en
54
+ Inria: https://www.inria.fr/en/
55
+ UniCA: https://univ-cotedazur.eu/
56
+ Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
57
+ I3S: https://www.i3s.unice.fr/en/
58
+ iBV: http://ibv.unice.fr/
59
+ Team Morpheme: https://team.inria.fr/morpheme/
60
+ """
logger_36/storage.py ADDED
@@ -0,0 +1,53 @@
1
+ """
2
+ Copyright CNRS/Inria/UniCA
3
+ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
4
+ SEE COPYRIGHT NOTICE BELOW
5
+ """
6
+
7
+ from logger_36.task.storage import SaveLOGasHTML
8
+
9
+ """
10
+ COPYRIGHT NOTICE
11
+
12
+ This software is governed by the CeCILL license under French law and
13
+ abiding by the rules of distribution of free software. You can use,
14
+ modify and/ or redistribute the software under the terms of the CeCILL
15
+ license as circulated by CEA, CNRS and INRIA at the following URL
16
+ "http://www.cecill.info".
17
+
18
+ As a counterpart to the access to the source code and rights to copy,
19
+ modify and redistribute granted by the license, users are provided only
20
+ with a limited warranty and the software's author, the holder of the
21
+ economic rights, and the successive licensors have only limited
22
+ liability.
23
+
24
+ In this respect, the user's attention is drawn to the risks associated
25
+ with loading, using, modifying and/or developing or reproducing the
26
+ software by the user in light of its specific status of free software,
27
+ that may mean that it is complicated to manipulate, and that also
28
+ therefore means that it is reserved for developers and experienced
29
+ professionals having in-depth computer knowledge. Users are therefore
30
+ encouraged to load and test the software's suitability as regards their
31
+ requirements in conditions enabling the security of their systems and/or
32
+ data to be ensured and, more generally, to use and operate it in the
33
+ same conditions as regards security.
34
+
35
+ The fact that you are presently reading this means that you have had
36
+ knowledge of the CeCILL license and that you accept its terms.
37
+
38
+ SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
39
+
40
+ This software is being developed by Eric Debreuve, a CNRS employee and
41
+ member of team Morpheme.
42
+ Team Morpheme is a joint team between Inria, CNRS, and UniCA.
43
+ It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
44
+ I3S, and Laboratory iBV.
45
+
46
+ CNRS: https://www.cnrs.fr/index.php/en
47
+ Inria: https://www.inria.fr/en/
48
+ UniCA: https://univ-cotedazur.eu/
49
+ Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
50
+ I3S: https://www.i3s.unice.fr/en/
51
+ iBV: http://ibv.unice.fr/
52
+ Team Morpheme: https://team.inria.fr/morpheme/
53
+ """
logger_36/system.py ADDED
@@ -0,0 +1,53 @@
1
+ """
2
+ Copyright CNRS/Inria/UniCA
3
+ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
4
+ SEE COPYRIGHT NOTICE BELOW
5
+ """
6
+
7
+ from logger_36.catalog.logger.system import LogSystemDetails
8
+
9
+ """
10
+ COPYRIGHT NOTICE
11
+
12
+ This software is governed by the CeCILL license under French law and
13
+ abiding by the rules of distribution of free software. You can use,
14
+ modify and/ or redistribute the software under the terms of the CeCILL
15
+ license as circulated by CEA, CNRS and INRIA at the following URL
16
+ "http://www.cecill.info".
17
+
18
+ As a counterpart to the access to the source code and rights to copy,
19
+ modify and redistribute granted by the license, users are provided only
20
+ with a limited warranty and the software's author, the holder of the
21
+ economic rights, and the successive licensors have only limited
22
+ liability.
23
+
24
+ In this respect, the user's attention is drawn to the risks associated
25
+ with loading, using, modifying and/or developing or reproducing the
26
+ software by the user in light of its specific status of free software,
27
+ that may mean that it is complicated to manipulate, and that also
28
+ therefore means that it is reserved for developers and experienced
29
+ professionals having in-depth computer knowledge. Users are therefore
30
+ encouraged to load and test the software's suitability as regards their
31
+ requirements in conditions enabling the security of their systems and/or
32
+ data to be ensured and, more generally, to use and operate it in the
33
+ same conditions as regards security.
34
+
35
+ The fact that you are presently reading this means that you have had
36
+ knowledge of the CeCILL license and that you accept its terms.
37
+
38
+ SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
39
+
40
+ This software is being developed by Eric Debreuve, a CNRS employee and
41
+ member of team Morpheme.
42
+ Team Morpheme is a joint team between Inria, CNRS, and UniCA.
43
+ It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
44
+ I3S, and Laboratory iBV.
45
+
46
+ CNRS: https://www.cnrs.fr/index.php/en
47
+ Inria: https://www.inria.fr/en/
48
+ UniCA: https://univ-cotedazur.eu/
49
+ Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
50
+ I3S: https://www.i3s.unice.fr/en/
51
+ iBV: http://ibv.unice.fr/
52
+ Team Morpheme: https://team.inria.fr/morpheme/
53
+ """
@@ -0,0 +1,132 @@
1
+ """
2
+ Copyright CNRS/Inria/UniCA
3
+ Contributor(s): Eric Debreuve (eric.debreuve@cnrs.fr) since 2023
4
+ SEE COPYRIGHT NOTICE BELOW
5
+ """
6
+
7
+ from logger_36.constant.memory import STORAGE_UNITS, storage_units_h
8
+ from logger_36.task.format.message import MessageWithActualExpected
9
+
10
+ _KILO_UNIT = 1000.0
11
+ _MEGA_UNIT = _KILO_UNIT * 1000.0
12
+ _GIGA_UNIT = _MEGA_UNIT * 1000.0
13
+
14
+ _BLOCKS_PARTIAL = ("", "▏", "▎", "▍", "▌", "▋", "▊")
15
+ _BLOCK_FULL = "▉"
16
+
17
+
18
+ def FormattedUsage(
19
+ usage: int,
20
+ /,
21
+ *,
22
+ unit: storage_units_h | None = "a",
23
+ decimals: int | None = None,
24
+ ) -> tuple[int | float, str]:
25
+ """
26
+ unit: b or None=bytes, k=kilo, m=mega, g=giga, a=auto
27
+ """
28
+ if (unit is None) or (unit == "b"):
29
+ value = usage
30
+ unit = "B"
31
+ elif unit == "k":
32
+ value = _Rounded(usage / _KILO_UNIT, decimals)
33
+ unit = "KB"
34
+ elif unit == "m":
35
+ value = _Rounded(usage / _MEGA_UNIT, decimals)
36
+ unit = "MB"
37
+ elif unit == "g":
38
+ value = _Rounded(usage / _GIGA_UNIT, decimals)
39
+ unit = "GB"
40
+ elif unit == "a":
41
+ value, unit = FormattedUsageWithAutoUnit(usage, decimals)
42
+ else:
43
+ raise ValueError(
44
+ MessageWithActualExpected(
45
+ "Invalid unit", actual=unit, expected=str(STORAGE_UNITS)[1:-1]
46
+ )
47
+ )
48
+
49
+ return value, unit
50
+
51
+
52
+ def FormattedUsageWithAutoUnit(
53
+ usage: int, decimals: int | None, /
54
+ ) -> tuple[int | float, str]:
55
+ """"""
56
+ if usage > _GIGA_UNIT:
57
+ return _Rounded(usage / _GIGA_UNIT, decimals), "GB"
58
+
59
+ if usage > _MEGA_UNIT:
60
+ return _Rounded(usage / _MEGA_UNIT, decimals), "MB"
61
+
62
+ if usage > _KILO_UNIT:
63
+ return _Rounded(usage / _KILO_UNIT, decimals), "KB"
64
+
65
+ return usage, "B"
66
+
67
+
68
+ def UsageBar(
69
+ usage: int | float, max_usage: int | float, /, *, length_100: int = 10
70
+ ) -> str:
71
+ """"""
72
+ length = (usage / max_usage) * length_100
73
+ n_full_s = int(length)
74
+ return (
75
+ n_full_s * _BLOCK_FULL
76
+ + _BLOCKS_PARTIAL[int((2.0 / 3.0) * int(10 * (length - n_full_s)))]
77
+ )
78
+
79
+
80
+ def _Rounded(value: float, decimals: int | None, /) -> int | float:
81
+ """"""
82
+ if decimals == 0:
83
+ decimals = None
84
+
85
+ return round(value, ndigits=decimals)
86
+
87
+
88
+ """
89
+ COPYRIGHT NOTICE
90
+
91
+ This software is governed by the CeCILL license under French law and
92
+ abiding by the rules of distribution of free software. You can use,
93
+ modify and/ or redistribute the software under the terms of the CeCILL
94
+ license as circulated by CEA, CNRS and INRIA at the following URL
95
+ "http://www.cecill.info".
96
+
97
+ As a counterpart to the access to the source code and rights to copy,
98
+ modify and redistribute granted by the license, users are provided only
99
+ with a limited warranty and the software's author, the holder of the
100
+ economic rights, and the successive licensors have only limited
101
+ liability.
102
+
103
+ In this respect, the user's attention is drawn to the risks associated
104
+ with loading, using, modifying and/or developing or reproducing the
105
+ software by the user in light of its specific status of free software,
106
+ that may mean that it is complicated to manipulate, and that also
107
+ therefore means that it is reserved for developers and experienced
108
+ professionals having in-depth computer knowledge. Users are therefore
109
+ encouraged to load and test the software's suitability as regards their
110
+ requirements in conditions enabling the security of their systems and/or
111
+ data to be ensured and, more generally, to use and operate it in the
112
+ same conditions as regards security.
113
+
114
+ The fact that you are presently reading this means that you have had
115
+ knowledge of the CeCILL license and that you accept its terms.
116
+
117
+ SEE LICENCE NOTICE: file README-LICENCE-utf8.txt at project source root.
118
+
119
+ This software is being developed by Eric Debreuve, a CNRS employee and
120
+ member of team Morpheme.
121
+ Team Morpheme is a joint team between Inria, CNRS, and UniCA.
122
+ It is hosted by the Centre Inria d'Université Côte d'Azur, Laboratory
123
+ I3S, and Laboratory iBV.
124
+
125
+ CNRS: https://www.cnrs.fr/index.php/en
126
+ Inria: https://www.inria.fr/en/
127
+ UniCA: https://univ-cotedazur.eu/
128
+ Centre Inria d'Université Côte d'Azur: https://www.inria.fr/en/centre/sophia/
129
+ I3S: https://www.i3s.unice.fr/en/
130
+ iBV: http://ibv.unice.fr/
131
+ Team Morpheme: https://team.inria.fr/morpheme/
132
+ """