stouputils 1.12.2__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.2 → stouputils-1.13.0}/PKG-INFO +1 -1
  2. {stouputils-1.12.2 → stouputils-1.13.0}/pyproject.toml +1 -3
  3. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/__main__.py +11 -6
  4. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/pypi.py +39 -1
  5. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/pypi.pyi +9 -0
  6. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/ctx.py +408 -408
  7. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/config/set.py +125 -125
  8. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +31 -31
  9. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/utils.py +285 -285
  10. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/__init__.py +18 -18
  11. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/linux.py +144 -144
  12. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/main.py +223 -223
  13. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/windows.py +136 -136
  14. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/py.typed +1 -1
  15. stouputils-1.13.0/stouputils/stouputils/__init__.pyi +15 -0
  16. stouputils-1.13.0/stouputils/stouputils/_deprecated.pyi +12 -0
  17. stouputils-1.13.0/stouputils/stouputils/all_doctests.pyi +46 -0
  18. stouputils-1.13.0/stouputils/stouputils/applications/__init__.pyi +2 -0
  19. stouputils-1.13.0/stouputils/stouputils/applications/automatic_docs.pyi +106 -0
  20. stouputils-1.13.0/stouputils/stouputils/applications/upscaler/__init__.pyi +3 -0
  21. stouputils-1.13.0/stouputils/stouputils/applications/upscaler/config.pyi +18 -0
  22. stouputils-1.13.0/stouputils/stouputils/applications/upscaler/image.pyi +109 -0
  23. stouputils-1.13.0/stouputils/stouputils/applications/upscaler/video.pyi +60 -0
  24. stouputils-1.13.0/stouputils/stouputils/archive.pyi +67 -0
  25. stouputils-1.13.0/stouputils/stouputils/backup.pyi +109 -0
  26. stouputils-1.13.0/stouputils/stouputils/collections.pyi +86 -0
  27. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/__init__.pyi +5 -0
  28. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/cd_utils.pyi +129 -0
  29. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/github.pyi +162 -0
  30. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/pypi.pyi +53 -0
  31. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/pyproject.pyi +67 -0
  32. stouputils-1.13.0/stouputils/stouputils/continuous_delivery/stubs.pyi +39 -0
  33. stouputils-1.13.0/stouputils/stouputils/ctx.pyi +211 -0
  34. stouputils-1.13.0/stouputils/stouputils/decorators.pyi +242 -0
  35. stouputils-1.13.0/stouputils/stouputils/image.pyi +172 -0
  36. stouputils-1.13.0/stouputils/stouputils/installer/__init__.pyi +5 -0
  37. stouputils-1.13.0/stouputils/stouputils/installer/common.pyi +39 -0
  38. stouputils-1.13.0/stouputils/stouputils/installer/downloader.pyi +24 -0
  39. stouputils-1.13.0/stouputils/stouputils/installer/linux.pyi +39 -0
  40. stouputils-1.13.0/stouputils/stouputils/installer/main.pyi +57 -0
  41. stouputils-1.13.0/stouputils/stouputils/installer/windows.pyi +31 -0
  42. stouputils-1.13.0/stouputils/stouputils/io.pyi +213 -0
  43. stouputils-1.13.0/stouputils/stouputils/parallel.pyi +211 -0
  44. stouputils-1.13.0/stouputils/stouputils/print.pyi +136 -0
  45. stouputils-1.13.0/stouputils/version_pkg.pyi +15 -0
  46. {stouputils-1.12.2 → stouputils-1.13.0}/README.md +0 -0
  47. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/__init__.py +0 -0
  48. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/__init__.pyi +0 -0
  49. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/_deprecated.py +0 -0
  50. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/_deprecated.pyi +0 -0
  51. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/all_doctests.py +0 -0
  52. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/all_doctests.pyi +0 -0
  53. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/__init__.py +0 -0
  54. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/__init__.pyi +0 -0
  55. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/automatic_docs.py +0 -0
  56. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/automatic_docs.pyi +0 -0
  57. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/upscaler/__init__.py +0 -0
  58. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/upscaler/__init__.pyi +0 -0
  59. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/upscaler/config.py +0 -0
  60. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/upscaler/config.pyi +0 -0
  61. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/upscaler/image.py +0 -0
  62. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/upscaler/image.pyi +0 -0
  63. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/upscaler/video.py +0 -0
  64. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/applications/upscaler/video.pyi +0 -0
  65. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/archive.py +0 -0
  66. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/archive.pyi +0 -0
  67. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/backup.py +0 -0
  68. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/backup.pyi +0 -0
  69. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/collections.py +0 -0
  70. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/collections.pyi +0 -0
  71. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/__init__.py +0 -0
  72. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/__init__.pyi +0 -0
  73. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/cd_utils.py +0 -0
  74. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/cd_utils.pyi +0 -0
  75. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/github.py +0 -0
  76. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/github.pyi +0 -0
  77. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/pyproject.py +0 -0
  78. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/pyproject.pyi +0 -0
  79. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/stubs.py +0 -0
  80. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/continuous_delivery/stubs.pyi +0 -0
  81. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/ctx.pyi +0 -0
  82. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/config/get.py +0 -0
  83. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/__init__.py +0 -0
  84. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/auto_contrast.py +0 -0
  85. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/axis_flip.py +0 -0
  86. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/bias_field_correction.py +0 -0
  87. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/binary_threshold.py +0 -0
  88. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/blur.py +0 -0
  89. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/brightness.py +0 -0
  90. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/canny.py +0 -0
  91. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/clahe.py +0 -0
  92. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/common.py +0 -0
  93. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/contrast.py +0 -0
  94. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/curvature_flow_filter.py +0 -0
  95. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/denoise.py +0 -0
  96. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/histogram_equalization.py +0 -0
  97. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/invert.py +0 -0
  98. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/laplacian.py +0 -0
  99. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/median_blur.py +0 -0
  100. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/noise.py +0 -0
  101. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/normalize.py +0 -0
  102. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/random_erase.py +0 -0
  103. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/resize.py +0 -0
  104. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/rotation.py +0 -0
  105. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/salt_pepper.py +0 -0
  106. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/sharpening.py +0 -0
  107. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/shearing.py +0 -0
  108. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/threshold.py +0 -0
  109. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/translation.py +0 -0
  110. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image/zoom.py +0 -0
  111. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image_augmentation.py +0 -0
  112. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/image_preprocess.py +0 -0
  113. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/prosthesis_detection.py +0 -0
  114. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/data_processing/technique.py +0 -0
  115. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/dataset/__init__.py +0 -0
  116. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/dataset/dataset.py +0 -0
  117. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/dataset/dataset_loader.py +0 -0
  118. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/dataset/grouping_strategy.py +0 -0
  119. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/dataset/image_loader.py +0 -0
  120. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/dataset/xy_tuple.py +0 -0
  121. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/metric_dictionnary.py +0 -0
  122. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/metric_utils.py +0 -0
  123. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/mlflow_utils.py +0 -0
  124. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/abstract_model.py +0 -0
  125. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/all.py +0 -0
  126. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/base_keras.py +0 -0
  127. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras/all.py +0 -0
  128. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras/convnext.py +0 -0
  129. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras/densenet.py +0 -0
  130. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras/efficientnet.py +0 -0
  131. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras/mobilenet.py +0 -0
  132. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras/resnet.py +0 -0
  133. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras/squeezenet.py +0 -0
  134. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras/vgg.py +0 -0
  135. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras/xception.py +0 -0
  136. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/__init__.py +0 -0
  137. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +0 -0
  138. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +0 -0
  139. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +0 -0
  140. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +0 -0
  141. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/losses/__init__.py +0 -0
  142. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +0 -0
  143. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/keras_utils/visualizations.py +0 -0
  144. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/model_interface.py +0 -0
  145. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/models/sandbox.py +0 -0
  146. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/range_tuple.py +0 -0
  147. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/scripts/augment_dataset.py +0 -0
  148. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/scripts/exhaustive_process.py +0 -0
  149. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/scripts/preprocess_dataset.py +0 -0
  150. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/data_science/scripts/routine.py +0 -0
  151. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/decorators.py +0 -0
  152. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/decorators.pyi +0 -0
  153. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/image.py +0 -0
  154. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/image.pyi +0 -0
  155. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/__init__.pyi +0 -0
  156. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/common.py +0 -0
  157. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/common.pyi +0 -0
  158. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/downloader.py +0 -0
  159. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/downloader.pyi +0 -0
  160. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/linux.pyi +0 -0
  161. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/main.pyi +0 -0
  162. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/installer/windows.pyi +0 -0
  163. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/io.py +0 -0
  164. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/io.pyi +0 -0
  165. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/parallel.py +0 -0
  166. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/parallel.pyi +0 -0
  167. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/print.py +0 -0
  168. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/print.pyi +0 -0
  169. {stouputils-1.12.2 → stouputils-1.13.0/stouputils}/stouputils/version_pkg.pyi +0 -0
  170. {stouputils-1.12.2 → stouputils-1.13.0}/stouputils/version_pkg.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: stouputils
3
- Version: 1.12.2
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
@@ -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.2"
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"]
@@ -17,7 +17,7 @@ from .version_pkg import show_version_cli
17
17
  # Argument Parser Setup for Auto-Completion
18
18
  parser = argparse.ArgumentParser(prog="stouputils", add_help=False)
19
19
  parser.add_argument("command", nargs="?", choices=[
20
- "--version", "-v", "version", "show_version", "all_doctests", "archive", "backup"
20
+ "--version", "-v", "version", "show_version", "all_doctests", "archive", "backup", "build"
21
21
  ])
22
22
  parser.add_argument("args", nargs="*")
23
23
  argcomplete.autocomplete(parser)
@@ -47,6 +47,11 @@ def main() -> None:
47
47
  sys.argv.pop(1) # Remove "backup" from argv so backup_cli gets clean arguments
48
48
  return backup_cli()
49
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
+
50
55
  # Check if the command is any package name
51
56
  if second_arg in (): # type: ignore
52
57
  return
@@ -67,11 +72,11 @@ def main() -> None:
67
72
  {CYAN}Usage:{RESET} stouputils <command> [options]
68
73
 
69
74
  {CYAN}Available commands:{RESET}
70
- {GREEN}--version, -v{RESET} [pkg] [-t <depth>]
71
- 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"""