stouputils 1.14.3__py3-none-any.whl → 1.15.1__py3-none-any.whl

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.
Files changed (80) hide show
  1. stouputils/data_science/config/get.py +51 -51
  2. stouputils/data_science/data_processing/image/__init__.py +66 -66
  3. stouputils/data_science/data_processing/image/auto_contrast.py +79 -79
  4. stouputils/data_science/data_processing/image/axis_flip.py +58 -58
  5. stouputils/data_science/data_processing/image/bias_field_correction.py +74 -74
  6. stouputils/data_science/data_processing/image/binary_threshold.py +73 -73
  7. stouputils/data_science/data_processing/image/blur.py +59 -59
  8. stouputils/data_science/data_processing/image/brightness.py +54 -54
  9. stouputils/data_science/data_processing/image/canny.py +110 -110
  10. stouputils/data_science/data_processing/image/clahe.py +92 -92
  11. stouputils/data_science/data_processing/image/common.py +30 -30
  12. stouputils/data_science/data_processing/image/contrast.py +53 -53
  13. stouputils/data_science/data_processing/image/curvature_flow_filter.py +74 -74
  14. stouputils/data_science/data_processing/image/denoise.py +378 -378
  15. stouputils/data_science/data_processing/image/histogram_equalization.py +123 -123
  16. stouputils/data_science/data_processing/image/invert.py +64 -64
  17. stouputils/data_science/data_processing/image/laplacian.py +60 -60
  18. stouputils/data_science/data_processing/image/median_blur.py +52 -52
  19. stouputils/data_science/data_processing/image/noise.py +59 -59
  20. stouputils/data_science/data_processing/image/normalize.py +65 -65
  21. stouputils/data_science/data_processing/image/random_erase.py +66 -66
  22. stouputils/data_science/data_processing/image/resize.py +69 -69
  23. stouputils/data_science/data_processing/image/rotation.py +80 -80
  24. stouputils/data_science/data_processing/image/salt_pepper.py +68 -68
  25. stouputils/data_science/data_processing/image/sharpening.py +55 -55
  26. stouputils/data_science/data_processing/image/shearing.py +64 -64
  27. stouputils/data_science/data_processing/image/threshold.py +64 -64
  28. stouputils/data_science/data_processing/image/translation.py +71 -71
  29. stouputils/data_science/data_processing/image/zoom.py +83 -83
  30. stouputils/data_science/data_processing/image_augmentation.py +118 -118
  31. stouputils/data_science/data_processing/image_preprocess.py +183 -183
  32. stouputils/data_science/data_processing/prosthesis_detection.py +359 -359
  33. stouputils/data_science/data_processing/technique.py +481 -481
  34. stouputils/data_science/dataset/__init__.py +45 -45
  35. stouputils/data_science/dataset/dataset.py +292 -292
  36. stouputils/data_science/dataset/dataset_loader.py +135 -135
  37. stouputils/data_science/dataset/grouping_strategy.py +296 -296
  38. stouputils/data_science/dataset/image_loader.py +100 -100
  39. stouputils/data_science/dataset/xy_tuple.py +696 -696
  40. stouputils/data_science/metric_dictionnary.py +106 -106
  41. stouputils/data_science/mlflow_utils.py +206 -206
  42. stouputils/data_science/models/abstract_model.py +149 -149
  43. stouputils/data_science/models/all.py +85 -85
  44. stouputils/data_science/models/keras/all.py +38 -38
  45. stouputils/data_science/models/keras/convnext.py +62 -62
  46. stouputils/data_science/models/keras/densenet.py +50 -50
  47. stouputils/data_science/models/keras/efficientnet.py +60 -60
  48. stouputils/data_science/models/keras/mobilenet.py +56 -56
  49. stouputils/data_science/models/keras/resnet.py +52 -52
  50. stouputils/data_science/models/keras/squeezenet.py +233 -233
  51. stouputils/data_science/models/keras/vgg.py +42 -42
  52. stouputils/data_science/models/keras/xception.py +38 -38
  53. stouputils/data_science/models/keras_utils/callbacks/__init__.py +20 -20
  54. stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +219 -219
  55. stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +148 -148
  56. stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +31 -31
  57. stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +249 -249
  58. stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +66 -66
  59. stouputils/data_science/models/keras_utils/losses/__init__.py +12 -12
  60. stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +56 -56
  61. stouputils/data_science/models/keras_utils/visualizations.py +416 -416
  62. stouputils/data_science/models/sandbox.py +116 -116
  63. stouputils/data_science/range_tuple.py +234 -234
  64. stouputils/data_science/utils.py +285 -285
  65. stouputils/decorators.py +53 -39
  66. stouputils/decorators.pyi +2 -2
  67. stouputils/installer/__init__.py +18 -18
  68. stouputils/installer/linux.py +144 -144
  69. stouputils/installer/main.py +223 -223
  70. stouputils/installer/windows.py +136 -136
  71. stouputils/io.py +16 -9
  72. stouputils/parallel.py +88 -2
  73. stouputils/parallel.pyi +21 -1
  74. stouputils/print.py +229 -2
  75. stouputils/print.pyi +90 -1
  76. stouputils/py.typed +1 -1
  77. {stouputils-1.14.3.dist-info → stouputils-1.15.1.dist-info}/METADATA +1 -1
  78. {stouputils-1.14.3.dist-info → stouputils-1.15.1.dist-info}/RECORD +80 -80
  79. {stouputils-1.14.3.dist-info → stouputils-1.15.1.dist-info}/WHEEL +1 -1
  80. {stouputils-1.14.3.dist-info → stouputils-1.15.1.dist-info}/entry_points.txt +0 -0
stouputils/print.py CHANGED
@@ -4,6 +4,10 @@ This module provides utility functions for printing messages with different leve
4
4
  If a message is printed multiple times, it will be displayed as "(xN) message"
5
5
  where N is the number of times the message has been printed.
6
6
 
7
+ The module also includes a `colored()` function that formats text with Python 3.14 style coloring
8
+ for file paths, line numbers, function names (in magenta), and exception names (in bold magenta).
9
+ All functions have their colored counterparts with a 'c' suffix (e.g., `infoc()`, `debugc()`, etc.)
10
+
7
11
  .. image:: https://raw.githubusercontent.com/Stoupy51/stouputils/refs/heads/main/assets/print_module.gif
8
12
  :alt: stouputils print examples
9
13
  """
@@ -24,6 +28,7 @@ BLUE: str = "\033[94m"
24
28
  MAGENTA: str = "\033[95m"
25
29
  CYAN: str = "\033[96m"
26
30
  LINE_UP: str = "\033[1A"
31
+ BOLD: str = "\033[1m"
27
32
 
28
33
  # Constants
29
34
  BAR_FORMAT: str = "{l_bar}{bar}" + MAGENTA + "| {n_fmt}/{total_fmt} [{rate_fmt}{postfix}, {elapsed}<{remaining}]" + RESET
@@ -84,12 +89,210 @@ def colored_for_loop[T](
84
89
  from tqdm.auto import tqdm
85
90
  yield from tqdm(iterable, desc=desc, bar_format=bar_format, ascii=ascii, **kwargs)
86
91
 
92
+ def format_colored(*values: Any) -> str:
93
+ """ Format text with Python 3.14 style colored formatting.
94
+
95
+ Dynamically colors text by analyzing each word:
96
+ - File paths in magenta
97
+ - Numbers in magenta
98
+ - Function names (built-in and callable objects) in magenta
99
+ - Exception names in bold magenta
100
+
101
+ Args:
102
+ values (Any): Values to format (like the print function)
103
+
104
+ Returns:
105
+ str: The formatted text with ANSI color codes
106
+
107
+ Examples:
108
+ >>> # Test function names with parentheses
109
+ >>> result = format_colored("Call print() with 42 items")
110
+ >>> result.count(MAGENTA) == 2 # print and 42
111
+ True
112
+
113
+ >>> # Test function names without parentheses
114
+ >>> result = format_colored("Use len and sum functions")
115
+ >>> result.count(MAGENTA) == 2 # len and sum
116
+ True
117
+
118
+ >>> # Test exceptions (bold magenta)
119
+ >>> result = format_colored("Got ValueError when parsing")
120
+ >>> result.count(MAGENTA) == 1 and result.count(BOLD) == 1 # ValueError in bold magenta
121
+ True
122
+
123
+ >>> # Test file paths
124
+ >>> result = format_colored("Processing ./data.csv file")
125
+ >>> result.count(MAGENTA) == 1 # ./data.csv
126
+ True
127
+
128
+ >>> # Test file paths with quotes
129
+ >>> result = format_colored('File "/path/to/script.py" line 42')
130
+ >>> result.count(MAGENTA) == 2 # /path/to/script.py and 42
131
+ True
132
+
133
+ >>> # Test numbers
134
+ >>> result = format_colored("Found 100 items and 3.14 value")
135
+ >>> result.count(MAGENTA) == 2 # 100 and 3.14
136
+ True
137
+
138
+ >>> # Test mixed content
139
+ >>> result = format_colored("Call sum() got IndexError at line 256 in utils.py")
140
+ >>> result.count(MAGENTA) == 3 # sum, IndexError (bold), and 256
141
+ True
142
+ >>> result.count(BOLD) == 1 # IndexError is bold
143
+ True
144
+
145
+ >>> # Test plain text (no coloring)
146
+ >>> result = format_colored("This is plain text")
147
+ >>> result.count(MAGENTA) == 0 and result == "This is plain text"
148
+ True
149
+ """
150
+ import builtins
151
+ import re
152
+
153
+ # Dynamically retrieve all Python exception names and function names
154
+ EXCEPTION_NAMES: set[str] = {
155
+ name for name in dir(builtins)
156
+ if isinstance(getattr(builtins, name, None), type)
157
+ and issubclass(getattr(builtins, name), BaseException)
158
+ }
159
+ BUILTIN_FUNCTIONS: set[str] = {
160
+ name for name in dir(builtins)
161
+ if callable(getattr(builtins, name, None))
162
+ and not (isinstance(getattr(builtins, name, None), type)
163
+ and issubclass(getattr(builtins, name), BaseException))
164
+ }
165
+
166
+ def is_filepath(word: str) -> bool:
167
+ """ Check if a word looks like a file path """
168
+ # Remove quotes if present
169
+ clean_word: str = word.strip('"\'')
170
+
171
+ # Check for path separators and file extensions
172
+ if ('/' in clean_word or '\\' in clean_word) and '.' in clean_word:
173
+ # Check if it has a reasonable extension (2-4 chars)
174
+ parts = clean_word.split('.')
175
+ if len(parts) >= 2 and 2 <= len(parts[-1]) <= 4:
176
+ return True
177
+
178
+ # Check for Windows absolute paths (C:\, D:\, etc.)
179
+ if len(clean_word) > 3 and clean_word[1:3] == ':\\':
180
+ return True
181
+
182
+ # Check for Unix absolute paths starting with /
183
+ if clean_word.startswith('/') and '.' in clean_word:
184
+ return True
185
+
186
+ return False
187
+
188
+ def is_number(word: str) -> bool:
189
+ try:
190
+ float(word.strip('.,;:!?'))
191
+ return True
192
+ except ValueError:
193
+ return False
194
+
195
+ def is_function_name(word: str) -> tuple[bool, str]:
196
+ # Check if word ends with () or just (, or it's a known built-in function
197
+ clean_word: str = word.rstrip('.,;:!?')
198
+ if clean_word.endswith(('()','(')) or clean_word in BUILTIN_FUNCTIONS:
199
+ return (True, clean_word)
200
+ return (False, "")
201
+
202
+ def is_exception(word: str) -> bool:
203
+ """ Check if a word is a known exception name """
204
+ return word.strip('.,;:!?') in EXCEPTION_NAMES
205
+
206
+ # Convert all values to strings and join them and split into words while preserving separators
207
+ text: str = " ".join(str(v) for v in values)
208
+ words: list[str] = re.split(r'(\s+)', text)
209
+
210
+ # Process each word
211
+ colored_words: list[str] = []
212
+ i: int = 0
213
+ while i < len(words):
214
+ word = words[i]
215
+
216
+ # Skip whitespace
217
+ if word.isspace():
218
+ colored_words.append(word)
219
+ i += 1
220
+ continue
221
+
222
+ # Try to identify and color the word
223
+ colored: bool = False
224
+ if is_filepath(word):
225
+ colored_words.append(f"{MAGENTA}{word}{RESET}")
226
+ colored = True
227
+ elif is_exception(word):
228
+ colored_words.append(f"{BOLD}{MAGENTA}{word}{RESET}")
229
+ colored = True
230
+ elif is_number(word):
231
+ # Preserve punctuation
232
+ clean_word = word.strip('.,;:!?')
233
+ prefix = word[:len(word) - len(word.lstrip('.,;:!?'))]
234
+ suffix = word[len(clean_word) + len(prefix):]
235
+ colored_words.append(f"{prefix}{MAGENTA}{clean_word}{RESET}{suffix}")
236
+ colored = True
237
+ elif is_function_name(word)[0]:
238
+ func_name = is_function_name(word)[1]
239
+ # Find where the function name ends in the original word
240
+ func_start = word.find(func_name)
241
+ if func_start != -1:
242
+ prefix = word[:func_start]
243
+ func_end = func_start + len(func_name)
244
+ suffix = word[func_end:]
245
+ colored_words.append(f"{prefix}{MAGENTA}{func_name}{RESET}{suffix}")
246
+ else:
247
+ # Fallback if we can't find it (shouldn't happen)
248
+ colored_words.append(f"{MAGENTA}{word}{RESET}")
249
+ colored = True
250
+
251
+ # If nothing matched, keep the word as is
252
+ if not colored:
253
+ colored_words.append(word)
254
+ i += 1
255
+
256
+ # Join and return
257
+ return "".join(colored_words)
258
+
259
+ def colored(
260
+ *values: Any,
261
+ file: TextIO | None = None,
262
+ **print_kwargs: Any,
263
+ ) -> None:
264
+ """ Print with Python 3.14 style colored formatting.
265
+
266
+ Dynamically colors text by analyzing each word:
267
+ - File paths in magenta
268
+ - Numbers in magenta
269
+ - Function names (built-in and callable objects) in magenta
270
+ - Exception names in bold magenta
271
+
272
+ Args:
273
+ values (Any): Values to print (like the print function)
274
+ file (TextIO): File to write the message to (default: sys.stdout)
275
+ print_kwargs (dict): Keyword arguments to pass to the print function
276
+
277
+ Examples:
278
+ >>> colored("File '/path/to/file.py', line 42, in function_name") # doctest: +SKIP
279
+ >>> colored("KeyboardInterrupt") # doctest: +SKIP
280
+ >>> colored("Processing data.csv with 100 items") # doctest: +SKIP
281
+ >>> colored("Using print and len functions") # doctest: +SKIP
282
+ """
283
+ if file is None:
284
+ file = sys.stdout
285
+
286
+ result: str = format_colored(*values)
287
+ print(result, file=file, **print_kwargs)
288
+
87
289
  def info(
88
290
  *values: Any,
89
291
  color: str = GREEN,
90
292
  text: str = "INFO ",
91
293
  prefix: str = "",
92
294
  file: TextIO | list[TextIO] | None = None,
295
+ use_colored: bool = False,
93
296
  **print_kwargs: Any,
94
297
  ) -> None:
95
298
  """ Print an information message looking like "[INFO HH:MM:SS] message" in green by default.
@@ -100,6 +303,7 @@ def info(
100
303
  text (str): Text of the message (default: "INFO ")
101
304
  prefix (str): Prefix to add to the values
102
305
  file (TextIO|list[TextIO]): File(s) to write the message to (default: sys.stdout)
306
+ use_colored (bool): Whether to use the colored() function to format the message
103
307
  print_kwargs (dict): Keyword arguments to pass to the print function
104
308
  """
105
309
  # Use stdout if no file is specified
@@ -109,7 +313,7 @@ def info(
109
313
  # If file is a list, recursively call info() for each file
110
314
  if isinstance(file, list):
111
315
  for f in file:
112
- info(*values, color=color, text=text, prefix=prefix, file=f, **print_kwargs)
316
+ info(*values, color=color, text=text, prefix=prefix, file=f, use_colored=use_colored, **print_kwargs)
113
317
  else:
114
318
  # Build the message with prefix, color, text and timestamp
115
319
  message: str = f"{prefix}{color}[{text} {current_time()}]"
@@ -119,7 +323,10 @@ def info(
119
323
  message = f"{LINE_UP}{message} (x{nb_values})"
120
324
 
121
325
  # Print the message with the values and reset color
122
- print(message, *values, RESET, file=file, **print_kwargs)
326
+ if use_colored:
327
+ print(message, format_colored(*values).replace(RESET, RESET+color), RESET, file=file, **print_kwargs)
328
+ else:
329
+ print(message, *values, RESET, file=file, **print_kwargs)
123
330
 
124
331
  def debug(*values: Any, **print_kwargs: Any) -> None:
125
332
  """ Print a debug message looking like "[DEBUG HH:MM:SS] message" in cyan by default. """
@@ -444,6 +651,26 @@ def current_time() -> str:
444
651
  else:
445
652
  return time.strftime("%H:%M:%S")
446
653
 
654
+ # Convenience colored functions
655
+ def infoc(*args: Any, **kwargs: Any) -> None:
656
+ return info(*args, use_colored=True, **kwargs)
657
+ def debugc(*args: Any, **kwargs: Any) -> None:
658
+ return debug(*args, use_colored=True, **kwargs)
659
+ def alt_debugc(*args: Any, **kwargs: Any) -> None:
660
+ return alt_debug(*args, use_colored=True, **kwargs)
661
+ def warningc(*args: Any, **kwargs: Any) -> None:
662
+ return warning(*args, use_colored=True, **kwargs)
663
+ def errorc(*args: Any, **kwargs: Any) -> None:
664
+ return error(*args, use_colored=True, **kwargs)
665
+ def progressc(*args: Any, **kwargs: Any) -> None:
666
+ return progress(*args, use_colored=True, **kwargs)
667
+ def suggestionc(*args: Any, **kwargs: Any) -> None:
668
+ return suggestion(*args, use_colored=True, **kwargs)
669
+ def whatisitc(*args: Any, **kwargs: Any) -> None:
670
+ return whatisit(*args, use_colored=True, **kwargs)
671
+ def breakpointc(*args: Any, **kwargs: Any) -> None:
672
+ return breakpoint(*args, use_colored=True, **kwargs)
673
+
447
674
 
448
675
  # Test the print functions
449
676
  if __name__ == "__main__":
stouputils/print.pyi CHANGED
@@ -9,6 +9,7 @@ BLUE: str
9
9
  MAGENTA: str
10
10
  CYAN: str
11
11
  LINE_UP: str
12
+ BOLD: str
12
13
  BAR_FORMAT: str
13
14
  T = TypeVar('T')
14
15
  previous_args_kwards: tuple[Any, Any]
@@ -35,7 +36,85 @@ def colored_for_loop[T](iterable: Iterable[T], desc: str = 'Processing', color:
35
36
  \t\t... time.sleep(0.01)
36
37
  \t\t>>> # Time sleeping loop: 100%|██████████████████| 10/10 [ 95.72it/s, 00:00<00:00]
37
38
  \t'''
38
- def info(*values: Any, color: str = ..., text: str = 'INFO ', prefix: str = '', file: TextIO | list[TextIO] | None = None, **print_kwargs: Any) -> None:
39
+ def format_colored(*values: Any) -> str:
40
+ ''' Format text with Python 3.14 style colored formatting.
41
+
42
+ \tDynamically colors text by analyzing each word:
43
+ \t- File paths in magenta
44
+ \t- Numbers in magenta
45
+ \t- Function names (built-in and callable objects) in magenta
46
+ \t- Exception names in bold magenta
47
+
48
+ \tArgs:
49
+ \t\tvalues\t(Any):\tValues to format (like the print function)
50
+
51
+ \tReturns:
52
+ \t\tstr: The formatted text with ANSI color codes
53
+
54
+ \tExamples:
55
+ \t\t>>> # Test function names with parentheses
56
+ \t\t>>> result = format_colored("Call print() with 42 items")
57
+ \t\t>>> result.count(MAGENTA) == 2 # print and 42
58
+ \t\tTrue
59
+
60
+ \t\t>>> # Test function names without parentheses
61
+ \t\t>>> result = format_colored("Use len and sum functions")
62
+ \t\t>>> result.count(MAGENTA) == 2 # len and sum
63
+ \t\tTrue
64
+
65
+ \t\t>>> # Test exceptions (bold magenta)
66
+ \t\t>>> result = format_colored("Got ValueError when parsing")
67
+ \t\t>>> result.count(MAGENTA) == 1 and result.count(BOLD) == 1 # ValueError in bold magenta
68
+ \t\tTrue
69
+
70
+ \t\t>>> # Test file paths
71
+ \t\t>>> result = format_colored("Processing ./data.csv file")
72
+ \t\t>>> result.count(MAGENTA) == 1 # ./data.csv
73
+ \t\tTrue
74
+
75
+ \t\t>>> # Test file paths with quotes
76
+ \t\t>>> result = format_colored(\'File "/path/to/script.py" line 42\')
77
+ \t\t>>> result.count(MAGENTA) == 2 # /path/to/script.py and 42
78
+ \t\tTrue
79
+
80
+ \t\t>>> # Test numbers
81
+ \t\t>>> result = format_colored("Found 100 items and 3.14 value")
82
+ \t\t>>> result.count(MAGENTA) == 2 # 100 and 3.14
83
+ \t\tTrue
84
+
85
+ \t\t>>> # Test mixed content
86
+ \t\t>>> result = format_colored("Call sum() got IndexError at line 256 in utils.py")
87
+ \t\t>>> result.count(MAGENTA) == 3 # sum, IndexError (bold), and 256
88
+ \t\tTrue
89
+ \t\t>>> result.count(BOLD) == 1 # IndexError is bold
90
+ \t\tTrue
91
+
92
+ \t\t>>> # Test plain text (no coloring)
93
+ \t\t>>> result = format_colored("This is plain text")
94
+ \t\t>>> result.count(MAGENTA) == 0 and result == "This is plain text"
95
+ \t\tTrue
96
+ \t'''
97
+ def colored(*values: Any, file: TextIO | None = None, **print_kwargs: Any) -> None:
98
+ ''' Print with Python 3.14 style colored formatting.
99
+
100
+ \tDynamically colors text by analyzing each word:
101
+ \t- File paths in magenta
102
+ \t- Numbers in magenta
103
+ \t- Function names (built-in and callable objects) in magenta
104
+ \t- Exception names in bold magenta
105
+
106
+ \tArgs:
107
+ \t\tvalues\t\t\t(Any):\t\tValues to print (like the print function)
108
+ \t\tfile\t\t\t(TextIO):\tFile to write the message to (default: sys.stdout)
109
+ \t\tprint_kwargs\t(dict):\t\tKeyword arguments to pass to the print function
110
+
111
+ \tExamples:
112
+ \t\t>>> colored("File \'/path/to/file.py\', line 42, in function_name") # doctest: +SKIP
113
+ \t\t>>> colored("KeyboardInterrupt") # doctest: +SKIP
114
+ \t\t>>> colored("Processing data.csv with 100 items") # doctest: +SKIP
115
+ \t\t>>> colored("Using print and len functions") # doctest: +SKIP
116
+ \t'''
117
+ def info(*values: Any, color: str = ..., text: str = 'INFO ', prefix: str = '', file: TextIO | list[TextIO] | None = None, use_colored: bool = False, **print_kwargs: Any) -> None:
39
118
  ''' Print an information message looking like "[INFO HH:MM:SS] message" in green by default.
40
119
 
41
120
  \tArgs:
@@ -44,6 +123,7 @@ def info(*values: Any, color: str = ..., text: str = 'INFO ', prefix: str = '',
44
123
  \t\ttext\t\t\t(str):\t\t\t\t\tText of the message (default: "INFO ")
45
124
  \t\tprefix\t\t\t(str):\t\t\t\t\tPrefix to add to the values
46
125
  \t\tfile\t\t\t(TextIO|list[TextIO]):\tFile(s) to write the message to (default: sys.stdout)
126
+ \t\tuse_colored\t\t(bool):\t\t\t\t\tWhether to use the colored() function to format the message
47
127
  \t\tprint_kwargs\t(dict):\t\t\t\t\tKeyword arguments to pass to the print function
48
128
  \t'''
49
129
  def debug(*values: Any, **print_kwargs: Any) -> None:
@@ -134,3 +214,12 @@ def is_same_print(*args: Any, **kwargs: Any) -> bool:
134
214
  """ Checks if the current print call is the same as the previous one. """
135
215
  def current_time() -> str:
136
216
  ''' Get the current time as "HH:MM:SS" if less than 24 hours since import, else "YYYY-MM-DD HH:MM:SS" '''
217
+ def infoc(*args: Any, **kwargs: Any) -> None: ...
218
+ def debugc(*args: Any, **kwargs: Any) -> None: ...
219
+ def alt_debugc(*args: Any, **kwargs: Any) -> None: ...
220
+ def warningc(*args: Any, **kwargs: Any) -> None: ...
221
+ def errorc(*args: Any, **kwargs: Any) -> None: ...
222
+ def progressc(*args: Any, **kwargs: Any) -> None: ...
223
+ def suggestionc(*args: Any, **kwargs: Any) -> None: ...
224
+ def whatisitc(*args: Any, **kwargs: Any) -> None: ...
225
+ def breakpointc(*args: Any, **kwargs: Any) -> None: ...
stouputils/py.typed CHANGED
@@ -1 +1 @@
1
-
1
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: stouputils
3
- Version: 1.14.3
3
+ Version: 1.15.1
4
4
  Summary: Stouputils is a collection of utility modules designed to simplify and enhance the development process. It includes a range of tools for tasks such as execution of doctests, display utilities, decorators, as well as context managers, and many more.
5
5
  Keywords: utilities,tools,helpers,development,python
6
6
  Author: Stoupy51
@@ -37,104 +37,104 @@ stouputils/continuous_delivery/stubs.py,sha256=xUAcP21Y03PLEr7X6LrIBMvPeLI8Rp-Ey
37
37
  stouputils/continuous_delivery/stubs.pyi,sha256=sLZypdz1oGoymQIRPez50rnH8TQhvEIx6A7xUdGtnys,2390
38
38
  stouputils/ctx.py,sha256=KVVDmL3pAPX2WM_QzjsmctbG-YfjJ-4aWBSoI7eU_ws,15586
39
39
  stouputils/ctx.pyi,sha256=-7AJwD9bKzKBFsYlgyULPznstq3LvXRXe2r_2at72FI,9799
40
- stouputils/data_science/config/get.py,sha256=-9Yo5go7sw7eZNDwMfV3V9qOyk6q3Nrrb0V1eg-F1LE,1722
40
+ stouputils/data_science/config/get.py,sha256=smdWcu5bBlY38WGtC3GzIF2el-gpvSlDMRNsypmr0JM,1773
41
41
  stouputils/data_science/config/set.py,sha256=PBBnWhgSptWTPkMtq3N1UxmEz_E4ywUcl3daS43wA2M,4175
42
- stouputils/data_science/data_processing/image/__init__.py,sha256=dJY410JsVxfwloQiH1TPAwxVsRYAI4vhaZ3w1IAkUCk,1823
43
- stouputils/data_science/data_processing/image/auto_contrast.py,sha256=grKz4cxMEnLWAP6k4o0CuFyzcw8_v51d6Ep3fufb6Ew,2289
44
- stouputils/data_science/data_processing/image/axis_flip.py,sha256=6OsDeA6SK_jIv3NcbCEe4Q5NzH3KgWIPQf-EWkLzTP0,1663
45
- stouputils/data_science/data_processing/image/bias_field_correction.py,sha256=2Y6l5fvr1gcp4lE0nQIFwfP_LX6mgDa6U_G_sQ5yr6w,2387
46
- stouputils/data_science/data_processing/image/binary_threshold.py,sha256=YGeF1_9WGCybq9pG3lF1pWQznhh9pUY7L-lpQwdkJo0,2453
47
- stouputils/data_science/data_processing/image/blur.py,sha256=Ud410O78KxfDE8DmlwrDDALZ3g48ZhGtomDg0iO3hgI,1693
48
- stouputils/data_science/data_processing/image/brightness.py,sha256=llOhXGTyMp06Qt3Pp-VJl7ser2r3qG8nBdq6O7Ox6U8,1671
49
- stouputils/data_science/data_processing/image/canny.py,sha256=hlEJh3V24xMiHzZC23a05_ptdvQGw_oxRWC4GDHL4BQ,3860
50
- stouputils/data_science/data_processing/image/clahe.py,sha256=eKGUktjZ0bO7DWjEzc4BYQboVVrU9y7n2FF_Yd1fmcU,3042
51
- stouputils/data_science/data_processing/image/common.py,sha256=VpOyvYqn5Xfok0UpwuSXplHvs0KQH8OK86YJT_bA8dA,724
52
- stouputils/data_science/data_processing/image/contrast.py,sha256=LhcYFND1j_aEv41aa4p8kUWYBqex-hLTgSKD4U8JQY8,1614
53
- stouputils/data_science/data_processing/image/curvature_flow_filter.py,sha256=zfz0oBKyUHP3rTxLfnemGPsiRyxo75jnl7A0mLV_J4A,2453
54
- stouputils/data_science/data_processing/image/denoise.py,sha256=Ipw_KiOJ7uj38XQZnrP9trUwBjgpbAKWYmpNrKeLpq0,12747
55
- stouputils/data_science/data_processing/image/histogram_equalization.py,sha256=kHoXwjHOGpE6f8jQ0U6HAhJJOqNLDVyMJovlshaiiqs,4570
56
- stouputils/data_science/data_processing/image/invert.py,sha256=ny0iYj4Pjm3Kcbqeo4fyvD3MtMCk9amN-Wd3jceJn0c,1878
57
- stouputils/data_science/data_processing/image/laplacian.py,sha256=VzHsQhiQNm1pdpYtl_ll-56XG0K7S5IpkvH4mxWoHko,2026
58
- stouputils/data_science/data_processing/image/median_blur.py,sha256=XGsGSZU2a6ZbAYC3H0jsv17bCHvEO0V5sw4U-5YCs1M,1500
59
- stouputils/data_science/data_processing/image/noise.py,sha256=0hMUXNCpTuz6iBSbyrGcuSi9HviVGXAd3K5sl_XnXSA,1877
60
- stouputils/data_science/data_processing/image/normalize.py,sha256=I1PHrRUWuw0EhDl5lAhGVv_KcRQoRddRGP4dWxyXWBQ,1917
61
- stouputils/data_science/data_processing/image/random_erase.py,sha256=Ogns0isVYBFZZ0l9EcU3Ry_uUcsPDfHCPjtwX7go63o,2107
62
- stouputils/data_science/data_processing/image/resize.py,sha256=qm_hQ4CZQaHwTKUEed4jom8YKykINadWGzPVU1zZPbc,2059
63
- stouputils/data_science/data_processing/image/rotation.py,sha256=dSILkh2CiaDq08pwqmTkKOOpBtCEab7S2GlMPjnV60o,2486
64
- stouputils/data_science/data_processing/image/salt_pepper.py,sha256=Xxor8wgf0QbLeCx-6r6qJAg7W4r4iqilTjmNvPiF3sk,2087
65
- stouputils/data_science/data_processing/image/sharpening.py,sha256=74G0HFYtx8jChiEJLao5auA8K0FhwPWWRKXQ_-HjEyM,1580
66
- stouputils/data_science/data_processing/image/shearing.py,sha256=SxTjFLfA7phmapsTtqVVHYfohJ3gatFJANrgCLonraI,2038
67
- stouputils/data_science/data_processing/image/threshold.py,sha256=PvtvUmB-D7yNZcFuWYORTYYUyxMvrUY2PzAthdsalMw,2301
68
- stouputils/data_science/data_processing/image/translation.py,sha256=i_znbYfbRl5fwvxmoQ-pOIH81lyczK7tSHl1HkHoZJs,2460
69
- stouputils/data_science/data_processing/image/zoom.py,sha256=hIbmz3mgFKn_Z-4Rco50MuLUH20zojLQSura4fQuaQA,2613
70
- stouputils/data_science/data_processing/image_augmentation.py,sha256=92saGKarKUpf1pr8YRr5V27tW7tAZF6_fnOjU95aCbo,4689
71
- stouputils/data_science/data_processing/image_preprocess.py,sha256=YI2peax6xOLOWUMLp3WYLbdCtJiwF8vmBweGJJQlON0,6318
72
- stouputils/data_science/data_processing/prosthesis_detection.py,sha256=g4Hdgkm7MYEvUiAtQ_afqLNYIQzpTGfc7VA4AOqg-xY,13111
73
- stouputils/data_science/data_processing/technique.py,sha256=pNwA-WCgvnIU5RtolHuMoCgmoRE7vCoaJ7B1KWgEAN0,19655
74
- stouputils/data_science/dataset/__init__.py,sha256=1ZECQgOI3mlD0ZQiYRakFXBvZiA8Wo2rkFjqkFyXiP0,1559
75
- stouputils/data_science/dataset/dataset.py,sha256=uREMmOMhcivJRssv_wl3iU1iX60JmimlX31tjKsr7-0,11274
76
- stouputils/data_science/dataset/dataset_loader.py,sha256=uFFtNPpgx_cb0gbkgCiERSHi5dWERI9Hn7ZaHGCY2Iw,4427
77
- stouputils/data_science/dataset/grouping_strategy.py,sha256=UultwqG49mJ7MdboSPRbbSsNA_5Q2QnTsEZpyXXqHyY,10650
78
- stouputils/data_science/dataset/image_loader.py,sha256=jIb3Bnz5ZzC_ZLRuED_okf9E0bPDB9YHK-dZejqdI8g,3900
79
- stouputils/data_science/dataset/xy_tuple.py,sha256=werLpkA8KmZtgPAqA50h6lfb-6lKwv2Qac1MzAB7fVM,25378
80
- stouputils/data_science/metric_dictionnary.py,sha256=tdFAGRecuU0HxhS_wDxfbpwOT4ge5PsrsQJXVQ6glG4,3844
42
+ stouputils/data_science/data_processing/image/__init__.py,sha256=ovzV48Bn0tyKXnAMMdujzwT89-1g-PK7GYNlHBrMt9Q,1889
43
+ stouputils/data_science/data_processing/image/auto_contrast.py,sha256=xDwnv-suNHgO1sjWK09WulJeQVyGJIGH0ZyqrJldeX4,2368
44
+ stouputils/data_science/data_processing/image/axis_flip.py,sha256=fu7aD_qZltymmC541JpZs2XJcN4A1EO2Vp_44S-ZCv0,1721
45
+ stouputils/data_science/data_processing/image/bias_field_correction.py,sha256=nBOD2t2ZzGal-x6NRqFxWdsKVb_9ELqjY9G4Q06CzQ4,2461
46
+ stouputils/data_science/data_processing/image/binary_threshold.py,sha256=vRd7PMp5srRwyPAbAm9bGexb6uU-C-zWT7itNyOSMLE,2526
47
+ stouputils/data_science/data_processing/image/blur.py,sha256=i92IEiy_nYV-s025k6tMJn0IsD-C39TWYGIuP1oxmOU,1752
48
+ stouputils/data_science/data_processing/image/brightness.py,sha256=_uv-qouAWh8Up9DpTQImZcbxSNx8xQ7ltGbA-F7PkSE,1725
49
+ stouputils/data_science/data_processing/image/canny.py,sha256=3T_B3Lt3oLRSJC-JSJ4JONMXSnLUiHNREjB_69T76V4,3970
50
+ stouputils/data_science/data_processing/image/clahe.py,sha256=ryAT7uxfxzGv3GdialqVlmkS1UCGT79Jg39mCuM9Mzs,3134
51
+ stouputils/data_science/data_processing/image/common.py,sha256=wCRO6x8c1bV7PNDylcRogkePNfteUcYoXtgZuaKJthY,754
52
+ stouputils/data_science/data_processing/image/contrast.py,sha256=deC3m5c4sCpF0LpjUPne6DookXskBEUfEA8sBTCrpcM,1667
53
+ stouputils/data_science/data_processing/image/curvature_flow_filter.py,sha256=SdI_x6sWsIlHSTAgbPERRsyi8kKgQojcwQYtcUCttBQ,2527
54
+ stouputils/data_science/data_processing/image/denoise.py,sha256=V6y1lIcRZqXSLt9gQee77Zv_ghxbx25umHFV-L1ogOU,13125
55
+ stouputils/data_science/data_processing/image/histogram_equalization.py,sha256=EwPEY7vS3JLAAH7lvXuyD9EyBIWPCkD08nvWiXyWAB4,4693
56
+ stouputils/data_science/data_processing/image/invert.py,sha256=RRFZEEjE-7vbq9x-ldZp2mXYggPg7xA3CJUpQ2iXdQw,1942
57
+ stouputils/data_science/data_processing/image/laplacian.py,sha256=Uf8kj--_8Obdr9rQl_MXRcmqlCWYNZ8Jh6gOKnjWuF4,2086
58
+ stouputils/data_science/data_processing/image/median_blur.py,sha256=a3VuZAyggmodIWPX2zEAnjtED_HezdE6PMxDot06y2s,1552
59
+ stouputils/data_science/data_processing/image/noise.py,sha256=U3MA-Jw5DAjSE24-zptUt85QoUXzYtt1c7JhlscE3iI,1936
60
+ stouputils/data_science/data_processing/image/normalize.py,sha256=uCZNrf-WHT41ZvRNxBiNlGtGZ71ocrBRIUjYO2BMuO0,1982
61
+ stouputils/data_science/data_processing/image/random_erase.py,sha256=M1kmscbG0idwZd33b8ZUEj50Nn-QARSIZlTXqfOsY_Q,2173
62
+ stouputils/data_science/data_processing/image/resize.py,sha256=p-EE_77sgweelDhNoXNuX3qW23jEpgZtDmfJdhPonhA,2128
63
+ stouputils/data_science/data_processing/image/rotation.py,sha256=ZY0oQnQPzikt9lmJSPo4MVE_nNI67_7apYSNJT-GHbY,2566
64
+ stouputils/data_science/data_processing/image/salt_pepper.py,sha256=Dp9_BNVPifM54PAQsIcmKN0n6GuklFboqCH3E-vqMpE,2155
65
+ stouputils/data_science/data_processing/image/sharpening.py,sha256=HHZNalFXyEQRdp3pN1bI3fZKcHdnkWZRb9OBt7Sw3O0,1635
66
+ stouputils/data_science/data_processing/image/shearing.py,sha256=ikT5YuE3w31lC9lX7qtM8JTJGpzfHmX-gMcdLy8eS3Y,2102
67
+ stouputils/data_science/data_processing/image/threshold.py,sha256=rQjlpzoVJqq8KwAB0LF_LZBm2bcaovEN7IElfHD7bKM,2365
68
+ stouputils/data_science/data_processing/image/translation.py,sha256=PKwKOA9L6OuTiROFd6cO9ze2d0nGzwLN6u1R59AKoqU,2531
69
+ stouputils/data_science/data_processing/image/zoom.py,sha256=p8QSL6El7KYEM_iLmC_wANdv1oWNKHpeQBb_fsCYOiw,2696
70
+ stouputils/data_science/data_processing/image_augmentation.py,sha256=7fUKxI3laHiVWOG91Y1OfKQn45-KQ1GO3gIywNR5FRI,4807
71
+ stouputils/data_science/data_processing/image_preprocess.py,sha256=qjko0aL-8T5cLIifOvhDBPSmmr4JRRqdtrWnapxd59s,6501
72
+ stouputils/data_science/data_processing/prosthesis_detection.py,sha256=SgJuKhdXX2xL05ABVePs-jEB22l83KNhEOJh7pjxtcE,13470
73
+ stouputils/data_science/data_processing/technique.py,sha256=rql-ObXZKxEZDerYstGNNPsGUNV73aSU7ABDM6-lhXE,20136
74
+ stouputils/data_science/dataset/__init__.py,sha256=FptJEc5mkzIM95ZmHv3SW3RCfE9SSykroE7uBA86zH0,1604
75
+ stouputils/data_science/dataset/dataset.py,sha256=IRca5EXiLQf4QgPnKY4b3hAG4p1s-QQ46r7mIx0NOIQ,11566
76
+ stouputils/data_science/dataset/dataset_loader.py,sha256=XExz1oYcQUYxSKU0-U7FTaCzIHK0rdCdHKOH0OOv5Rg,4562
77
+ stouputils/data_science/dataset/grouping_strategy.py,sha256=rykG-TfSEzDyb7R8HjZfoNJMiepknOMF8nDSOZFNBgA,10946
78
+ stouputils/data_science/dataset/image_loader.py,sha256=pqQvAEfxVvyzpdvbiSMIQGIj27v8bP3aLtHmbXBywE8,4000
79
+ stouputils/data_science/dataset/xy_tuple.py,sha256=tovKezsldERHEJX_DI9NzuA_6WOiwQFwZoL5u_zVzvc,26074
80
+ stouputils/data_science/metric_dictionnary.py,sha256=_bOybn8Bt-Fbp4Qis18hYmrA3t8oAjunAd7v432edFY,3950
81
81
  stouputils/data_science/metric_utils.py,sha256=cHO1eS-gUZdfGfx4sMUXczMgrJScPLesciN9NGLQysI,34006
82
- stouputils/data_science/mlflow_utils.py,sha256=ecO7FGs1_tZo2_GY7LDSoGR6J2Qst-OZHy9xrhM5r9Y,7069
83
- stouputils/data_science/models/abstract_model.py,sha256=vT59CQqRBQqyL1W4hIWZ5kcX9gmeDOiDOrtJYMW1Mtw,3955
84
- stouputils/data_science/models/all.py,sha256=RLK1tyzTQpE9F6dWMLKdF3Jgu9Bp2cQ4wvdKJiYiVow,3039
82
+ stouputils/data_science/mlflow_utils.py,sha256=_fM7LljiojYgGF3zpOlIVzKW_CnVVJzpCLwmPEKrUVw,7275
83
+ stouputils/data_science/models/abstract_model.py,sha256=cZmYA4-Sb5Q2ySzQqsNy3KoEWAgcsQdzMTC1ff3gyPg,4104
84
+ stouputils/data_science/models/all.py,sha256=BfBJO8PGGMDbWuAXB90JT-vne8rAo0yVnyL_t4PuO5E,3124
85
85
  stouputils/data_science/models/base_keras.py,sha256=bOQ6Uk0dILgcjnCT2KehUdc99btOzf5C7xC3Ljx4FUM,27764
86
- stouputils/data_science/models/keras/all.py,sha256=Cu4DwOPIYMEhaR4oxZii0wJlDRfdGQ-0bG_mzk6IU6A,1003
87
- stouputils/data_science/models/keras/convnext.py,sha256=ai6D3cgISG82I6SdG6Xw_0DM94459p6VqV4Bvl8P3CU,2533
88
- stouputils/data_science/models/keras/densenet.py,sha256=rY93tDMFctzNQ3gZPLVovxI0uomYSQdWRcCAfdn3yy4,1808
89
- stouputils/data_science/models/keras/efficientnet.py,sha256=sZQdwN-5KX3yC5KpYvMb8gSM7Iq4si6AcCCPjo3kwAk,2442
90
- stouputils/data_science/models/keras/mobilenet.py,sha256=7xebi3kBw0bt9wQOoHvusz0CFQ5Yc6kgfSj1gR6v12k,2257
91
- stouputils/data_science/models/keras/resnet.py,sha256=jfICmeuUb0buQCFG-CD3nKitZsnAhAEuKILp_O6ErTc,1789
92
- stouputils/data_science/models/keras/squeezenet.py,sha256=gtcR5h4sQJ1JXBGbpj6tHLOFpQegkCI1fojhWs6bJbI,8357
93
- stouputils/data_science/models/keras/vgg.py,sha256=g9c4plPrPU2pBwTcdlh7nTZq4bmHT_iRhGJxQ5OQMcQ,1503
94
- stouputils/data_science/models/keras/xception.py,sha256=NKv5zTNtPiR3oV7_X-FIFvt5kITNfcgF12RgJFpcLTI,1257
95
- stouputils/data_science/models/keras_utils/callbacks/__init__.py,sha256=Wvlbv7dAZd6stAJKi1kPevNVwpG6ULme_Pl-ZAFV8nE,853
96
- stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py,sha256=a6zjVzXsheU2l-ecRWhSC0Vkyk55eWbp74C8NQFert4,7641
97
- stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py,sha256=ftimXot3or5ykJwauv1_-JjUScq7ckX4XjMSDnecBcE,5058
98
- stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py,sha256=KTsVin5sozwy6XVDt1Vj7J6obrkGH40NV-AfX4mBmq4,935
99
- stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py,sha256=okoiMpJ0a_DKY9ZE6JIdovbxn--Ao-XbE74xC_baKEk,9605
100
- stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py,sha256=6aErEB8XHfvgqGqG8sFRtmMyZW-VSXbEK2OiIHmCujM,2312
101
- stouputils/data_science/models/keras_utils/losses/__init__.py,sha256=6HQkqTZd-W3YPrxg_-2956j_iCmLm4PmbeW2uIPv-4I,174
102
- stouputils/data_science/models/keras_utils/losses/next_generation_loss.py,sha256=SA2HUxsYNadtGQ9wVmrFQY0J218o8hOeJGlqeDpZXUk,1578
103
- stouputils/data_science/models/keras_utils/visualizations.py,sha256=JWfDqC6MhbQSDY9O3adCMhB3IOri8FRZ4g-30Y4mZQo,15451
86
+ stouputils/data_science/models/keras/all.py,sha256=-InRH5x-5bZsbBGqnuCxDtAg59dTcvhDqYsnqiJtmgs,1041
87
+ stouputils/data_science/models/keras/convnext.py,sha256=3CMhnK_dZgCS6Y0XorRu1QKm12RexdH7HG1-ZISHBlo,2595
88
+ stouputils/data_science/models/keras/densenet.py,sha256=b4mPfwvibhrrIBpFtkcmRWmJXxfx0pNfxcE7t0KLSQg,1858
89
+ stouputils/data_science/models/keras/efficientnet.py,sha256=or4zHeBt82nBnXSNr3AJdziNz8F4wTZZeAmR2IRPkps,2502
90
+ stouputils/data_science/models/keras/mobilenet.py,sha256=ugPYSp_2g3QL_qPBfOZZx0gk2kMeZpic6WkFDvLoveM,2313
91
+ stouputils/data_science/models/keras/resnet.py,sha256=DJexThuFCnYj4cRaa80CunizkOtEu721nLN4UjC3Cko,1841
92
+ stouputils/data_science/models/keras/squeezenet.py,sha256=fvM3xrpRUwKWL6Ter04HosoZkvfK9OCHuH7v1qPXAzY,8590
93
+ stouputils/data_science/models/keras/vgg.py,sha256=D3UJ2uGu8O6bXUUv2tBFwFrXru-oUSjtsbvBPo1WPfc,1545
94
+ stouputils/data_science/models/keras/xception.py,sha256=PHMAQHgM6P9OocC__BBiTLYtc_q7NQ_liug0tQWZ328,1295
95
+ stouputils/data_science/models/keras_utils/callbacks/__init__.py,sha256=211evA7wPJVL5rJ-qGZq1oMj5e-RpZr0_HGfMupGGfo,873
96
+ stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py,sha256=b321QLJu3q7S6ThQeHu7s6PXsm5h0JIFugq5wcUiYLo,7860
97
+ stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py,sha256=p6gIR-Rj2NBGAfWRrhDsS_XViA50nBcPCDDTXCylonk,5206
98
+ stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py,sha256=_9UXBP-Ryef_WCpRaWT0exhSX8VLezXF-FRDMlYTc58,966
99
+ stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py,sha256=MD3V3Uj-7D6Z5jPr09GKBx2HnOgKn7CY4BHzuyVWCoo,9854
100
+ stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py,sha256=WeP3YyoXyMBuLmzW9TqSIx1Sf1dEOoNYhNLvsK3JlSs,2378
101
+ stouputils/data_science/models/keras_utils/losses/__init__.py,sha256=W8NELTZJ217yY8-Pr614a6W5o4_yWuEboCm4e1N6yZY,186
102
+ stouputils/data_science/models/keras_utils/losses/next_generation_loss.py,sha256=U0HfYUVNi1b5YRA9XtB9dpSZ7D3jkEUrEonmlVd3sbY,1634
103
+ stouputils/data_science/models/keras_utils/visualizations.py,sha256=XQDPgLHosKdUxV-B6s73lVmgiTqmmxuov-VTNxnA5_c,15867
104
104
  stouputils/data_science/models/model_interface.py,sha256=om1hnEYHTILfLJRcoTDhR7Rj0lbmW_8zIJkTIGuTqOQ,37140
105
- stouputils/data_science/models/sandbox.py,sha256=hi2RB-BDYrNv69qLTXi37qBMEKd1qHBrzZ435qVVja8,4153
106
- stouputils/data_science/range_tuple.py,sha256=tSLi9p9S1Bn809BJPGG_xRMBQ_cfspfAEI5siOgD2ls,6674
105
+ stouputils/data_science/models/sandbox.py,sha256=ZeuoXNHnVvMlm6umCgTl2Ss0zyQSlxFEV9xJb3ET1Qw,4269
106
+ stouputils/data_science/range_tuple.py,sha256=5f5PQcwENZEMV0O6U5IpZ2_ylNMB_graDyv-wxrDUhk,6908
107
107
  stouputils/data_science/scripts/augment_dataset.py,sha256=zGcQ2uSn_DO570NIFEs2DUc_d5uvWxLfY-RavjdO3aU,3469
108
108
  stouputils/data_science/scripts/exhaustive_process.py,sha256=Ty2lHBZBweWxH6smpjoUEqpGz6JmMUO_oaNZO7d-gtQ,5483
109
109
  stouputils/data_science/scripts/preprocess_dataset.py,sha256=OLC2KjEtSMeyHHPpNOATfNDuq0lZ09utKhsuzBA4MN4,2929
110
110
  stouputils/data_science/scripts/routine.py,sha256=FkTLzmcdm_qUp69D-dPAKJm2RfXZZLtPgje6lEopu2I,7662
111
- stouputils/data_science/utils.py,sha256=MQ5-S21W2uvtKiwUFsyKJdeN9s9y7MxuvjfjRbwKTD8,10799
112
- stouputils/decorators.py,sha256=bheT64aWNE22yQePB_5-JMQ4Ezm-1VcTg2WRZaJB2r4,21534
113
- stouputils/decorators.pyi,sha256=_ZPqr84G316gkj_cq_LZGuCMhSyGBWunvlxM5Cq9Hvo,10944
111
+ stouputils/data_science/utils.py,sha256=HFXI2RQZ53RbBOn_4Act2bi0z4xQlTtsuR5Am80v9JU,11084
112
+ stouputils/decorators.py,sha256=miZ8r2g8VhmQs2_knkKuUagdQabriZe7w0fCOEB69Nw,21838
113
+ stouputils/decorators.pyi,sha256=vbPRsvox4dotqcln3StgE6iZ1cWCOeAn56M9zMpdw2U,10948
114
114
  stouputils/image.py,sha256=NtduEVzgbCuZhDRpDZHGTW7-wTs7MqoxUwSQcipvb08,16633
115
115
  stouputils/image.pyi,sha256=Dkf64KmXJTAEcbtYDHFZ1kqEHqOf2FgJ2Z2BlJgp4fU,8455
116
- stouputils/installer/__init__.py,sha256=Ff_al_z6GSaazLHqfsSxsxmooXcIRmE--ffb1gZt0Q0,484
116
+ stouputils/installer/__init__.py,sha256=DBwI9w3xvw0NR_jDMxmURwPi1F79kPLe7EuNjmrxW_U,502
117
117
  stouputils/installer/__init__.pyi,sha256=ZB-8frAUOW-0pCEJL-e2AdbFodivv46v3EBYwEXCxRo,117
118
118
  stouputils/installer/common.py,sha256=UJr5u02h4LQZQdkmVOkJ3vvW_0-ROGgVMMh0PNoVS1A,2209
119
119
  stouputils/installer/common.pyi,sha256=5aG0-58omFkkNYeVHnQ0uHUBsaI7xoMD-WqWVdOgOms,1403
120
120
  stouputils/installer/downloader.py,sha256=IIV_zI1lnKCD-9OsnroOoo4nDPOLr2Vn6oOYHnXshj8,3659
121
121
  stouputils/installer/downloader.pyi,sha256=8Xp0sXyba4flHAZ0nNqNlFU4VUmfPvllmPUkWalkvRA,1273
122
- stouputils/installer/linux.py,sha256=5hlG7sh4Idk6rBXbfWP9oU-99TNd6njl9D5FjSnux1o,5368
122
+ stouputils/installer/linux.py,sha256=6BsMFoBDn1-RPMCW8rAciuxHwxbk9QTX0DmA-meQdDE,5512
123
123
  stouputils/installer/linux.pyi,sha256=V-EbY7seOFnC6LL844bqWRNvQ7rHmMhDkcFj5r1V7Tk,1943
124
- stouputils/installer/main.py,sha256=pbcEdKOX1P4VLJlVjzxq-hmdk6zrFt_V3aj6pYYQ8cY,8315
124
+ stouputils/installer/main.py,sha256=8wrx_cnQo1dFGRf6x8vtxh6-96tQ-AzMyvJ0S64j0io,8538
125
125
  stouputils/installer/main.pyi,sha256=r3j4GoMBpU06MpOqjSwoDTiSMOmbA3WWUA87970b6KE,3134
126
- stouputils/installer/windows.py,sha256=WJcsRvEj00uAlJVAWgePhR7Hq0chYE0_n2QUZG9011A,4744
126
+ stouputils/installer/windows.py,sha256=r2AIuoyAmtMEuoCtQBH9GWQWI-JUT2J9zoH28j9ruOU,4880
127
127
  stouputils/installer/windows.pyi,sha256=tHogIFhPVDQS0I10liLkAxnpaFFAvmFtEVMpPIae5LU,1616
128
- stouputils/io.py,sha256=yQ4jGWoI81cP-ZWxgYwqXmuD6s_IbpkKkZf5jjqqIAE,16841
128
+ stouputils/io.py,sha256=XG2cReP8wzmoe0LyMtUqvEqixiHehPvXW23h5hBf_Pw,17202
129
129
  stouputils/io.pyi,sha256=TCBTVEWUkI3dO_jWI9oPMF9SbnT1yLzFChE551JPbSY,9076
130
- stouputils/parallel.py,sha256=_o96klxFYgDPyxCeqFp5qNOtJhhXHQYmFIfqbJYnxko,19061
131
- stouputils/parallel.pyi,sha256=ug9I-Ni2q9cwwByXERQuxW-UM3rqw3dCiurnJjOWUpI,11576
132
- stouputils/print.py,sha256=BGPGu8SfIWhIjFRoUI2VaSCVGFhbBumYq9U2g1K-5uQ,16627
133
- stouputils/print.pyi,sha256=TtP-OuK22uwsP0Wcruy0FxG_zD3fFwHUpxNp34HgCUU,6745
134
- stouputils/py.typed,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
130
+ stouputils/parallel.py,sha256=eyd5eNLraGC2BFpI3RNyLqkPhgTqYwFWhkNBPEBvV9g,22161
131
+ stouputils/parallel.pyi,sha256=BTAtl4TFr71LgV3nVBY-yjpxUxlt9m6O2q82tNFHlbE,12420
132
+ stouputils/print.py,sha256=crcvgJO-NCbQ6-C3Prsxvsn8E9mPKI186t_xcQ6O2Uo,24527
133
+ stouputils/print.pyi,sha256=SRAAdObriW_LPcqvDGrCpjfGLrswRhIyJmCvC9_3OpM,10232
134
+ stouputils/py.typed,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
135
135
  stouputils/version_pkg.py,sha256=Jsp-s03L14DkiZ94vQgrlQmaxApfn9DC8M_nzT1SJLk,7014
136
136
  stouputils/version_pkg.pyi,sha256=QPvqp1U3QA-9C_CC1dT9Vahv1hXEhstbM7x5uzMZSsQ,755
137
- stouputils-1.14.3.dist-info/WHEEL,sha256=eycQt0QpYmJMLKpE3X9iDk8R04v2ZF0x82ogq-zP6bQ,79
138
- stouputils-1.14.3.dist-info/entry_points.txt,sha256=tx0z9VOnE-sfkmbFbA93zaBMzV3XSsKEJa_BWIqUzxw,57
139
- stouputils-1.14.3.dist-info/METADATA,sha256=ZVcCoefkLLJlZz6C20QotomXv78x7Bdt3D1CVqqkB4Y,13615
140
- stouputils-1.14.3.dist-info/RECORD,,
137
+ stouputils-1.15.1.dist-info/WHEEL,sha256=XjEbIc5-wIORjWaafhI6vBtlxDBp7S9KiujWF1EM7Ak,79
138
+ stouputils-1.15.1.dist-info/entry_points.txt,sha256=tx0z9VOnE-sfkmbFbA93zaBMzV3XSsKEJa_BWIqUzxw,57
139
+ stouputils-1.15.1.dist-info/METADATA,sha256=w8d49DqhoIyyqs_sGnpm0rqQfCoie9vd346-C454ufc,13615
140
+ stouputils-1.15.1.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: uv 0.9.24
2
+ Generator: uv 0.9.25
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any