stouputils 1.12.1__tar.gz → 1.13.0__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 (170) hide show
  1. {stouputils-1.12.1 → stouputils-1.13.0}/PKG-INFO +1 -2
  2. {stouputils-1.12.1 → stouputils-1.13.0}/pyproject.toml +1 -4
  3. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/__init__.py +4 -4
  4. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/__init__.pyi +1 -0
  5. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/__main__.py +14 -9
  6. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/pypi.py +39 -1
  7. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/pypi.pyi +9 -0
  8. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/ctx.py +408 -408
  9. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/config/set.py +125 -125
  10. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +31 -31
  11. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/utils.py +285 -285
  12. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/__init__.py +18 -18
  13. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/linux.py +144 -144
  14. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/main.py +223 -223
  15. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/windows.py +136 -136
  16. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/print.py +0 -58
  17. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/print.pyi +0 -10
  18. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/py.typed +1 -1
  19. stouputils-1.13.0/stouputils/stouputils/__init__.pyi +15 -0
  20. stouputils-1.13.0/stouputils/stouputils/_deprecated.pyi +12 -0
  21. stouputils-1.13.0/stouputils/stouputils/all_doctests.pyi +46 -0
  22. stouputils-1.13.0/stouputils/stouputils/applications/__init__.pyi +2 -0
  23. stouputils-1.13.0/stouputils/stouputils/applications/automatic_docs.pyi +106 -0
  24. stouputils-1.13.0/stouputils/stouputils/applications/upscaler/__init__.pyi +3 -0
  25. stouputils-1.13.0/stouputils/stouputils/applications/upscaler/config.pyi +18 -0
  26. stouputils-1.13.0/stouputils/stouputils/applications/upscaler/image.pyi +109 -0
  27. stouputils-1.13.0/stouputils/stouputils/applications/upscaler/video.pyi +60 -0
  28. stouputils-1.13.0/stouputils/stouputils/archive.pyi +67 -0
  29. stouputils-1.13.0/stouputils/stouputils/backup.pyi +109 -0
  30. stouputils-1.13.0/stouputils/stouputils/collections.pyi +86 -0
  31. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/__init__.pyi +5 -0
  32. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/cd_utils.pyi +129 -0
  33. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/github.pyi +162 -0
  34. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/pypi.pyi +53 -0
  35. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/pyproject.pyi +67 -0
  36. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/stubs.pyi +39 -0
  37. stouputils-1.13.0/stouputils/stouputils/ctx.pyi +211 -0
  38. stouputils-1.13.0/stouputils/stouputils/decorators.pyi +242 -0
  39. stouputils-1.13.0/stouputils/stouputils/image.pyi +172 -0
  40. stouputils-1.13.0/stouputils/stouputils/installer/__init__.pyi +5 -0
  41. stouputils-1.13.0/stouputils/stouputils/installer/common.pyi +39 -0
  42. stouputils-1.13.0/stouputils/stouputils/installer/downloader.pyi +24 -0
  43. stouputils-1.13.0/stouputils/stouputils/installer/linux.pyi +39 -0
  44. stouputils-1.13.0/stouputils/stouputils/installer/main.pyi +57 -0
  45. stouputils-1.13.0/stouputils/stouputils/installer/windows.pyi +31 -0
  46. stouputils-1.13.0/stouputils/stouputils/io.pyi +213 -0
  47. stouputils-1.13.0/stouputils/stouputils/parallel.pyi +211 -0
  48. stouputils-1.13.0/stouputils/stouputils/print.pyi +136 -0
  49. stouputils-1.13.0/stouputils/stouputils/version_pkg.pyi +15 -0
  50. stouputils-1.13.0/stouputils/version_pkg.py +189 -0
  51. stouputils-1.13.0/stouputils/version_pkg.pyi +15 -0
  52. {stouputils-1.12.1 → stouputils-1.13.0}/README.md +0 -0
  53. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/_deprecated.py +0 -0
  54. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/_deprecated.pyi +0 -0
  55. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/all_doctests.py +0 -0
  56. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/all_doctests.pyi +0 -0
  57. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/__init__.py +0 -0
  58. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/__init__.pyi +0 -0
  59. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/automatic_docs.py +0 -0
  60. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/automatic_docs.pyi +0 -0
  61. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/upscaler/__init__.py +0 -0
  62. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/upscaler/__init__.pyi +0 -0
  63. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/upscaler/config.py +0 -0
  64. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/upscaler/config.pyi +0 -0
  65. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/upscaler/image.py +0 -0
  66. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/upscaler/image.pyi +0 -0
  67. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/upscaler/video.py +0 -0
  68. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/applications/upscaler/video.pyi +0 -0
  69. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/archive.py +0 -0
  70. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/archive.pyi +0 -0
  71. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/backup.py +0 -0
  72. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/backup.pyi +0 -0
  73. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/collections.py +0 -0
  74. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/collections.pyi +0 -0
  75. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/__init__.py +0 -0
  76. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/__init__.pyi +0 -0
  77. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/cd_utils.py +0 -0
  78. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/cd_utils.pyi +0 -0
  79. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/github.py +0 -0
  80. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/github.pyi +0 -0
  81. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/pyproject.py +0 -0
  82. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/pyproject.pyi +0 -0
  83. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/stubs.py +0 -0
  84. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/continuous_delivery/stubs.pyi +0 -0
  85. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/ctx.pyi +0 -0
  86. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/config/get.py +0 -0
  87. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/__init__.py +0 -0
  88. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/auto_contrast.py +0 -0
  89. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/axis_flip.py +0 -0
  90. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/bias_field_correction.py +0 -0
  91. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/binary_threshold.py +0 -0
  92. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/blur.py +0 -0
  93. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/brightness.py +0 -0
  94. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/canny.py +0 -0
  95. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/clahe.py +0 -0
  96. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/common.py +0 -0
  97. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/contrast.py +0 -0
  98. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/curvature_flow_filter.py +0 -0
  99. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/denoise.py +0 -0
  100. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/histogram_equalization.py +0 -0
  101. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/invert.py +0 -0
  102. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/laplacian.py +0 -0
  103. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/median_blur.py +0 -0
  104. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/noise.py +0 -0
  105. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/normalize.py +0 -0
  106. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/random_erase.py +0 -0
  107. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/resize.py +0 -0
  108. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/rotation.py +0 -0
  109. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/salt_pepper.py +0 -0
  110. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/sharpening.py +0 -0
  111. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/shearing.py +0 -0
  112. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/threshold.py +0 -0
  113. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/translation.py +0 -0
  114. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/zoom.py +0 -0
  115. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image_augmentation.py +0 -0
  116. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/image_preprocess.py +0 -0
  117. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/prosthesis_detection.py +0 -0
  118. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/data_processing/technique.py +0 -0
  119. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/dataset/__init__.py +0 -0
  120. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/dataset/dataset.py +0 -0
  121. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/dataset/dataset_loader.py +0 -0
  122. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/dataset/grouping_strategy.py +0 -0
  123. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/dataset/image_loader.py +0 -0
  124. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/dataset/xy_tuple.py +0 -0
  125. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/metric_dictionnary.py +0 -0
  126. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/metric_utils.py +0 -0
  127. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/mlflow_utils.py +0 -0
  128. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/abstract_model.py +0 -0
  129. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/all.py +0 -0
  130. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/base_keras.py +0 -0
  131. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras/all.py +0 -0
  132. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras/convnext.py +0 -0
  133. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras/densenet.py +0 -0
  134. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras/efficientnet.py +0 -0
  135. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras/mobilenet.py +0 -0
  136. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras/resnet.py +0 -0
  137. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras/squeezenet.py +0 -0
  138. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras/vgg.py +0 -0
  139. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras/xception.py +0 -0
  140. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/__init__.py +0 -0
  141. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +0 -0
  142. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +0 -0
  143. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +0 -0
  144. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +0 -0
  145. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/losses/__init__.py +0 -0
  146. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +0 -0
  147. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/visualizations.py +0 -0
  148. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/model_interface.py +0 -0
  149. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/models/sandbox.py +0 -0
  150. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/range_tuple.py +0 -0
  151. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/scripts/augment_dataset.py +0 -0
  152. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/scripts/exhaustive_process.py +0 -0
  153. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/scripts/preprocess_dataset.py +0 -0
  154. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/data_science/scripts/routine.py +0 -0
  155. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/decorators.py +0 -0
  156. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/decorators.pyi +0 -0
  157. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/image.py +0 -0
  158. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/image.pyi +0 -0
  159. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/__init__.pyi +0 -0
  160. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/common.py +0 -0
  161. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/common.pyi +0 -0
  162. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/downloader.py +0 -0
  163. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/downloader.pyi +0 -0
  164. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/linux.pyi +0 -0
  165. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/main.pyi +0 -0
  166. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/installer/windows.pyi +0 -0
  167. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/io.py +0 -0
  168. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/io.pyi +0 -0
  169. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/parallel.py +0 -0
  170. {stouputils-1.12.1 → stouputils-1.13.0}/stouputils/parallel.pyi +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: stouputils
3
- Version: 1.12.1
3
+ Version: 1.13.0
4
4
  Summary: Stouputils is a collection of utility modules designed to simplify and enhance the development process. It includes a range of tools for tasks such as execution of doctests, display utilities, decorators, as well as context managers, and many more.
5
5
  Keywords: utilities,tools,helpers,development,python
6
6
  Author: Stoupy51
@@ -25,7 +25,6 @@ Requires-Dist: mlflow ; extra == 'data-science'
25
25
  Requires-Dist: tensorflow ; extra == 'data-science'
26
26
  Requires-Dist: scikit-learn ; extra == 'data-science'
27
27
  Requires-Dist: pywavelets ; extra == 'data-science'
28
- Requires-Dist: mypy ; extra == 'docs'
29
28
  Requires-Dist: m2r2 ; extra == 'docs'
30
29
  Requires-Dist: myst-parser ; extra == 'docs'
31
30
  Requires-Dist: sphinx-copybutton ; extra == 'docs'
@@ -5,12 +5,10 @@ build-backend = "uv_build"
5
5
 
6
6
  [tool.uv.build-backend]
7
7
  module-root = ""
8
- module-name = "stouputils"
9
- ignore-vcs = true
10
8
 
11
9
  [project]
12
10
  name = "stouputils"
13
- version = "1.12.1"
11
+ version = "1.13.0"
14
12
  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."
15
13
  readme = "README.md"
16
14
  keywords = ["utilities", "tools", "helpers", "development", "python"]
@@ -38,7 +36,6 @@ authors = [
38
36
 
39
37
  [project.optional-dependencies]
40
38
  docs = [
41
- "mypy",
42
39
  "m2r2",
43
40
  "myst_parser",
44
41
  "sphinx_copybutton",
@@ -14,10 +14,9 @@ Key Features:
14
14
  - Doctests utilities
15
15
 
16
16
  """
17
- # ruff: noqa: F403
18
-
19
17
  # Version (handle case where the package is not installed)
20
- from importlib.metadata import PackageNotFoundError, version
18
+ from importlib.metadata import PackageNotFoundError
19
+ from importlib.metadata import version as importlib_version
21
20
 
22
21
  # Imports
23
22
  from ._deprecated import *
@@ -32,9 +31,10 @@ from .image import *
32
31
  from .io import *
33
32
  from .parallel import *
34
33
  from .print import *
34
+ from .version_pkg import *
35
35
 
36
36
  try:
37
- __version__: str = version("stouputils")
37
+ __version__: str = importlib_version("stouputils")
38
38
  except PackageNotFoundError:
39
39
  __version__: str = "0.0.0-dev"
40
40
 
@@ -10,5 +10,6 @@ from .image import *
10
10
  from .io import *
11
11
  from .parallel import *
12
12
  from .print import *
13
+ from .version_pkg import *
13
14
 
14
15
  __version__: str
@@ -11,12 +11,13 @@ from .all_doctests import launch_tests
11
11
  from .archive import archive_cli
12
12
  from .backup import backup_cli
13
13
  from .decorators import handle_error
14
- from .print import CYAN, GREEN, RESET, show_version
14
+ from .print import CYAN, GREEN, RESET
15
+ from .version_pkg import show_version_cli
15
16
 
16
17
  # Argument Parser Setup for Auto-Completion
17
18
  parser = argparse.ArgumentParser(prog="stouputils", add_help=False)
18
19
  parser.add_argument("command", nargs="?", choices=[
19
- "--version", "-v", "version", "show_version", "all_doctests", "archive", "backup"
20
+ "--version", "-v", "version", "show_version", "all_doctests", "archive", "backup", "build"
20
21
  ])
21
22
  parser.add_argument("args", nargs="*")
22
23
  argcomplete.autocomplete(parser)
@@ -28,9 +29,7 @@ def main() -> None:
28
29
 
29
30
  # Print the version of stouputils and its dependencies
30
31
  if second_arg in ("--version", "-v", "version", "show_version"):
31
- if len(sys.argv) >= 3:
32
- return show_version(sys.argv[2])
33
- return show_version()
32
+ return show_version_cli()
34
33
 
35
34
  # Handle "all_doctests" command
36
35
  if second_arg == "all_doctests":
@@ -48,6 +47,11 @@ def main() -> None:
48
47
  sys.argv.pop(1) # Remove "backup" from argv so backup_cli gets clean arguments
49
48
  return backup_cli()
50
49
 
50
+ # Handle "build" command
51
+ if second_arg == "build":
52
+ from .continuous_delivery.pypi import pypi_full_routine_using_uv
53
+ return pypi_full_routine_using_uv()
54
+
51
55
  # Check if the command is any package name
52
56
  if second_arg in (): # type: ignore
53
57
  return
@@ -68,10 +72,11 @@ def main() -> None:
68
72
  {CYAN}Usage:{RESET} stouputils <command> [options]
69
73
 
70
74
  {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
+ {GREEN}--version, -v{RESET} [pkg] [-t <depth>] Show version information (optionally for a specific package)
76
+ {GREEN}all_doctests{RESET} [dir] Run all doctests in the specified directory
77
+ {GREEN}archive{RESET} --help Archive utilities (make, repair)
78
+ {GREEN}backup{RESET} --help Backup utilities (delta, consolidate, limit)
79
+ {GREEN}build{RESET} [--no_stubs] [<minor|major>] Build and publish package to PyPI using 'uv' tool (complete routine)
75
80
  {CYAN}{separator}{RESET}
76
81
  """.strip())
77
82
  return
@@ -1,7 +1,8 @@
1
1
  """ This module contains utilities for PyPI.
2
2
  (Using build and twine packages)
3
3
 
4
- - pypi_full_routine: Upload the most recent file(s) to PyPI after updating pip and required packages and building the package
4
+ - pypi_full_routine: Upload the most recent file(s) to PyPI after updating pip and required packages and building the package (using build and twine)
5
+ - pypi_full_routine_using_uv: Full build and publish routine using 'uv' command line tool
5
6
 
6
7
  .. image:: https://raw.githubusercontent.com/Stoupy51/stouputils/refs/heads/main/assets/continuous_delivery/pypi_module.gif
7
8
  :alt: stouputils pypi examples
@@ -11,8 +12,10 @@
11
12
  import os
12
13
  import sys
13
14
  from collections.abc import Callable
15
+ from typing import Any
14
16
 
15
17
  from ..decorators import LogLevels, handle_error
18
+ from .pyproject import read_pyproject
16
19
 
17
20
 
18
21
  def update_pip_and_required_packages() -> int:
@@ -88,4 +91,39 @@ def pypi_full_routine(
88
91
  for file in files[:last_files]:
89
92
  upload_package_function(repository, f"{dist_directory}/{file}")
90
93
 
94
+ def pypi_full_routine_using_uv() -> None:
95
+ """ Full build and publish routine using 'uv' command line tool.
96
+
97
+ Steps:
98
+ 1. Generate stubs unless '--no-stubs' is passed
99
+ 2. Increment version in pyproject.toml (patch by default, minor if 'minor' is passed as last argument, 'major' if 'major' is passed)
100
+ 3. Build the package using 'uv build'
101
+ 4. Upload the most recent file to PyPI using 'uv publish'
102
+ """
103
+ # Get package name from pyproject.toml
104
+ pyproject_data: dict[str, Any] = read_pyproject("pyproject.toml")
105
+ package_name: str = pyproject_data["project"]["name"]
106
+ package_dir: str = package_name
107
+ if not os.path.isdir(package_dir):
108
+ package_dir = "src/" + package_name
109
+
110
+ # Generate stubs unless '--no-stubs' is passed
111
+ if "--no-stubs" not in sys.argv:
112
+ from .stubs import stubs_full_routine
113
+ stubs_full_routine(package_name, output_directory=package_dir, clean_before=True)
114
+
115
+ # Increment version in pyproject.toml
116
+ increment: str = "patch" if sys.argv[-1] not in ("minor", "major") else sys.argv[-1]
117
+ if os.system(f"uv version --bump {increment} --frozen") != 0:
118
+ raise Exception("Error while incrementing version using 'uv version'")
119
+
120
+ # Build the package using 'uv build'
121
+ import shutil
122
+ shutil.rmtree("dist", ignore_errors=True)
123
+ if os.system(f"{sys.executable} -m uv build") != 0:
124
+ raise Exception("Error while building the package using 'uv build'")
125
+
126
+ # Upload the most recent file to PyPI using 'uv publish'
127
+ if os.system(f"{sys.executable} -m uv publish") != 0:
128
+ raise Exception("Error while publishing the package using 'uv publish'")
91
129
 
@@ -1,4 +1,5 @@
1
1
  from ..decorators import LogLevels as LogLevels, handle_error as handle_error
2
+ from .pyproject import read_pyproject as read_pyproject
2
3
  from collections.abc import Callable as Callable
3
4
 
4
5
  def update_pip_and_required_packages() -> int:
@@ -41,3 +42,11 @@ def pypi_full_routine(repository: str, dist_directory: str, last_files: int = 1,
41
42
  \tReturns:
42
43
  \t\tint: Return code of the command.
43
44
  \t'''
45
+ def pypi_full_routine_using_uv() -> None:
46
+ """ Full build and publish routine using 'uv' command line tool.
47
+
48
+ \tSteps:
49
+ \t\t1. Generate stubs unless '--no-stubs' is passed
50
+ \t\t2. Build the package using 'uv build'
51
+ \t\t3. Upload the most recent file to PyPI using 'uv publish'
52
+ \t"""