stouputils 1.14.0__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 (140) hide show
  1. stouputils/__init__.py +40 -0
  2. stouputils/__main__.py +86 -0
  3. stouputils/_deprecated.py +37 -0
  4. stouputils/all_doctests.py +160 -0
  5. stouputils/applications/__init__.py +22 -0
  6. stouputils/applications/automatic_docs.py +634 -0
  7. stouputils/applications/upscaler/__init__.py +39 -0
  8. stouputils/applications/upscaler/config.py +128 -0
  9. stouputils/applications/upscaler/image.py +247 -0
  10. stouputils/applications/upscaler/video.py +287 -0
  11. stouputils/archive.py +344 -0
  12. stouputils/backup.py +488 -0
  13. stouputils/collections.py +244 -0
  14. stouputils/continuous_delivery/__init__.py +27 -0
  15. stouputils/continuous_delivery/cd_utils.py +243 -0
  16. stouputils/continuous_delivery/github.py +522 -0
  17. stouputils/continuous_delivery/pypi.py +130 -0
  18. stouputils/continuous_delivery/pyproject.py +147 -0
  19. stouputils/continuous_delivery/stubs.py +86 -0
  20. stouputils/ctx.py +408 -0
  21. stouputils/data_science/config/get.py +51 -0
  22. stouputils/data_science/config/set.py +125 -0
  23. stouputils/data_science/data_processing/image/__init__.py +66 -0
  24. stouputils/data_science/data_processing/image/auto_contrast.py +79 -0
  25. stouputils/data_science/data_processing/image/axis_flip.py +58 -0
  26. stouputils/data_science/data_processing/image/bias_field_correction.py +74 -0
  27. stouputils/data_science/data_processing/image/binary_threshold.py +73 -0
  28. stouputils/data_science/data_processing/image/blur.py +59 -0
  29. stouputils/data_science/data_processing/image/brightness.py +54 -0
  30. stouputils/data_science/data_processing/image/canny.py +110 -0
  31. stouputils/data_science/data_processing/image/clahe.py +92 -0
  32. stouputils/data_science/data_processing/image/common.py +30 -0
  33. stouputils/data_science/data_processing/image/contrast.py +53 -0
  34. stouputils/data_science/data_processing/image/curvature_flow_filter.py +74 -0
  35. stouputils/data_science/data_processing/image/denoise.py +378 -0
  36. stouputils/data_science/data_processing/image/histogram_equalization.py +123 -0
  37. stouputils/data_science/data_processing/image/invert.py +64 -0
  38. stouputils/data_science/data_processing/image/laplacian.py +60 -0
  39. stouputils/data_science/data_processing/image/median_blur.py +52 -0
  40. stouputils/data_science/data_processing/image/noise.py +59 -0
  41. stouputils/data_science/data_processing/image/normalize.py +65 -0
  42. stouputils/data_science/data_processing/image/random_erase.py +66 -0
  43. stouputils/data_science/data_processing/image/resize.py +69 -0
  44. stouputils/data_science/data_processing/image/rotation.py +80 -0
  45. stouputils/data_science/data_processing/image/salt_pepper.py +68 -0
  46. stouputils/data_science/data_processing/image/sharpening.py +55 -0
  47. stouputils/data_science/data_processing/image/shearing.py +64 -0
  48. stouputils/data_science/data_processing/image/threshold.py +64 -0
  49. stouputils/data_science/data_processing/image/translation.py +71 -0
  50. stouputils/data_science/data_processing/image/zoom.py +83 -0
  51. stouputils/data_science/data_processing/image_augmentation.py +118 -0
  52. stouputils/data_science/data_processing/image_preprocess.py +183 -0
  53. stouputils/data_science/data_processing/prosthesis_detection.py +359 -0
  54. stouputils/data_science/data_processing/technique.py +481 -0
  55. stouputils/data_science/dataset/__init__.py +45 -0
  56. stouputils/data_science/dataset/dataset.py +292 -0
  57. stouputils/data_science/dataset/dataset_loader.py +135 -0
  58. stouputils/data_science/dataset/grouping_strategy.py +296 -0
  59. stouputils/data_science/dataset/image_loader.py +100 -0
  60. stouputils/data_science/dataset/xy_tuple.py +696 -0
  61. stouputils/data_science/metric_dictionnary.py +106 -0
  62. stouputils/data_science/metric_utils.py +847 -0
  63. stouputils/data_science/mlflow_utils.py +206 -0
  64. stouputils/data_science/models/abstract_model.py +149 -0
  65. stouputils/data_science/models/all.py +85 -0
  66. stouputils/data_science/models/base_keras.py +765 -0
  67. stouputils/data_science/models/keras/all.py +38 -0
  68. stouputils/data_science/models/keras/convnext.py +62 -0
  69. stouputils/data_science/models/keras/densenet.py +50 -0
  70. stouputils/data_science/models/keras/efficientnet.py +60 -0
  71. stouputils/data_science/models/keras/mobilenet.py +56 -0
  72. stouputils/data_science/models/keras/resnet.py +52 -0
  73. stouputils/data_science/models/keras/squeezenet.py +233 -0
  74. stouputils/data_science/models/keras/vgg.py +42 -0
  75. stouputils/data_science/models/keras/xception.py +38 -0
  76. stouputils/data_science/models/keras_utils/callbacks/__init__.py +20 -0
  77. stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +219 -0
  78. stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +148 -0
  79. stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +31 -0
  80. stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +249 -0
  81. stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +66 -0
  82. stouputils/data_science/models/keras_utils/losses/__init__.py +12 -0
  83. stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +56 -0
  84. stouputils/data_science/models/keras_utils/visualizations.py +416 -0
  85. stouputils/data_science/models/model_interface.py +939 -0
  86. stouputils/data_science/models/sandbox.py +116 -0
  87. stouputils/data_science/range_tuple.py +234 -0
  88. stouputils/data_science/scripts/augment_dataset.py +77 -0
  89. stouputils/data_science/scripts/exhaustive_process.py +133 -0
  90. stouputils/data_science/scripts/preprocess_dataset.py +70 -0
  91. stouputils/data_science/scripts/routine.py +168 -0
  92. stouputils/data_science/utils.py +285 -0
  93. stouputils/decorators.py +605 -0
  94. stouputils/image.py +441 -0
  95. stouputils/installer/__init__.py +18 -0
  96. stouputils/installer/common.py +67 -0
  97. stouputils/installer/downloader.py +101 -0
  98. stouputils/installer/linux.py +144 -0
  99. stouputils/installer/main.py +223 -0
  100. stouputils/installer/windows.py +136 -0
  101. stouputils/io.py +486 -0
  102. stouputils/parallel.py +483 -0
  103. stouputils/print.py +482 -0
  104. stouputils/py.typed +1 -0
  105. stouputils/stouputils/__init__.pyi +15 -0
  106. stouputils/stouputils/_deprecated.pyi +12 -0
  107. stouputils/stouputils/all_doctests.pyi +46 -0
  108. stouputils/stouputils/applications/__init__.pyi +2 -0
  109. stouputils/stouputils/applications/automatic_docs.pyi +106 -0
  110. stouputils/stouputils/applications/upscaler/__init__.pyi +3 -0
  111. stouputils/stouputils/applications/upscaler/config.pyi +18 -0
  112. stouputils/stouputils/applications/upscaler/image.pyi +109 -0
  113. stouputils/stouputils/applications/upscaler/video.pyi +60 -0
  114. stouputils/stouputils/archive.pyi +67 -0
  115. stouputils/stouputils/backup.pyi +109 -0
  116. stouputils/stouputils/collections.pyi +86 -0
  117. stouputils/stouputils/continuous_delivery/__init__.pyi +5 -0
  118. stouputils/stouputils/continuous_delivery/cd_utils.pyi +129 -0
  119. stouputils/stouputils/continuous_delivery/github.pyi +162 -0
  120. stouputils/stouputils/continuous_delivery/pypi.pyi +53 -0
  121. stouputils/stouputils/continuous_delivery/pyproject.pyi +67 -0
  122. stouputils/stouputils/continuous_delivery/stubs.pyi +39 -0
  123. stouputils/stouputils/ctx.pyi +211 -0
  124. stouputils/stouputils/decorators.pyi +252 -0
  125. stouputils/stouputils/image.pyi +172 -0
  126. stouputils/stouputils/installer/__init__.pyi +5 -0
  127. stouputils/stouputils/installer/common.pyi +39 -0
  128. stouputils/stouputils/installer/downloader.pyi +24 -0
  129. stouputils/stouputils/installer/linux.pyi +39 -0
  130. stouputils/stouputils/installer/main.pyi +57 -0
  131. stouputils/stouputils/installer/windows.pyi +31 -0
  132. stouputils/stouputils/io.pyi +213 -0
  133. stouputils/stouputils/parallel.pyi +216 -0
  134. stouputils/stouputils/print.pyi +136 -0
  135. stouputils/stouputils/version_pkg.pyi +15 -0
  136. stouputils/version_pkg.py +189 -0
  137. stouputils-1.14.0.dist-info/METADATA +178 -0
  138. stouputils-1.14.0.dist-info/RECORD +140 -0
  139. stouputils-1.14.0.dist-info/WHEEL +4 -0
  140. stouputils-1.14.0.dist-info/entry_points.txt +3 -0
@@ -0,0 +1,189 @@
1
+ """
2
+ This module provides utility functions for printing package version information
3
+ in a structured format, including the main package and its dependencies.
4
+
5
+ Functions:
6
+ - show_version: Print the version of the main package and its dependencies.
7
+ """
8
+
9
+ # Imports
10
+ import sys
11
+
12
+ from .print import CYAN, GREEN, RESET, YELLOW
13
+
14
+
15
+ # Show version function
16
+ def show_version(main_package: str = "stouputils", primary_color: str = CYAN, secondary_color: str = GREEN, max_depth: int = 2) -> None:
17
+ """ Print the version of the main package and its dependencies.
18
+
19
+ Used by the "stouputils --version" command.
20
+
21
+ Args:
22
+ main_package (str): Name of the main package to show version for
23
+ primary_color (str): Color to use for the primary package name
24
+ secondary_color (str): Color to use for the secondary package names
25
+ max_depth (int): Maximum depth for dependency tree (<= 2 for flat, >=3 for tree)
26
+ """
27
+ # Imports
28
+ from importlib.metadata import requires, version
29
+ def ver(package_name: str) -> str:
30
+ try:
31
+ return version(package_name)
32
+ except Exception:
33
+ return ""
34
+
35
+ def get_deps(package_name: str) -> list[str]:
36
+ """ Get the list of dependency names for a package """
37
+ try:
38
+ deps: list[str] = requires(package_name) or []
39
+ # Remove duplicates while preserving order, then sort
40
+ unique_deps: list[str] = list(dict.fromkeys([
41
+ dep
42
+ .split(">")[0]
43
+ .split("<")[0]
44
+ .split("=")[0]
45
+ .split("[")[0]
46
+ .split(";")[0]
47
+ .strip()
48
+ for dep in deps
49
+ ]))
50
+ return sorted(unique_deps)
51
+ except Exception:
52
+ return []
53
+
54
+ def print_tree(package_name: str, prefix: str = "", is_last: bool = True, visited: set[str] | None = None, fully_displayed: set[str] | None = None, depth: int = 0, max_depth: int = 3) -> None:
55
+ """ Recursively print the dependency tree """
56
+ if visited is None:
57
+ visited = set()
58
+ if fully_displayed is None:
59
+ fully_displayed = set()
60
+
61
+ # Prevent infinite recursion and limit depth
62
+ if package_name in visited or depth > max_depth:
63
+ return
64
+ visited.add(package_name)
65
+
66
+ # Get version
67
+ v: str = ver(package_name).split("version: ")[-1]
68
+ if not v:
69
+ return
70
+
71
+ # Determine the tree characters
72
+ connector: str = "└── " if is_last else "├── "
73
+
74
+ # Check if this package was already fully displayed
75
+ already_shown: bool = package_name in fully_displayed
76
+
77
+ # Print current package
78
+ if depth == 0:
79
+ print(f"{primary_color}{package_name} {secondary_color}v{v}{RESET}")
80
+ else:
81
+ if already_shown:
82
+ print(f"{prefix}{connector}{primary_color}{package_name} {secondary_color}v{v} {YELLOW}[Already shown ^]{RESET}")
83
+ # Still mark as fully displayed even when already shown
84
+ fully_displayed.add(package_name)
85
+ return
86
+ else:
87
+ print(f"{prefix}{connector}{primary_color}{package_name} {secondary_color}v{v}{RESET}")
88
+
89
+ # Get dependencies
90
+ deps: list[str] = get_deps(package_name)
91
+
92
+ # Filter dependencies that will actually be displayed (have a version)
93
+ valid_deps: list[str] = [dep for dep in deps if ver(dep)]
94
+
95
+ # Print dependencies recursively
96
+ for i, dep in enumerate(valid_deps):
97
+ # Determine if this is the last element to display
98
+ is_last_dep: bool = (i == len(valid_deps) - 1)
99
+
100
+ # Extension is based on whether the CURRENT node is last, not the child
101
+ extension: str = " " if is_last else "│ "
102
+ new_prefix: str = prefix + extension if depth > 0 else ""
103
+ print_tree(dep, new_prefix, is_last_dep, visited.copy(), fully_displayed, depth + 1, max_depth)
104
+
105
+ # Mark this package as fully displayed (with all its dependencies)
106
+ fully_displayed.add(package_name)
107
+
108
+ # Get Python version header
109
+ python_version: str = f" Python {sys.version_info.major}.{sys.version_info.minor}.{sys.version_info.micro} "
110
+
111
+ if max_depth >= 3:
112
+ # Display as tree structure
113
+ minimum_separator_length: int = len(python_version) + 10
114
+ separator_length: int = minimum_separator_length
115
+ python_text_length: int = len(python_version)
116
+ left_dashes: int = (separator_length - python_text_length) // 2
117
+ right_dashes: int = separator_length - python_text_length - left_dashes
118
+ separator_with_python: str = "─" * left_dashes + python_version + "─" * right_dashes
119
+ separator: str = "─" * separator_length
120
+
121
+ print(f"{primary_color}{separator_with_python}{RESET}")
122
+ print_tree(main_package, max_depth=max_depth - 1)
123
+ print(f"{primary_color}{separator}{RESET}")
124
+ else:
125
+ # Display as flat list (original behavior)
126
+ deps: list[str] = requires(main_package) or []
127
+ dep_names: list[str] = sorted([
128
+ dep
129
+ .split(">")[0]
130
+ .split("<")[0]
131
+ .split("=")[0]
132
+ .split("[")[0]
133
+ for dep in deps
134
+ ])
135
+ all_deps: list[tuple[str, str]] = [
136
+ (x, ver(x).split("version: ")[-1])
137
+ for x in (main_package, *dep_names)
138
+ ]
139
+ all_deps = [pair for pair in all_deps if pair[1]] # Filter out packages with no version found
140
+ longest_name_length: int = max(len(name) for name, _ in all_deps)
141
+ longest_version_length: int = max(len(ver) for _, ver in all_deps)
142
+
143
+ minimum_separator_length: int = len(python_version) + 10 # Always at least 5 dashes on each side
144
+ separator_length: int = max(minimum_separator_length, longest_name_length + longest_version_length + 4)
145
+ python_text_length: int = len(python_version)
146
+ left_dashes: int = (separator_length - python_text_length) // 2
147
+ right_dashes: int = separator_length - python_text_length - left_dashes
148
+ separator_with_python: str = "─" * left_dashes + python_version + "─" * right_dashes
149
+ separator: str = "─" * separator_length
150
+
151
+ for pkg, v in all_deps:
152
+ pkg_spacing: str = " " * (longest_name_length - len(pkg))
153
+
154
+ # Highlight the main package with a different style
155
+ if pkg == main_package:
156
+ print(f"{primary_color}{separator_with_python}{RESET}")
157
+ print(f"{primary_color}{pkg}{pkg_spacing} {secondary_color}v{v}{RESET}")
158
+ print(f"{primary_color}{separator}{RESET}")
159
+ else:
160
+ print(f"{primary_color}{pkg}{pkg_spacing} {secondary_color}v{v}{RESET}")
161
+ return
162
+
163
+ # Show version cli
164
+ def show_version_cli() -> None:
165
+ """ Handle the "stouputils --version" CLI command """
166
+ # Determine max depth (flat or tree structure)
167
+ max_depth: int = 2 # Flat by default
168
+
169
+ # Check for tree argument
170
+ if "--tree" in sys.argv or "-t" in sys.argv:
171
+ # Find position of tree argument
172
+ pos: int = sys.argv.index("--tree") if "--tree" in sys.argv else sys.argv.index("-t")
173
+
174
+ # Check for depth argument
175
+ if pos + 1 < len(sys.argv):
176
+ try:
177
+ max_depth = int(sys.argv[pos + 1])
178
+ sys.argv.pop(pos + 1) # Remove depth argument
179
+ except ValueError:
180
+ pass # Keep default if conversion fails
181
+ sys.argv.pop(pos) # Remove the --tree/-t argument
182
+
183
+ # Handle specific package argument
184
+ if len(sys.argv) >= 3 and not sys.argv[2].startswith("-"):
185
+ return show_version(sys.argv[2], max_depth=max_depth)
186
+
187
+ # Else, show default package version
188
+ return show_version(max_depth=max_depth)
189
+
@@ -0,0 +1,178 @@
1
+ Metadata-Version: 2.3
2
+ Name: stouputils
3
+ Version: 1.14.0
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
+ Keywords: utilities,tools,helpers,development,python
6
+ Author: Stoupy51
7
+ Author-email: Stoupy51 <stoupy51@gmail.com>
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.12
10
+ Classifier: Programming Language :: Python :: 3.13
11
+ Classifier: Programming Language :: Python :: 3.14
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: OS Independent
14
+ Requires-Dist: tqdm>=4.0.0
15
+ Requires-Dist: requests>=2.20.0
16
+ Requires-Dist: msgspec[toml,yaml]>=0.20.0
17
+ Requires-Dist: pillow>=12.0.0
18
+ Requires-Dist: python-box>=7.0.0
19
+ Requires-Dist: argcomplete>=3.0.0
20
+ Requires-Dist: numpy
21
+ Requires-Dist: opencv-python ; extra == 'data-science'
22
+ Requires-Dist: scikit-image ; extra == 'data-science'
23
+ Requires-Dist: simpleitk ; extra == 'data-science'
24
+ Requires-Dist: mlflow ; extra == 'data-science'
25
+ Requires-Dist: tensorflow ; extra == 'data-science'
26
+ Requires-Dist: scikit-learn ; extra == 'data-science'
27
+ Requires-Dist: pywavelets ; extra == 'data-science'
28
+ Requires-Dist: m2r2 ; extra == 'docs'
29
+ Requires-Dist: myst-parser ; extra == 'docs'
30
+ Requires-Dist: sphinx-copybutton ; extra == 'docs'
31
+ Requires-Dist: sphinx-design ; extra == 'docs'
32
+ Requires-Dist: sphinx-treeview ; extra == 'docs'
33
+ Requires-Dist: sphinx-breeze-theme ; extra == 'docs'
34
+ Requires-Dist: pydata-sphinx-theme ; extra == 'docs'
35
+ Requires-Python: >=3.12
36
+ Project-URL: Homepage, https://stoupy51.github.io/stouputils
37
+ Project-URL: Issues, https://github.com/Stoupy51/stouputils/issues
38
+ Project-URL: Source, https://github.com/Stoupy51/stouputils
39
+ Provides-Extra: data-science
40
+ Provides-Extra: docs
41
+ Description-Content-Type: text/markdown
42
+
43
+
44
+ ## 🛠️ Project Badges
45
+ [![GitHub](https://img.shields.io/github/v/release/Stoupy51/stouputils?logo=github&label=GitHub)](https://github.com/Stoupy51/stouputils/releases/latest)
46
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/stouputils?logo=python&label=PyPI%20downloads)](https://pypi.org/project/stouputils/)
47
+ [![Documentation](https://img.shields.io/github/v/release/Stoupy51/stouputils?logo=sphinx&label=Documentation&color=purple)](https://stoupy51.github.io/stouputils/latest/)
48
+
49
+ ## 📚 Project Overview
50
+ Stouputils is a collection of utility modules designed to simplify and enhance the development process.<br>
51
+ It includes a range of tools for tasks such as execution of doctests, display utilities, decorators, as well as context managers.<br>
52
+ Start now by installing the package: `pip install stouputils`.<br>
53
+
54
+ <a href="https://colab.research.google.com/drive/1mJ-KL-zXzIk1oKDxO6FC1SFfm-BVKG-P?usp=sharing" target="_blank" rel="noopener noreferrer" style="text-decoration: none;"><div class="admonition">
55
+ 📖 <b>Want to see examples?</b> Check out our <u>Google Colab notebook</u> with practical usage examples!
56
+ </div></a>
57
+
58
+ ## 🚀 Project File Tree
59
+ <html>
60
+ <details style="display: none;">
61
+ <summary></summary>
62
+ <style>
63
+ .code-tree {
64
+ border-radius: 6px;
65
+ padding: 16px;
66
+ font-family: monospace;
67
+ line-height: 1.45;
68
+ overflow: auto;
69
+ white-space: pre;
70
+ background-color:rgb(43, 43, 43);
71
+ color: #d4d4d4;
72
+ }
73
+ .code-tree a {
74
+ color: #569cd6;
75
+ text-decoration: none;
76
+ }
77
+ .code-tree a:hover {
78
+ text-decoration: underline;
79
+ }
80
+ .code-tree .comment {
81
+ color:rgb(231, 213, 48);
82
+ }
83
+ .code-tree .paren {
84
+ color: orange;
85
+ }
86
+ </style>
87
+ </details>
88
+
89
+ <pre class="code-tree">stouputils/
90
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.print.html">print.py</a> <span class="comment"># 🖨️ Utility functions for printing <span class="paren">(info, debug, warning, error, whatisit, breakpoint, colored_for_loop, ...)</span></span>
91
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.decorators.html">decorators.py</a> <span class="comment"># 🎯 Decorators <span class="paren">(measure_time, handle_error, timeout, retry, simple_cache, abstract, deprecated, silent)</span></span>
92
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.ctx.html">ctx.py</a> <span class="comment"># 🔇 Context managers <span class="paren">(LogToFile, MeasureTime, Muffle, DoNothing, SetMPStartMethod)</span></span>
93
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.io.html">io.py</a> <span class="comment"># 💾 Utilities for file management <span class="paren">(json_dump, json_load, csv_dump, csv_load, read_file, super_copy, super_open, clean_path, ...)</span></span>
94
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.parallel.html">parallel.py</a> <span class="comment"># 🔀 Utility functions for parallel processing <span class="paren">(multiprocessing, multithreading, run_in_subprocess)</span></span>
95
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.image.html">image.py</a> <span class="comment"># 🖼️ Little utilities for image processing <span class="paren">(image_resize, auto_crop, numpy_to_gif, numpy_to_obj)</span></span>
96
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.collections.html">collections.py</a> <span class="comment"># 🧰 Utilities for collection manipulation <span class="paren">(unique_list, sort_dict_keys, upsert_in_dataframe, array_to_disk)</span></span>
97
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.all_doctests.html">all_doctests.py</a> <span class="comment"># ✅ Run all doctests for all modules in a given directory <span class="paren">(launch_tests, test_module_with_progress)</span></span>
98
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.backup.html">backup.py</a> <span class="comment"># 💾 Utilities for backup management <span class="paren">(delta backup, consolidate)</span></span>
99
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.archive.html">archive.py</a> <span class="comment"># 📦 Functions for creating and managing archives</span>
100
+
101
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.applications.html">applications/</a>
102
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.applications.automatic_docs.html">automatic_docs.py</a> <span class="comment"># 📚 Documentation generation utilities <span class="paren">(used to create this documentation)</span></span>
103
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.applications.upscaler.html">upscaler/</a> <span class="comment"># 🔎 Image & Video upscaler <span class="paren">(configurable)</span></span>
104
+ │ └── ...
105
+
106
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.continuous_delivery.html">continuous_delivery/</a>
107
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.continuous_delivery.cd_utils.html">cd_utils.py</a> <span class="comment"># 🔧 Utilities for continuous delivery</span>
108
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.continuous_delivery.github.html">github.py</a> <span class="comment"># 📦 Utilities for continuous delivery on GitHub <span class="paren">(upload_to_github)</span></span>
109
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.continuous_delivery.pypi.html">pypi.py</a> <span class="comment"># 📦 Utilities for PyPI <span class="paren">(pypi_full_routine)</span></span>
110
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.continuous_delivery.pyproject.html">pyproject.py</a> <span class="comment"># 📝 Utilities for reading, writing and managing pyproject.toml files</span>
111
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.continuous_delivery.stubs.html">stubs.py</a> <span class="comment"># 📝 Utilities for generating stub files using stubgen</span>
112
+ │ └── ...
113
+
114
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.html">data_science/</a>
115
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.config.html">config/</a> <span class="comment"># ⚙️ Configuration utilities for data science</span>
116
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.dataset.html">dataset/</a> <span class="comment"># 📊 Dataset handling <span class="paren">(dataset, dataset_loader, grouping_strategy)</span></span>
117
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.data_processing.html">data_processing/</a> <span class="comment"># 🔄 Data processing utilities <span class="paren">(image augmentation, preprocessing)</span></span>
118
+ │ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.data_processing.image.html">image/</a> <span class="comment"># 🖼️ Image processing techniques</span>
119
+ │ │ └── ...
120
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.models.html">models/</a> <span class="comment"># 🧠 ML/DL model interfaces and implementations</span>
121
+ │ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.models.keras.html">keras/</a> <span class="comment"># 🤖 Keras model implementations</span>
122
+ │ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.models.keras_utils.html">keras_utils/</a> <span class="comment"># 🛠️ Keras utilities <span class="paren">(callbacks, losses, visualizations)</span></span>
123
+ │ │ └── ...
124
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.scripts.html">scripts/</a> <span class="comment"># 📜 Data science scripts <span class="paren">(augment, preprocess, routine)</span></span>
125
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.metric_utils.html">metric_utils.py</a> <span class="comment"># 📏 Static methods for calculating various ML metrics</span>
126
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.mlflow_utils.html">mlflow_utils.py</a> <span class="comment"># 📊 Utility functions for working with MLflow</span>
127
+ │ └── ...
128
+
129
+ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.installer.html">installer/</a>
130
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.installer.common.html">common.py</a> <span class="comment"># 🔧 Common functions used by the Linux and Windows installers modules</span>
131
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.installer.downloader.html">downloader.py</a> <span class="comment"># ⬇️ Functions for downloading and installing programs from URLs</span>
132
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.installer.linux.html">linux.py</a> <span class="comment"># 🐧 Linux/macOS specific implementations for installation</span>
133
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.installer.main.html">main.py</a> <span class="comment"># 🚀 Core installation functions for installing programs from zip files or URLs</span>
134
+ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.installer.windows.html">windows.py</a> <span class="comment"># 💻 Windows specific implementations for installation</span>
135
+ │ └── ...
136
+ └── ...
137
+ </pre>
138
+ </html>
139
+
140
+ ## 🔧 Installation
141
+
142
+ ```bash
143
+ pip install stouputils
144
+ ```
145
+
146
+ ### ✨ Enable Tab Completion on Linux (Optional)
147
+
148
+ For a better CLI experience, enable bash tab completion:
149
+
150
+ ```bash
151
+ # Option 1: Using argcomplete's global activation
152
+ activate-global-python-argcomplete --user
153
+
154
+ # Option 2: Manual setup for bash
155
+ register-python-argcomplete stouputils >> ~/.bashrc
156
+ source ~/.bashrc
157
+ ```
158
+
159
+ After enabling completion, you can use `<TAB>` to autocomplete commands:
160
+ ```bash
161
+ stouputils <TAB> # Shows: --version, -v, all_doctests, backup
162
+ stouputils all_<TAB> # Completes to: all_doctests
163
+ ```
164
+
165
+ **Note:** Tab completion works best in bash, zsh, Git Bash, or WSL on Windows.
166
+
167
+ ## ⭐ Star History
168
+
169
+ <html>
170
+ <a href="https://star-history.com/#Stoupy51/stouputils&Date">
171
+ <picture>
172
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=Stoupy51/stouputils&type=Date&theme=dark" />
173
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=Stoupy51/stouputils&type=Date" />
174
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=Stoupy51/stouputils&type=Date" />
175
+ </picture>
176
+ </a>
177
+ </html>
178
+
@@ -0,0 +1,140 @@
1
+ stouputils/__init__.py,sha256=KMJoy8FCiiiXJ53QfgU3rz7AY7AJ_j5kP3j24JuznC0,1136
2
+ stouputils/__main__.py,sha256=sJSncuTWua7jA9pTw4BUoDzNUUExZKeyATbmY4lhl0E,2764
3
+ stouputils/_deprecated.py,sha256=Bcq6YjdM9Rk9Vq-WMhc_tuEbPORX6U8HAJ9Vh-VIWTA,1478
4
+ stouputils/all_doctests.py,sha256=1bGGUg80nvLBY3wrPkFrkcuQRjFTWmTpHZtai9X-vnY,5891
5
+ stouputils/applications/__init__.py,sha256=dbjwZt8PZF043KoJSItqCpH32FtRxN5sgV-8Q2b1l10,457
6
+ stouputils/applications/automatic_docs.py,sha256=wIBPMk4XLjLEKZoLUBoBxA8YLblnpldJUUiWwzymHSM,20393
7
+ stouputils/applications/upscaler/__init__.py,sha256=8vrca93OYu5GQJrZO1GvnAbptzyhu_L0DnP3M9unlA0,1142
8
+ stouputils/applications/upscaler/config.py,sha256=3WHJv6fznM03nWpdvy72OheuJvNgOZfHH4GEjyRpnZU,5559
9
+ stouputils/applications/upscaler/image.py,sha256=3oyAp0BwGfP-BoUDBmPJUzT88mbLyvVXp1PTOJVxKpw,9767
10
+ stouputils/applications/upscaler/video.py,sha256=2YItk_QJ9sENllOPtwJC1QsvOto7IleIPsb6YNW3OvE,11853
11
+ stouputils/archive.py,sha256=uDrPFxbY_C8SwUZRH4FWnYSoJKkFWynCx751zP9AHaY,12144
12
+ stouputils/backup.py,sha256=AE5WKMLiyk0VkRUfhmNfO2EUeUbZY5GTFVIuI5z7axA,20947
13
+ stouputils/collections.py,sha256=5u904s_osO03-drmqPXtFZUlcweDatEQmY-dLUrnNX0,8849
14
+ stouputils/continuous_delivery/__init__.py,sha256=JqPww29xZ-pp6OJDGhUj2dxyV9rgTTMUz0YDDVr9RaA,731
15
+ stouputils/continuous_delivery/cd_utils.py,sha256=fkaHk2V3j66uFAUsM2c_UddNhXW2KAQcrh7jVsH79pU,8594
16
+ stouputils/continuous_delivery/github.py,sha256=Iva2XNm60Th78P_evnhCJHn0Q9-06udPlOZAxtZB5vw,19464
17
+ stouputils/continuous_delivery/pypi.py,sha256=H62NlWKG_9OQcNpisEJ3DqtNnneVmcnVnv3NItdNvv0,5298
18
+ stouputils/continuous_delivery/pyproject.py,sha256=olD3QqzLfCLnTBw8IkSKSLBPWyeMv6uS7A0yGdFuIvQ,4802
19
+ stouputils/continuous_delivery/stubs.py,sha256=xUAcP21Y03PLEr7X6LrIBMvPeLI8Rp-EyaTLxocA0C4,3512
20
+ stouputils/ctx.py,sha256=KVVDmL3pAPX2WM_QzjsmctbG-YfjJ-4aWBSoI7eU_ws,15586
21
+ stouputils/data_science/config/get.py,sha256=smdWcu5bBlY38WGtC3GzIF2el-gpvSlDMRNsypmr0JM,1773
22
+ stouputils/data_science/config/set.py,sha256=PBBnWhgSptWTPkMtq3N1UxmEz_E4ywUcl3daS43wA2M,4175
23
+ stouputils/data_science/data_processing/image/__init__.py,sha256=ovzV48Bn0tyKXnAMMdujzwT89-1g-PK7GYNlHBrMt9Q,1889
24
+ stouputils/data_science/data_processing/image/auto_contrast.py,sha256=xDwnv-suNHgO1sjWK09WulJeQVyGJIGH0ZyqrJldeX4,2368
25
+ stouputils/data_science/data_processing/image/axis_flip.py,sha256=fu7aD_qZltymmC541JpZs2XJcN4A1EO2Vp_44S-ZCv0,1721
26
+ stouputils/data_science/data_processing/image/bias_field_correction.py,sha256=nBOD2t2ZzGal-x6NRqFxWdsKVb_9ELqjY9G4Q06CzQ4,2461
27
+ stouputils/data_science/data_processing/image/binary_threshold.py,sha256=vRd7PMp5srRwyPAbAm9bGexb6uU-C-zWT7itNyOSMLE,2526
28
+ stouputils/data_science/data_processing/image/blur.py,sha256=i92IEiy_nYV-s025k6tMJn0IsD-C39TWYGIuP1oxmOU,1752
29
+ stouputils/data_science/data_processing/image/brightness.py,sha256=_uv-qouAWh8Up9DpTQImZcbxSNx8xQ7ltGbA-F7PkSE,1725
30
+ stouputils/data_science/data_processing/image/canny.py,sha256=3T_B3Lt3oLRSJC-JSJ4JONMXSnLUiHNREjB_69T76V4,3970
31
+ stouputils/data_science/data_processing/image/clahe.py,sha256=ryAT7uxfxzGv3GdialqVlmkS1UCGT79Jg39mCuM9Mzs,3134
32
+ stouputils/data_science/data_processing/image/common.py,sha256=wCRO6x8c1bV7PNDylcRogkePNfteUcYoXtgZuaKJthY,754
33
+ stouputils/data_science/data_processing/image/contrast.py,sha256=deC3m5c4sCpF0LpjUPne6DookXskBEUfEA8sBTCrpcM,1667
34
+ stouputils/data_science/data_processing/image/curvature_flow_filter.py,sha256=SdI_x6sWsIlHSTAgbPERRsyi8kKgQojcwQYtcUCttBQ,2527
35
+ stouputils/data_science/data_processing/image/denoise.py,sha256=V6y1lIcRZqXSLt9gQee77Zv_ghxbx25umHFV-L1ogOU,13125
36
+ stouputils/data_science/data_processing/image/histogram_equalization.py,sha256=EwPEY7vS3JLAAH7lvXuyD9EyBIWPCkD08nvWiXyWAB4,4693
37
+ stouputils/data_science/data_processing/image/invert.py,sha256=RRFZEEjE-7vbq9x-ldZp2mXYggPg7xA3CJUpQ2iXdQw,1942
38
+ stouputils/data_science/data_processing/image/laplacian.py,sha256=Uf8kj--_8Obdr9rQl_MXRcmqlCWYNZ8Jh6gOKnjWuF4,2086
39
+ stouputils/data_science/data_processing/image/median_blur.py,sha256=a3VuZAyggmodIWPX2zEAnjtED_HezdE6PMxDot06y2s,1552
40
+ stouputils/data_science/data_processing/image/noise.py,sha256=U3MA-Jw5DAjSE24-zptUt85QoUXzYtt1c7JhlscE3iI,1936
41
+ stouputils/data_science/data_processing/image/normalize.py,sha256=uCZNrf-WHT41ZvRNxBiNlGtGZ71ocrBRIUjYO2BMuO0,1982
42
+ stouputils/data_science/data_processing/image/random_erase.py,sha256=M1kmscbG0idwZd33b8ZUEj50Nn-QARSIZlTXqfOsY_Q,2173
43
+ stouputils/data_science/data_processing/image/resize.py,sha256=p-EE_77sgweelDhNoXNuX3qW23jEpgZtDmfJdhPonhA,2128
44
+ stouputils/data_science/data_processing/image/rotation.py,sha256=ZY0oQnQPzikt9lmJSPo4MVE_nNI67_7apYSNJT-GHbY,2566
45
+ stouputils/data_science/data_processing/image/salt_pepper.py,sha256=Dp9_BNVPifM54PAQsIcmKN0n6GuklFboqCH3E-vqMpE,2155
46
+ stouputils/data_science/data_processing/image/sharpening.py,sha256=HHZNalFXyEQRdp3pN1bI3fZKcHdnkWZRb9OBt7Sw3O0,1635
47
+ stouputils/data_science/data_processing/image/shearing.py,sha256=ikT5YuE3w31lC9lX7qtM8JTJGpzfHmX-gMcdLy8eS3Y,2102
48
+ stouputils/data_science/data_processing/image/threshold.py,sha256=rQjlpzoVJqq8KwAB0LF_LZBm2bcaovEN7IElfHD7bKM,2365
49
+ stouputils/data_science/data_processing/image/translation.py,sha256=PKwKOA9L6OuTiROFd6cO9ze2d0nGzwLN6u1R59AKoqU,2531
50
+ stouputils/data_science/data_processing/image/zoom.py,sha256=p8QSL6El7KYEM_iLmC_wANdv1oWNKHpeQBb_fsCYOiw,2696
51
+ stouputils/data_science/data_processing/image_augmentation.py,sha256=7fUKxI3laHiVWOG91Y1OfKQn45-KQ1GO3gIywNR5FRI,4807
52
+ stouputils/data_science/data_processing/image_preprocess.py,sha256=qjko0aL-8T5cLIifOvhDBPSmmr4JRRqdtrWnapxd59s,6501
53
+ stouputils/data_science/data_processing/prosthesis_detection.py,sha256=SgJuKhdXX2xL05ABVePs-jEB22l83KNhEOJh7pjxtcE,13470
54
+ stouputils/data_science/data_processing/technique.py,sha256=rql-ObXZKxEZDerYstGNNPsGUNV73aSU7ABDM6-lhXE,20136
55
+ stouputils/data_science/dataset/__init__.py,sha256=FptJEc5mkzIM95ZmHv3SW3RCfE9SSykroE7uBA86zH0,1604
56
+ stouputils/data_science/dataset/dataset.py,sha256=IRca5EXiLQf4QgPnKY4b3hAG4p1s-QQ46r7mIx0NOIQ,11566
57
+ stouputils/data_science/dataset/dataset_loader.py,sha256=XExz1oYcQUYxSKU0-U7FTaCzIHK0rdCdHKOH0OOv5Rg,4562
58
+ stouputils/data_science/dataset/grouping_strategy.py,sha256=rykG-TfSEzDyb7R8HjZfoNJMiepknOMF8nDSOZFNBgA,10946
59
+ stouputils/data_science/dataset/image_loader.py,sha256=pqQvAEfxVvyzpdvbiSMIQGIj27v8bP3aLtHmbXBywE8,4000
60
+ stouputils/data_science/dataset/xy_tuple.py,sha256=tovKezsldERHEJX_DI9NzuA_6WOiwQFwZoL5u_zVzvc,26074
61
+ stouputils/data_science/metric_dictionnary.py,sha256=_bOybn8Bt-Fbp4Qis18hYmrA3t8oAjunAd7v432edFY,3950
62
+ stouputils/data_science/metric_utils.py,sha256=cHO1eS-gUZdfGfx4sMUXczMgrJScPLesciN9NGLQysI,34006
63
+ stouputils/data_science/mlflow_utils.py,sha256=_fM7LljiojYgGF3zpOlIVzKW_CnVVJzpCLwmPEKrUVw,7275
64
+ stouputils/data_science/models/abstract_model.py,sha256=cZmYA4-Sb5Q2ySzQqsNy3KoEWAgcsQdzMTC1ff3gyPg,4104
65
+ stouputils/data_science/models/all.py,sha256=BfBJO8PGGMDbWuAXB90JT-vne8rAo0yVnyL_t4PuO5E,3124
66
+ stouputils/data_science/models/base_keras.py,sha256=bOQ6Uk0dILgcjnCT2KehUdc99btOzf5C7xC3Ljx4FUM,27764
67
+ stouputils/data_science/models/keras/all.py,sha256=-InRH5x-5bZsbBGqnuCxDtAg59dTcvhDqYsnqiJtmgs,1041
68
+ stouputils/data_science/models/keras/convnext.py,sha256=3CMhnK_dZgCS6Y0XorRu1QKm12RexdH7HG1-ZISHBlo,2595
69
+ stouputils/data_science/models/keras/densenet.py,sha256=b4mPfwvibhrrIBpFtkcmRWmJXxfx0pNfxcE7t0KLSQg,1858
70
+ stouputils/data_science/models/keras/efficientnet.py,sha256=or4zHeBt82nBnXSNr3AJdziNz8F4wTZZeAmR2IRPkps,2502
71
+ stouputils/data_science/models/keras/mobilenet.py,sha256=ugPYSp_2g3QL_qPBfOZZx0gk2kMeZpic6WkFDvLoveM,2313
72
+ stouputils/data_science/models/keras/resnet.py,sha256=DJexThuFCnYj4cRaa80CunizkOtEu721nLN4UjC3Cko,1841
73
+ stouputils/data_science/models/keras/squeezenet.py,sha256=fvM3xrpRUwKWL6Ter04HosoZkvfK9OCHuH7v1qPXAzY,8590
74
+ stouputils/data_science/models/keras/vgg.py,sha256=D3UJ2uGu8O6bXUUv2tBFwFrXru-oUSjtsbvBPo1WPfc,1545
75
+ stouputils/data_science/models/keras/xception.py,sha256=PHMAQHgM6P9OocC__BBiTLYtc_q7NQ_liug0tQWZ328,1295
76
+ stouputils/data_science/models/keras_utils/callbacks/__init__.py,sha256=211evA7wPJVL5rJ-qGZq1oMj5e-RpZr0_HGfMupGGfo,873
77
+ stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py,sha256=b321QLJu3q7S6ThQeHu7s6PXsm5h0JIFugq5wcUiYLo,7860
78
+ stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py,sha256=p6gIR-Rj2NBGAfWRrhDsS_XViA50nBcPCDDTXCylonk,5206
79
+ stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py,sha256=_9UXBP-Ryef_WCpRaWT0exhSX8VLezXF-FRDMlYTc58,966
80
+ stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py,sha256=MD3V3Uj-7D6Z5jPr09GKBx2HnOgKn7CY4BHzuyVWCoo,9854
81
+ stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py,sha256=WeP3YyoXyMBuLmzW9TqSIx1Sf1dEOoNYhNLvsK3JlSs,2378
82
+ stouputils/data_science/models/keras_utils/losses/__init__.py,sha256=W8NELTZJ217yY8-Pr614a6W5o4_yWuEboCm4e1N6yZY,186
83
+ stouputils/data_science/models/keras_utils/losses/next_generation_loss.py,sha256=U0HfYUVNi1b5YRA9XtB9dpSZ7D3jkEUrEonmlVd3sbY,1634
84
+ stouputils/data_science/models/keras_utils/visualizations.py,sha256=XQDPgLHosKdUxV-B6s73lVmgiTqmmxuov-VTNxnA5_c,15867
85
+ stouputils/data_science/models/model_interface.py,sha256=om1hnEYHTILfLJRcoTDhR7Rj0lbmW_8zIJkTIGuTqOQ,37140
86
+ stouputils/data_science/models/sandbox.py,sha256=ZeuoXNHnVvMlm6umCgTl2Ss0zyQSlxFEV9xJb3ET1Qw,4269
87
+ stouputils/data_science/range_tuple.py,sha256=5f5PQcwENZEMV0O6U5IpZ2_ylNMB_graDyv-wxrDUhk,6908
88
+ stouputils/data_science/scripts/augment_dataset.py,sha256=zGcQ2uSn_DO570NIFEs2DUc_d5uvWxLfY-RavjdO3aU,3469
89
+ stouputils/data_science/scripts/exhaustive_process.py,sha256=Ty2lHBZBweWxH6smpjoUEqpGz6JmMUO_oaNZO7d-gtQ,5483
90
+ stouputils/data_science/scripts/preprocess_dataset.py,sha256=OLC2KjEtSMeyHHPpNOATfNDuq0lZ09utKhsuzBA4MN4,2929
91
+ stouputils/data_science/scripts/routine.py,sha256=FkTLzmcdm_qUp69D-dPAKJm2RfXZZLtPgje6lEopu2I,7662
92
+ stouputils/data_science/utils.py,sha256=HFXI2RQZ53RbBOn_4Act2bi0z4xQlTtsuR5Am80v9JU,11084
93
+ stouputils/decorators.py,sha256=bheT64aWNE22yQePB_5-JMQ4Ezm-1VcTg2WRZaJB2r4,21534
94
+ stouputils/image.py,sha256=NtduEVzgbCuZhDRpDZHGTW7-wTs7MqoxUwSQcipvb08,16633
95
+ stouputils/installer/__init__.py,sha256=DBwI9w3xvw0NR_jDMxmURwPi1F79kPLe7EuNjmrxW_U,502
96
+ stouputils/installer/common.py,sha256=UJr5u02h4LQZQdkmVOkJ3vvW_0-ROGgVMMh0PNoVS1A,2209
97
+ stouputils/installer/downloader.py,sha256=IIV_zI1lnKCD-9OsnroOoo4nDPOLr2Vn6oOYHnXshj8,3659
98
+ stouputils/installer/linux.py,sha256=6BsMFoBDn1-RPMCW8rAciuxHwxbk9QTX0DmA-meQdDE,5512
99
+ stouputils/installer/main.py,sha256=8wrx_cnQo1dFGRf6x8vtxh6-96tQ-AzMyvJ0S64j0io,8538
100
+ stouputils/installer/windows.py,sha256=r2AIuoyAmtMEuoCtQBH9GWQWI-JUT2J9zoH28j9ruOU,4880
101
+ stouputils/io.py,sha256=yQ4jGWoI81cP-ZWxgYwqXmuD6s_IbpkKkZf5jjqqIAE,16841
102
+ stouputils/parallel.py,sha256=duVEwRoMOOFnIW00lWNRi3DdP6crpK70H7mW_EnArS0,18867
103
+ stouputils/print.py,sha256=BGPGu8SfIWhIjFRoUI2VaSCVGFhbBumYq9U2g1K-5uQ,16627
104
+ stouputils/py.typed,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
105
+ stouputils/stouputils/__init__.pyi,sha256=J8LeijIkWrTdGlevNR8dlGlgYg-Dh_MvGjp2EsPZ8UM,351
106
+ stouputils/stouputils/_deprecated.pyi,sha256=6-8YsftJd2fRAdBLsysc6jf-uA8V2wiqkiFAbdfWfJQ,664
107
+ stouputils/stouputils/all_doctests.pyi,sha256=8JD8qn7neYuR0PolabWxX6id1dNEvQDrvOhMS2aYhTM,1907
108
+ stouputils/stouputils/applications/__init__.pyi,sha256=DTYq2Uqq1uLzCMkFByjRqdtREA-9SaQnp4QpgmCEPFg,56
109
+ stouputils/stouputils/applications/automatic_docs.pyi,sha256=sfFXpVE5y5Z907HEjKzpZ_9zM34d-jKNDQCdMx7E-9s,6189
110
+ stouputils/stouputils/applications/upscaler/__init__.pyi,sha256=VSp6Tq09ATCTdfnjhbDnu7lblaLLGbCNi-E22jYxa88,67
111
+ stouputils/stouputils/applications/upscaler/config.pyi,sha256=lsRHAW3mvvM2inKSJ66VXb511ovmIScLABrUzckmUfk,608
112
+ stouputils/stouputils/applications/upscaler/image.pyi,sha256=AB92XoKt8Q2c_J72ZdDdyVDuCGOEiM7E6v8L-uFmAxI,4786
113
+ stouputils/stouputils/applications/upscaler/video.pyi,sha256=AyRlb7iHqCwdW7lHiW8Dy_czin8CbN-GiK2_xoVJvNU,2918
114
+ stouputils/stouputils/archive.pyi,sha256=Z2BbQAiErRYntv53QC9uf_XPw3tx3Oy73wB0Bbil11c,3246
115
+ stouputils/stouputils/backup.pyi,sha256=-SLVykkR5U8479T84zjNPVBNnV193s0zyWjathY2DDA,4923
116
+ stouputils/stouputils/collections.pyi,sha256=mKIBV4K7mm-PTvtoYi_cVOAGjW7bo3iIASqosSXFUzE,3519
117
+ stouputils/stouputils/continuous_delivery/__init__.pyi,sha256=_Sz2D10n1CDEyY8qDFwXNKdr01HVxanY4qdq9aN19cc,117
118
+ stouputils/stouputils/continuous_delivery/cd_utils.pyi,sha256=nxTLQydVOSVIix88dRtBXjMrUPpI5ftiQYbLI_nMByQ,4848
119
+ stouputils/stouputils/continuous_delivery/github.pyi,sha256=RHRsSroEsT0I1qeuq-Wg0JLdEEDttLrzgHZPVRtLZ0Q,6641
120
+ stouputils/stouputils/continuous_delivery/pypi.pyi,sha256=fRAu8ocLNpEN6dhUTMuFxlmRgt3-LRjKPOJjFlUPrJ4,2463
121
+ stouputils/stouputils/continuous_delivery/pyproject.pyi,sha256=bMWwqyG0Auo46dt-dWGePQ9yJ8rSrgb7mnJTfbiS3TQ,2053
122
+ stouputils/stouputils/continuous_delivery/stubs.pyi,sha256=sLZypdz1oGoymQIRPez50rnH8TQhvEIx6A7xUdGtnys,2390
123
+ stouputils/stouputils/ctx.pyi,sha256=-7AJwD9bKzKBFsYlgyULPznstq3LvXRXe2r_2at72FI,9799
124
+ stouputils/stouputils/decorators.pyi,sha256=_ZPqr84G316gkj_cq_LZGuCMhSyGBWunvlxM5Cq9Hvo,10944
125
+ stouputils/stouputils/image.pyi,sha256=Dkf64KmXJTAEcbtYDHFZ1kqEHqOf2FgJ2Z2BlJgp4fU,8455
126
+ stouputils/stouputils/installer/__init__.pyi,sha256=ZB-8frAUOW-0pCEJL-e2AdbFodivv46v3EBYwEXCxRo,117
127
+ stouputils/stouputils/installer/common.pyi,sha256=5aG0-58omFkkNYeVHnQ0uHUBsaI7xoMD-WqWVdOgOms,1403
128
+ stouputils/stouputils/installer/downloader.pyi,sha256=8Xp0sXyba4flHAZ0nNqNlFU4VUmfPvllmPUkWalkvRA,1273
129
+ stouputils/stouputils/installer/linux.pyi,sha256=V-EbY7seOFnC6LL844bqWRNvQ7rHmMhDkcFj5r1V7Tk,1943
130
+ stouputils/stouputils/installer/main.pyi,sha256=r3j4GoMBpU06MpOqjSwoDTiSMOmbA3WWUA87970b6KE,3134
131
+ stouputils/stouputils/installer/windows.pyi,sha256=tHogIFhPVDQS0I10liLkAxnpaFFAvmFtEVMpPIae5LU,1616
132
+ stouputils/stouputils/io.pyi,sha256=TCBTVEWUkI3dO_jWI9oPMF9SbnT1yLzFChE551JPbSY,9076
133
+ stouputils/stouputils/parallel.pyi,sha256=KjFCgIgTZu1YY0ETF-5IpEQzGpSy3a_NX-hnYlUtE8Y,11511
134
+ stouputils/stouputils/print.pyi,sha256=TtP-OuK22uwsP0Wcruy0FxG_zD3fFwHUpxNp34HgCUU,6745
135
+ stouputils/stouputils/version_pkg.pyi,sha256=QPvqp1U3QA-9C_CC1dT9Vahv1hXEhstbM7x5uzMZSsQ,755
136
+ stouputils/version_pkg.py,sha256=Jsp-s03L14DkiZ94vQgrlQmaxApfn9DC8M_nzT1SJLk,7014
137
+ stouputils-1.14.0.dist-info/WHEEL,sha256=RRVLqVugUmFOqBedBFAmA4bsgFcROUBiSUKlERi0Hcg,79
138
+ stouputils-1.14.0.dist-info/entry_points.txt,sha256=tx0z9VOnE-sfkmbFbA93zaBMzV3XSsKEJa_BWIqUzxw,57
139
+ stouputils-1.14.0.dist-info/METADATA,sha256=J4RcudLY01EqGYR0Wk27obEVLoBiMAPzDOqa5JxAv3M,13615
140
+ stouputils-1.14.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: uv 0.9.21
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ stouputils = stouputils.__main__:main
3
+