stouputils 1.9.4__tar.gz → 1.9.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. {stouputils-1.9.4 → stouputils-1.9.6}/PKG-INFO +23 -20
  2. {stouputils-1.9.4 → stouputils-1.9.6}/README.md +22 -19
  3. {stouputils-1.9.4 → stouputils-1.9.6}/pyproject.toml +1 -1
  4. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/__main__.py +19 -12
  5. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/parallel.py +12 -4
  6. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/parallel.pyi +6 -4
  7. {stouputils-1.9.4 → stouputils-1.9.6}/.gitignore +0 -0
  8. {stouputils-1.9.4 → stouputils-1.9.6}/LICENSE +0 -0
  9. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/__init__.py +0 -0
  10. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/__init__.pyi +0 -0
  11. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/_deprecated.py +0 -0
  12. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/_deprecated.pyi +0 -0
  13. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/all_doctests.py +0 -0
  14. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/all_doctests.pyi +0 -0
  15. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/__init__.py +0 -0
  16. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/__init__.pyi +0 -0
  17. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/automatic_docs.py +0 -0
  18. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/automatic_docs.pyi +0 -0
  19. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/upscaler/__init__.py +0 -0
  20. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/upscaler/__init__.pyi +0 -0
  21. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/upscaler/config.py +0 -0
  22. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/upscaler/config.pyi +0 -0
  23. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/upscaler/image.py +0 -0
  24. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/upscaler/image.pyi +0 -0
  25. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/upscaler/video.py +0 -0
  26. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/applications/upscaler/video.pyi +0 -0
  27. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/archive.py +0 -0
  28. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/archive.pyi +0 -0
  29. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/backup.py +0 -0
  30. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/backup.pyi +0 -0
  31. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/collections.py +0 -0
  32. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/collections.pyi +0 -0
  33. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/__init__.py +0 -0
  34. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/__init__.pyi +0 -0
  35. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/cd_utils.py +0 -0
  36. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/cd_utils.pyi +0 -0
  37. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/github.py +0 -0
  38. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/github.pyi +0 -0
  39. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/pypi.py +0 -0
  40. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/pypi.pyi +0 -0
  41. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/pyproject.py +0 -0
  42. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/pyproject.pyi +0 -0
  43. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/stubs.py +0 -0
  44. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/continuous_delivery/stubs.pyi +0 -0
  45. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/ctx.py +0 -0
  46. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/ctx.pyi +0 -0
  47. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/config/get.py +0 -0
  48. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/config/set.py +0 -0
  49. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/__init__.py +0 -0
  50. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/auto_contrast.py +0 -0
  51. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/axis_flip.py +0 -0
  52. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/bias_field_correction.py +0 -0
  53. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/binary_threshold.py +0 -0
  54. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/blur.py +0 -0
  55. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/brightness.py +0 -0
  56. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/canny.py +0 -0
  57. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/clahe.py +0 -0
  58. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/common.py +0 -0
  59. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/contrast.py +0 -0
  60. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/curvature_flow_filter.py +0 -0
  61. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/denoise.py +0 -0
  62. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/histogram_equalization.py +0 -0
  63. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/invert.py +0 -0
  64. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/laplacian.py +0 -0
  65. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/median_blur.py +0 -0
  66. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/noise.py +0 -0
  67. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/normalize.py +0 -0
  68. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/random_erase.py +0 -0
  69. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/resize.py +0 -0
  70. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/rotation.py +0 -0
  71. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/salt_pepper.py +0 -0
  72. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/sharpening.py +0 -0
  73. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/shearing.py +0 -0
  74. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/threshold.py +0 -0
  75. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/translation.py +0 -0
  76. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image/zoom.py +0 -0
  77. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image_augmentation.py +0 -0
  78. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/image_preprocess.py +0 -0
  79. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/prosthesis_detection.py +0 -0
  80. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/data_processing/technique.py +0 -0
  81. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/dataset/__init__.py +0 -0
  82. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/dataset/dataset.py +0 -0
  83. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/dataset/dataset_loader.py +0 -0
  84. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/dataset/grouping_strategy.py +0 -0
  85. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/dataset/image_loader.py +0 -0
  86. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/dataset/xy_tuple.py +0 -0
  87. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/metric_dictionnary.py +0 -0
  88. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/metric_utils.py +0 -0
  89. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/mlflow_utils.py +0 -0
  90. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/abstract_model.py +0 -0
  91. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/all.py +0 -0
  92. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/base_keras.py +0 -0
  93. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras/all.py +0 -0
  94. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras/convnext.py +0 -0
  95. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras/densenet.py +0 -0
  96. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras/efficientnet.py +0 -0
  97. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras/mobilenet.py +0 -0
  98. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras/resnet.py +0 -0
  99. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras/squeezenet.py +0 -0
  100. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras/vgg.py +0 -0
  101. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras/xception.py +0 -0
  102. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras_utils/callbacks/__init__.py +0 -0
  103. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +0 -0
  104. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +0 -0
  105. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +0 -0
  106. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +0 -0
  107. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +0 -0
  108. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras_utils/losses/__init__.py +0 -0
  109. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +0 -0
  110. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/keras_utils/visualizations.py +0 -0
  111. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/model_interface.py +0 -0
  112. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/models/sandbox.py +0 -0
  113. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/range_tuple.py +0 -0
  114. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/scripts/augment_dataset.py +0 -0
  115. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/scripts/exhaustive_process.py +0 -0
  116. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/scripts/preprocess_dataset.py +0 -0
  117. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/scripts/routine.py +0 -0
  118. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/data_science/utils.py +0 -0
  119. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/decorators.py +0 -0
  120. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/decorators.pyi +0 -0
  121. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/image.py +0 -0
  122. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/image.pyi +0 -0
  123. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/__init__.py +0 -0
  124. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/__init__.pyi +0 -0
  125. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/common.py +0 -0
  126. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/common.pyi +0 -0
  127. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/downloader.py +0 -0
  128. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/downloader.pyi +0 -0
  129. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/linux.py +0 -0
  130. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/linux.pyi +0 -0
  131. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/main.py +0 -0
  132. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/main.pyi +0 -0
  133. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/windows.py +0 -0
  134. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/installer/windows.pyi +0 -0
  135. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/io.py +0 -0
  136. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/io.pyi +0 -0
  137. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/print.py +0 -0
  138. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/print.pyi +0 -0
  139. {stouputils-1.9.4 → stouputils-1.9.6}/stouputils/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stouputils
3
- Version: 1.9.4
3
+ Version: 1.9.6
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
  Project-URL: Homepage, https://github.com/Stoupy51/stouputils
6
6
  Project-URL: Issues, https://github.com/Stoupy51/stouputils/issues
@@ -104,34 +104,48 @@ stouputils all_<TAB> # Completes to: all_doctests
104
104
  .code-tree .comment {
105
105
  color:rgb(231, 213, 48);
106
106
  }
107
+ .code-tree .paren {
108
+ color: orange;
109
+ }
107
110
  </style>
108
111
  </details>
109
112
 
110
113
  <pre class="code-tree">stouputils/
114
+ ├── <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>
115
+ ├── <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>
116
+ ├── <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>
117
+ ├── <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>
118
+ ├── <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>
119
+ ├── <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>
120
+ ├── <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>
121
+ ├── <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>
122
+ ├── <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>
123
+ ├── <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>
124
+
111
125
  ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.applications.html">applications/</a>
112
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.applications.automatic_docs.html">automatic_docs.py</a> <span class="comment"># 📚 Documentation generation utilities (used to create this documentation)</span>
113
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.applications.upscaler.html">upscaler/</a> <span class="comment"># 🔎 Image & Video upscaler (configurable)</span>
126
+ │ ├── <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>
127
+ │ ├── <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>
114
128
  │ └── ...
115
129
 
116
130
  ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.continuous_delivery.html">continuous_delivery/</a>
117
131
  │ ├── <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>
118
- │ ├── <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 (upload_to_github)</span>
119
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.continuous_delivery.pypi.html">pypi.py</a> <span class="comment"># 📦 Utilities for PyPI (pypi_full_routine)</span>
132
+ │ ├── <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>
133
+ │ ├── <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>
120
134
  │ ├── <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>
121
135
  │ ├── <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>
122
136
  │ └── ...
123
137
 
124
138
  ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.html">data_science/</a>
125
139
  │ ├── <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>
126
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.dataset.html">dataset/</a> <span class="comment"># 📊 Dataset handling (dataset, dataset_loader, grouping_strategy)</span>
127
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.data_processing.html">data_processing/</a> <span class="comment"># 🔄 Data processing utilities (image augmentation, preprocessing)</span>
140
+ │ ├── <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>
141
+ │ ├── <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>
128
142
  │ │ ├── <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>
129
143
  │ │ └── ...
130
144
  │ ├── <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>
131
145
  │ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.models.keras.html">keras/</a> <span class="comment"># 🤖 Keras model implementations</span>
132
- │ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.models.keras_utils.html">keras_utils/</a> <span class="comment"># 🛠️ Keras utilities (callbacks, losses, visualizations)</span>
146
+ │ │ ├── <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>
133
147
  │ │ └── ...
134
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.scripts.html">scripts/</a> <span class="comment"># 📜 Data science scripts (augment, preprocess, routine)</span>
148
+ │ ├── <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>
135
149
  │ ├── <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>
136
150
  │ ├── <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>
137
151
  │ └── ...
@@ -143,17 +157,6 @@ stouputils all_<TAB> # Completes to: all_doctests
143
157
  │ ├── <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>
144
158
  │ ├── <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>
145
159
  │ └── ...
146
-
147
- ├── <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>
148
- ├── <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>
149
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.backup.html">backup.py</a> <span class="comment"># 💾 Utilities for backup management (delta backup, consolidate)</span>
150
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.collections.html">collections.py</a> <span class="comment"># 🧰 Utilities for collection manipulation (unique_list, sort_dict_keys, upsert_in_dataframe, array_to_disk)</span>
151
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.ctx.html">ctx.py</a> <span class="comment"># 🔇 Context managers (Muffle, LogToFile, MeasureTime, DoNothing)</span>
152
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.decorators.html">decorators.py</a> <span class="comment"># 🎯 Decorators (measure_time, handle_error, timeout, retry, simple_cache, abstract, deprecated, silent)</span>
153
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.image.html">image.py</a> <span class="comment"># 🖼️ Little utilities for image processing (image_resize, auto_crop, numpy_to_gif, numpy_to_obj)</span>
154
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.io.html">io.py</a> <span class="comment"># 💾 Utilities for file management (super_json, super_csv, super_copy, super_open, clean_path)</span>
155
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.parallel.html">parallel.py</a> <span class="comment"># 🔀 Utility functions for parallel processing (multiprocessing, multithreading)</span>
156
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.print.html">print.py</a> <span class="comment"># 🖨️ Utility functions for printing messages with different levels of importance</span>
157
160
  └── ...
158
161
  </pre>
159
162
  </html>
@@ -62,34 +62,48 @@ stouputils all_<TAB> # Completes to: all_doctests
62
62
  .code-tree .comment {
63
63
  color:rgb(231, 213, 48);
64
64
  }
65
+ .code-tree .paren {
66
+ color: orange;
67
+ }
65
68
  </style>
66
69
  </details>
67
70
 
68
71
  <pre class="code-tree">stouputils/
72
+ ├── <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>
73
+ ├── <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>
74
+ ├── <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>
75
+ ├── <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>
76
+ ├── <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>
77
+ ├── <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>
78
+ ├── <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>
79
+ ├── <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>
80
+ ├── <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>
81
+ ├── <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>
82
+
69
83
  ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.applications.html">applications/</a>
70
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.applications.automatic_docs.html">automatic_docs.py</a> <span class="comment"># 📚 Documentation generation utilities (used to create this documentation)</span>
71
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.applications.upscaler.html">upscaler/</a> <span class="comment"># 🔎 Image & Video upscaler (configurable)</span>
84
+ │ ├── <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>
85
+ │ ├── <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>
72
86
  │ └── ...
73
87
 
74
88
  ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.continuous_delivery.html">continuous_delivery/</a>
75
89
  │ ├── <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>
76
- │ ├── <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 (upload_to_github)</span>
77
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.continuous_delivery.pypi.html">pypi.py</a> <span class="comment"># 📦 Utilities for PyPI (pypi_full_routine)</span>
90
+ │ ├── <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>
91
+ │ ├── <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>
78
92
  │ ├── <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>
79
93
  │ ├── <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>
80
94
  │ └── ...
81
95
 
82
96
  ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.html">data_science/</a>
83
97
  │ ├── <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>
84
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.dataset.html">dataset/</a> <span class="comment"># 📊 Dataset handling (dataset, dataset_loader, grouping_strategy)</span>
85
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.data_processing.html">data_processing/</a> <span class="comment"># 🔄 Data processing utilities (image augmentation, preprocessing)</span>
98
+ │ ├── <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>
99
+ │ ├── <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>
86
100
  │ │ ├── <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>
87
101
  │ │ └── ...
88
102
  │ ├── <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>
89
103
  │ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.models.keras.html">keras/</a> <span class="comment"># 🤖 Keras model implementations</span>
90
- │ │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.models.keras_utils.html">keras_utils/</a> <span class="comment"># 🛠️ Keras utilities (callbacks, losses, visualizations)</span>
104
+ │ │ ├── <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>
91
105
  │ │ └── ...
92
- │ ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.data_science.scripts.html">scripts/</a> <span class="comment"># 📜 Data science scripts (augment, preprocess, routine)</span>
106
+ │ ├── <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>
93
107
  │ ├── <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>
94
108
  │ ├── <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>
95
109
  │ └── ...
@@ -101,17 +115,6 @@ stouputils all_<TAB> # Completes to: all_doctests
101
115
  │ ├── <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>
102
116
  │ ├── <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>
103
117
  │ └── ...
104
-
105
- ├── <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>
106
- ├── <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>
107
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.backup.html">backup.py</a> <span class="comment"># 💾 Utilities for backup management (delta backup, consolidate)</span>
108
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.collections.html">collections.py</a> <span class="comment"># 🧰 Utilities for collection manipulation (unique_list, sort_dict_keys, upsert_in_dataframe, array_to_disk)</span>
109
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.ctx.html">ctx.py</a> <span class="comment"># 🔇 Context managers (Muffle, LogToFile, MeasureTime, DoNothing)</span>
110
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.decorators.html">decorators.py</a> <span class="comment"># 🎯 Decorators (measure_time, handle_error, timeout, retry, simple_cache, abstract, deprecated, silent)</span>
111
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.image.html">image.py</a> <span class="comment"># 🖼️ Little utilities for image processing (image_resize, auto_crop, numpy_to_gif, numpy_to_obj)</span>
112
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.io.html">io.py</a> <span class="comment"># 💾 Utilities for file management (super_json, super_csv, super_copy, super_open, clean_path)</span>
113
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.parallel.html">parallel.py</a> <span class="comment"># 🔀 Utility functions for parallel processing (multiprocessing, multithreading)</span>
114
- ├── <a href="https://stoupy51.github.io/stouputils/latest/modules/stouputils.print.html">print.py</a> <span class="comment"># 🖨️ Utility functions for printing messages with different levels of importance</span>
115
118
  └── ...
116
119
  </pre>
117
120
  </html>
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
 
6
6
  [project]
7
7
  name = "stouputils"
8
- version = "1.9.4"
8
+ version = "1.9.6"
9
9
  description = "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."
10
10
  readme = "README.md"
11
11
  requires-python = ">=3.10"
@@ -15,7 +15,9 @@ from .print import CYAN, GREEN, RESET, show_version
15
15
 
16
16
  # Argument Parser Setup for Auto-Completion
17
17
  parser = argparse.ArgumentParser(prog="stouputils", add_help=False)
18
- parser.add_argument("command", nargs="?", choices=["--version", "-v", "all_doctests", "archive", "backup"])
18
+ parser.add_argument("command", nargs="?", choices=[
19
+ "--version", "-v", "version", "show_version", "all_doctests", "archive", "backup"
20
+ ])
19
21
  parser.add_argument("args", nargs="*")
20
22
  argcomplete.autocomplete(parser)
21
23
 
@@ -25,7 +27,9 @@ def main() -> None:
25
27
  second_arg: str = sys.argv[1].lower() if len(sys.argv) >= 2 else ""
26
28
 
27
29
  # Print the version of stouputils and its dependencies
28
- if second_arg in ("--version","-v"):
30
+ if second_arg in ("--version", "-v", "version", "show_version"):
31
+ if len(sys.argv) >= 3:
32
+ return show_version(sys.argv[2])
29
33
  return show_version()
30
34
 
31
35
  # Handle "all_doctests" command
@@ -57,16 +61,19 @@ def main() -> None:
57
61
 
58
62
  # Print help with nice formatting
59
63
  separator: str = "─" * 60
60
- print(f"{CYAN}{separator}{RESET}")
61
- print(f"{CYAN}stouputils {GREEN}CLI {CYAN}v{pkg_version}{RESET}")
62
- print(f"{CYAN}{separator}{RESET}")
63
- print(f"\n{CYAN}Usage:{RESET} stouputils <command> [options]")
64
- print(f"\n{CYAN}Available commands:{RESET}")
65
- print(f" {GREEN}--version, -v{RESET} Show version information")
66
- print(f" {GREEN}all_doctests{RESET} [dir] Run all doctests in the specified directory")
67
- print(f" {GREEN}archive{RESET} --help Archive utilities (make, repair)")
68
- print(f" {GREEN}backup{RESET} --help Backup utilities (delta, consolidate, limit)")
69
- print(f"{CYAN}{separator}{RESET}")
64
+ print(f"""
65
+ {CYAN}{separator}{RESET}
66
+ {CYAN}stouputils {GREEN}CLI {CYAN}v{pkg_version}{RESET}
67
+ {CYAN}{separator}{RESET}
68
+ {CYAN}Usage:{RESET} stouputils <command> [options]
69
+
70
+ {CYAN}Available commands:{RESET}
71
+ {GREEN}--version, -v{RESET} [pkg] Show version information (optionally for a specific package)
72
+ {GREEN}all_doctests{RESET} [dir] Run all doctests in the specified directory
73
+ {GREEN}archive{RESET} --help Archive utilities (make, repair)
74
+ {GREEN}backup{RESET} --help Backup utilities (delta, consolidate, limit)
75
+ {CYAN}{separator}{RESET}
76
+ """.strip())
70
77
  return
71
78
 
72
79
  if __name__ == "__main__":
@@ -40,7 +40,7 @@ def multiprocessing(
40
40
  use_starmap: bool = False,
41
41
  chunksize: int = 1,
42
42
  desc: str = "",
43
- max_workers: int = CPU_COUNT,
43
+ max_workers: int | float = CPU_COUNT,
44
44
  delay_first_calls: float = 0,
45
45
  color: str = MAGENTA,
46
46
  bar_format: str = BAR_FORMAT,
@@ -61,7 +61,8 @@ def multiprocessing(
61
61
  (Defaults to 1 for proper progress bar display)
62
62
  desc (str): Description displayed in the progress bar
63
63
  (if not provided no progress bar will be displayed)
64
- max_workers (int): Number of workers to use (Defaults to CPU_COUNT), -1 means CPU_COUNT
64
+ max_workers (int | float): Number of workers to use (Defaults to CPU_COUNT), -1 means CPU_COUNT.
65
+ If float between 0 and 1, it's treated as a percentage of CPU_COUNT.
65
66
  delay_first_calls (float): Apply i*delay_first_calls seconds delay to the first "max_workers" calls.
66
67
  For instance, the first process will be delayed by 0 seconds, the second by 1 second, etc.
67
68
  (Defaults to 0): This can be useful to avoid functions being called in the same second.
@@ -109,6 +110,9 @@ def multiprocessing(
109
110
  # Handle parameters
110
111
  if max_workers == -1:
111
112
  max_workers = CPU_COUNT
113
+ if isinstance(max_workers, float):
114
+ assert 0 < max_workers <= 1, "max_workers as float must be between 0 and 1 (percentage)"
115
+ max_workers = int(max_workers * CPU_COUNT)
112
116
  verbose: bool = desc != ""
113
117
  desc, func, args = _handle_parameters(func, args, use_starmap, delay_first_calls, max_workers, desc, color)
114
118
  if bar_format == BAR_FORMAT:
@@ -148,7 +152,7 @@ def multithreading(
148
152
  args: list[T],
149
153
  use_starmap: bool = False,
150
154
  desc: str = "",
151
- max_workers: int = CPU_COUNT,
155
+ max_workers: int | float = CPU_COUNT,
152
156
  delay_first_calls: float = 0,
153
157
  color: str = MAGENTA,
154
158
  bar_format: str = BAR_FORMAT,
@@ -167,7 +171,8 @@ def multithreading(
167
171
  True means the function will be called like func(\*args[i]) instead of func(args[i])
168
172
  desc (str): Description displayed in the progress bar
169
173
  (if not provided no progress bar will be displayed)
170
- max_workers (int): Number of workers to use (Defaults to CPU_COUNT), -1 means CPU_COUNT
174
+ max_workers (int | float): Number of workers to use (Defaults to CPU_COUNT), -1 means CPU_COUNT.
175
+ If float between 0 and 1, it's treated as a percentage of CPU_COUNT.
171
176
  delay_first_calls (float): Apply i*delay_first_calls seconds delay to the first "max_workers" calls.
172
177
  For instance with value to 1, the first thread will be delayed by 0 seconds, the second by 1 second, etc.
173
178
  (Defaults to 0): This can be useful to avoid functions being called in the same second.
@@ -213,6 +218,9 @@ def multithreading(
213
218
  # Handle parameters
214
219
  if max_workers == -1:
215
220
  max_workers = CPU_COUNT
221
+ if isinstance(max_workers, float):
222
+ assert 0 < max_workers <= 1, "max_workers as float must be between 0 and 1 (percentage)"
223
+ max_workers = int(max_workers * CPU_COUNT)
216
224
  verbose: bool = desc != ""
217
225
  desc, func, args = _handle_parameters(func, args, use_starmap, delay_first_calls, max_workers, desc, color)
218
226
  if bar_format == BAR_FORMAT:
@@ -10,7 +10,7 @@ CPU_COUNT: int
10
10
  T = TypeVar('T')
11
11
  R = TypeVar('R')
12
12
 
13
- def multiprocessing(func: Callable[..., R] | list[Callable[..., R]], args: list[T], use_starmap: bool = False, chunksize: int = 1, desc: str = '', max_workers: int = ..., delay_first_calls: float = 0, color: str = ..., bar_format: str = ..., ascii: bool = False) -> list[R]:
13
+ def multiprocessing(func: Callable[..., R] | list[Callable[..., R]], args: list[T], use_starmap: bool = False, chunksize: int = 1, desc: str = '', max_workers: int | float = ..., delay_first_calls: float = 0, color: str = ..., bar_format: str = ..., ascii: bool = False) -> list[R]:
14
14
  ''' Method to execute a function in parallel using multiprocessing
15
15
 
16
16
  \t- For CPU-bound operations where the GIL (Global Interpreter Lock) is a bottleneck.
@@ -26,7 +26,8 @@ def multiprocessing(func: Callable[..., R] | list[Callable[..., R]], args: list[
26
26
  \t\t\t(Defaults to 1 for proper progress bar display)
27
27
  \t\tdesc\t\t\t\t(str):\t\t\t\tDescription displayed in the progress bar
28
28
  \t\t\t(if not provided no progress bar will be displayed)
29
- \t\tmax_workers\t\t\t(int):\t\t\t\tNumber of workers to use (Defaults to CPU_COUNT), -1 means CPU_COUNT
29
+ \t\tmax_workers\t\t\t(int | float):\t\tNumber of workers to use (Defaults to CPU_COUNT), -1 means CPU_COUNT.
30
+ \t\t\tIf float between 0 and 1, it\'s treated as a percentage of CPU_COUNT.
30
31
  \t\tdelay_first_calls\t(float):\t\t\tApply i*delay_first_calls seconds delay to the first "max_workers" calls.
31
32
  \t\t\tFor instance, the first process will be delayed by 0 seconds, the second by 1 second, etc.
32
33
  \t\t\t(Defaults to 0): This can be useful to avoid functions being called in the same second.
@@ -64,7 +65,7 @@ def multiprocessing(func: Callable[..., R] | list[Callable[..., R]], args: list[
64
65
  \t\t\t. )
65
66
  \t\t\t[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
66
67
  \t'''
67
- def multithreading(func: Callable[..., R] | list[Callable[..., R]], args: list[T], use_starmap: bool = False, desc: str = '', max_workers: int = ..., delay_first_calls: float = 0, color: str = ..., bar_format: str = ..., ascii: bool = False) -> list[R]:
68
+ def multithreading(func: Callable[..., R] | list[Callable[..., R]], args: list[T], use_starmap: bool = False, desc: str = '', max_workers: int | float = ..., delay_first_calls: float = 0, color: str = ..., bar_format: str = ..., ascii: bool = False) -> list[R]:
68
69
  ''' Method to execute a function in parallel using multithreading, you should use it:
69
70
 
70
71
  \t- For I/O-bound operations where the GIL is not a bottleneck, such as network requests or disk operations.
@@ -78,7 +79,8 @@ def multithreading(func: Callable[..., R] | list[Callable[..., R]], args: list[T
78
79
  \t\t\tTrue means the function will be called like func(\\*args[i]) instead of func(args[i])
79
80
  \t\tdesc\t\t\t\t(str):\t\t\t\tDescription displayed in the progress bar
80
81
  \t\t\t(if not provided no progress bar will be displayed)
81
- \t\tmax_workers\t\t\t(int):\t\t\t\tNumber of workers to use (Defaults to CPU_COUNT), -1 means CPU_COUNT
82
+ \t\tmax_workers\t\t\t(int | float):\t\tNumber of workers to use (Defaults to CPU_COUNT), -1 means CPU_COUNT.
83
+ \t\t\tIf float between 0 and 1, it\'s treated as a percentage of CPU_COUNT.
82
84
  \t\tdelay_first_calls\t(float):\t\t\tApply i*delay_first_calls seconds delay to the first "max_workers" calls.
83
85
  \t\t\tFor instance with value to 1, the first thread will be delayed by 0 seconds, the second by 1 second, etc.
84
86
  \t\t\t(Defaults to 0): This can be useful to avoid functions being called in the same second.
File without changes
File without changes
File without changes
File without changes
File without changes