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.
- stouputils/data_science/config/get.py +51 -51
- stouputils/data_science/data_processing/image/__init__.py +66 -66
- stouputils/data_science/data_processing/image/auto_contrast.py +79 -79
- stouputils/data_science/data_processing/image/axis_flip.py +58 -58
- stouputils/data_science/data_processing/image/bias_field_correction.py +74 -74
- stouputils/data_science/data_processing/image/binary_threshold.py +73 -73
- stouputils/data_science/data_processing/image/blur.py +59 -59
- stouputils/data_science/data_processing/image/brightness.py +54 -54
- stouputils/data_science/data_processing/image/canny.py +110 -110
- stouputils/data_science/data_processing/image/clahe.py +92 -92
- stouputils/data_science/data_processing/image/common.py +30 -30
- stouputils/data_science/data_processing/image/contrast.py +53 -53
- stouputils/data_science/data_processing/image/curvature_flow_filter.py +74 -74
- stouputils/data_science/data_processing/image/denoise.py +378 -378
- stouputils/data_science/data_processing/image/histogram_equalization.py +123 -123
- stouputils/data_science/data_processing/image/invert.py +64 -64
- stouputils/data_science/data_processing/image/laplacian.py +60 -60
- stouputils/data_science/data_processing/image/median_blur.py +52 -52
- stouputils/data_science/data_processing/image/noise.py +59 -59
- stouputils/data_science/data_processing/image/normalize.py +65 -65
- stouputils/data_science/data_processing/image/random_erase.py +66 -66
- stouputils/data_science/data_processing/image/resize.py +69 -69
- stouputils/data_science/data_processing/image/rotation.py +80 -80
- stouputils/data_science/data_processing/image/salt_pepper.py +68 -68
- stouputils/data_science/data_processing/image/sharpening.py +55 -55
- stouputils/data_science/data_processing/image/shearing.py +64 -64
- stouputils/data_science/data_processing/image/threshold.py +64 -64
- stouputils/data_science/data_processing/image/translation.py +71 -71
- stouputils/data_science/data_processing/image/zoom.py +83 -83
- stouputils/data_science/data_processing/image_augmentation.py +118 -118
- stouputils/data_science/data_processing/image_preprocess.py +183 -183
- stouputils/data_science/data_processing/prosthesis_detection.py +359 -359
- stouputils/data_science/data_processing/technique.py +481 -481
- stouputils/data_science/dataset/__init__.py +45 -45
- stouputils/data_science/dataset/dataset.py +292 -292
- stouputils/data_science/dataset/dataset_loader.py +135 -135
- stouputils/data_science/dataset/grouping_strategy.py +296 -296
- stouputils/data_science/dataset/image_loader.py +100 -100
- stouputils/data_science/dataset/xy_tuple.py +696 -696
- stouputils/data_science/metric_dictionnary.py +106 -106
- stouputils/data_science/mlflow_utils.py +206 -206
- stouputils/data_science/models/abstract_model.py +149 -149
- stouputils/data_science/models/all.py +85 -85
- stouputils/data_science/models/keras/all.py +38 -38
- stouputils/data_science/models/keras/convnext.py +62 -62
- stouputils/data_science/models/keras/densenet.py +50 -50
- stouputils/data_science/models/keras/efficientnet.py +60 -60
- stouputils/data_science/models/keras/mobilenet.py +56 -56
- stouputils/data_science/models/keras/resnet.py +52 -52
- stouputils/data_science/models/keras/squeezenet.py +233 -233
- stouputils/data_science/models/keras/vgg.py +42 -42
- stouputils/data_science/models/keras/xception.py +38 -38
- stouputils/data_science/models/keras_utils/callbacks/__init__.py +20 -20
- stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +219 -219
- stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +148 -148
- stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +31 -31
- stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +249 -249
- stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +66 -66
- stouputils/data_science/models/keras_utils/losses/__init__.py +12 -12
- stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +56 -56
- stouputils/data_science/models/keras_utils/visualizations.py +416 -416
- stouputils/data_science/models/sandbox.py +116 -116
- stouputils/data_science/range_tuple.py +234 -234
- stouputils/data_science/utils.py +285 -285
- stouputils/decorators.py +53 -39
- stouputils/decorators.pyi +2 -2
- stouputils/installer/__init__.py +18 -18
- stouputils/installer/linux.py +144 -144
- stouputils/installer/main.py +223 -223
- stouputils/installer/windows.py +136 -136
- stouputils/io.py +16 -9
- stouputils/parallel.py +88 -2
- stouputils/parallel.pyi +21 -1
- stouputils/print.py +229 -2
- stouputils/print.pyi +90 -1
- stouputils/py.typed +1 -1
- {stouputils-1.14.3.dist-info → stouputils-1.15.1.dist-info}/METADATA +1 -1
- {stouputils-1.14.3.dist-info → stouputils-1.15.1.dist-info}/RECORD +80 -80
- {stouputils-1.14.3.dist-info → stouputils-1.15.1.dist-info}/WHEEL +1 -1
- {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
|
-
|
|
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
|
|
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.
|
|
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
|
|
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=
|
|
43
|
-
stouputils/data_science/data_processing/image/auto_contrast.py,sha256=
|
|
44
|
-
stouputils/data_science/data_processing/image/axis_flip.py,sha256=
|
|
45
|
-
stouputils/data_science/data_processing/image/bias_field_correction.py,sha256=
|
|
46
|
-
stouputils/data_science/data_processing/image/binary_threshold.py,sha256=
|
|
47
|
-
stouputils/data_science/data_processing/image/blur.py,sha256=
|
|
48
|
-
stouputils/data_science/data_processing/image/brightness.py,sha256=
|
|
49
|
-
stouputils/data_science/data_processing/image/canny.py,sha256=
|
|
50
|
-
stouputils/data_science/data_processing/image/clahe.py,sha256=
|
|
51
|
-
stouputils/data_science/data_processing/image/common.py,sha256=
|
|
52
|
-
stouputils/data_science/data_processing/image/contrast.py,sha256=
|
|
53
|
-
stouputils/data_science/data_processing/image/curvature_flow_filter.py,sha256=
|
|
54
|
-
stouputils/data_science/data_processing/image/denoise.py,sha256=
|
|
55
|
-
stouputils/data_science/data_processing/image/histogram_equalization.py,sha256=
|
|
56
|
-
stouputils/data_science/data_processing/image/invert.py,sha256=
|
|
57
|
-
stouputils/data_science/data_processing/image/laplacian.py,sha256=
|
|
58
|
-
stouputils/data_science/data_processing/image/median_blur.py,sha256=
|
|
59
|
-
stouputils/data_science/data_processing/image/noise.py,sha256=
|
|
60
|
-
stouputils/data_science/data_processing/image/normalize.py,sha256=
|
|
61
|
-
stouputils/data_science/data_processing/image/random_erase.py,sha256=
|
|
62
|
-
stouputils/data_science/data_processing/image/resize.py,sha256=
|
|
63
|
-
stouputils/data_science/data_processing/image/rotation.py,sha256=
|
|
64
|
-
stouputils/data_science/data_processing/image/salt_pepper.py,sha256=
|
|
65
|
-
stouputils/data_science/data_processing/image/sharpening.py,sha256=
|
|
66
|
-
stouputils/data_science/data_processing/image/shearing.py,sha256=
|
|
67
|
-
stouputils/data_science/data_processing/image/threshold.py,sha256=
|
|
68
|
-
stouputils/data_science/data_processing/image/translation.py,sha256=
|
|
69
|
-
stouputils/data_science/data_processing/image/zoom.py,sha256=
|
|
70
|
-
stouputils/data_science/data_processing/image_augmentation.py,sha256=
|
|
71
|
-
stouputils/data_science/data_processing/image_preprocess.py,sha256=
|
|
72
|
-
stouputils/data_science/data_processing/prosthesis_detection.py,sha256=
|
|
73
|
-
stouputils/data_science/data_processing/technique.py,sha256=
|
|
74
|
-
stouputils/data_science/dataset/__init__.py,sha256=
|
|
75
|
-
stouputils/data_science/dataset/dataset.py,sha256=
|
|
76
|
-
stouputils/data_science/dataset/dataset_loader.py,sha256=
|
|
77
|
-
stouputils/data_science/dataset/grouping_strategy.py,sha256=
|
|
78
|
-
stouputils/data_science/dataset/image_loader.py,sha256=
|
|
79
|
-
stouputils/data_science/dataset/xy_tuple.py,sha256=
|
|
80
|
-
stouputils/data_science/metric_dictionnary.py,sha256=
|
|
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=
|
|
83
|
-
stouputils/data_science/models/abstract_model.py,sha256=
|
|
84
|
-
stouputils/data_science/models/all.py,sha256=
|
|
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
|
|
87
|
-
stouputils/data_science/models/keras/convnext.py,sha256=
|
|
88
|
-
stouputils/data_science/models/keras/densenet.py,sha256=
|
|
89
|
-
stouputils/data_science/models/keras/efficientnet.py,sha256=
|
|
90
|
-
stouputils/data_science/models/keras/mobilenet.py,sha256=
|
|
91
|
-
stouputils/data_science/models/keras/resnet.py,sha256=
|
|
92
|
-
stouputils/data_science/models/keras/squeezenet.py,sha256=
|
|
93
|
-
stouputils/data_science/models/keras/vgg.py,sha256=
|
|
94
|
-
stouputils/data_science/models/keras/xception.py,sha256=
|
|
95
|
-
stouputils/data_science/models/keras_utils/callbacks/__init__.py,sha256=
|
|
96
|
-
stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py,sha256=
|
|
97
|
-
stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py,sha256=
|
|
98
|
-
stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py,sha256=
|
|
99
|
-
stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py,sha256=
|
|
100
|
-
stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py,sha256=
|
|
101
|
-
stouputils/data_science/models/keras_utils/losses/__init__.py,sha256=
|
|
102
|
-
stouputils/data_science/models/keras_utils/losses/next_generation_loss.py,sha256=
|
|
103
|
-
stouputils/data_science/models/keras_utils/visualizations.py,sha256=
|
|
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=
|
|
106
|
-
stouputils/data_science/range_tuple.py,sha256=
|
|
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=
|
|
112
|
-
stouputils/decorators.py,sha256=
|
|
113
|
-
stouputils/decorators.pyi,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
126
|
+
stouputils/installer/windows.py,sha256=r2AIuoyAmtMEuoCtQBH9GWQWI-JUT2J9zoH28j9ruOU,4880
|
|
127
127
|
stouputils/installer/windows.pyi,sha256=tHogIFhPVDQS0I10liLkAxnpaFFAvmFtEVMpPIae5LU,1616
|
|
128
|
-
stouputils/io.py,sha256=
|
|
128
|
+
stouputils/io.py,sha256=XG2cReP8wzmoe0LyMtUqvEqixiHehPvXW23h5hBf_Pw,17202
|
|
129
129
|
stouputils/io.pyi,sha256=TCBTVEWUkI3dO_jWI9oPMF9SbnT1yLzFChE551JPbSY,9076
|
|
130
|
-
stouputils/parallel.py,sha256=
|
|
131
|
-
stouputils/parallel.pyi,sha256=
|
|
132
|
-
stouputils/print.py,sha256=
|
|
133
|
-
stouputils/print.pyi,sha256=
|
|
134
|
-
stouputils/py.typed,sha256=
|
|
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.
|
|
138
|
-
stouputils-1.
|
|
139
|
-
stouputils-1.
|
|
140
|
-
stouputils-1.
|
|
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,,
|
|
File without changes
|