stouputils 1.3.2__tar.gz → 1.3.3__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 (107) hide show
  1. {stouputils-1.3.2 → stouputils-1.3.3}/PKG-INFO +2 -1
  2. {stouputils-1.3.2 → stouputils-1.3.3}/pyproject.toml +2 -1
  3. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/io.py +18 -47
  4. {stouputils-1.3.2 → stouputils-1.3.3}/.gitignore +0 -0
  5. {stouputils-1.3.2 → stouputils-1.3.3}/LICENSE +0 -0
  6. {stouputils-1.3.2 → stouputils-1.3.3}/README.md +0 -0
  7. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/__init__.py +0 -0
  8. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/all_doctests.py +0 -0
  9. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/applications/__init__.py +0 -0
  10. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/applications/automatic_docs.py +0 -0
  11. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/applications/upscaler/__init__.py +0 -0
  12. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/applications/upscaler/config.py +0 -0
  13. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/applications/upscaler/image.py +0 -0
  14. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/applications/upscaler/video.py +0 -0
  15. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/archive.py +0 -0
  16. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/backup.py +0 -0
  17. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/collections.py +0 -0
  18. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/continuous_delivery/__init__.py +0 -0
  19. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/continuous_delivery/cd_utils.py +0 -0
  20. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/continuous_delivery/github.py +0 -0
  21. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/continuous_delivery/pypi.py +0 -0
  22. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/continuous_delivery/pyproject.py +0 -0
  23. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/ctx.py +0 -0
  24. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/config/get.py +0 -0
  25. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/config/set.py +0 -0
  26. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/__init__.py +0 -0
  27. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/auto_contrast.py +0 -0
  28. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/axis_flip.py +0 -0
  29. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/bias_field_correction.py +0 -0
  30. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/binary_threshold.py +0 -0
  31. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/blur.py +0 -0
  32. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/brightness.py +0 -0
  33. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/canny.py +0 -0
  34. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/clahe.py +0 -0
  35. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/common.py +0 -0
  36. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/contrast.py +0 -0
  37. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/curvature_flow_filter.py +0 -0
  38. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/denoise.py +0 -0
  39. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/histogram_equalization.py +0 -0
  40. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/invert.py +0 -0
  41. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/laplacian.py +0 -0
  42. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/median_blur.py +0 -0
  43. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/noise.py +0 -0
  44. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/normalize.py +0 -0
  45. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/random_erase.py +0 -0
  46. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/resize.py +0 -0
  47. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/rotation.py +0 -0
  48. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/salt_pepper.py +0 -0
  49. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/sharpening.py +0 -0
  50. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/shearing.py +0 -0
  51. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/threshold.py +0 -0
  52. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/translation.py +0 -0
  53. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image/zoom.py +0 -0
  54. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image_augmentation.py +0 -0
  55. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/image_preprocess.py +0 -0
  56. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/prosthesis_detection.py +0 -0
  57. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/data_processing/technique.py +0 -0
  58. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/dataset/__init__.py +0 -0
  59. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/dataset/dataset.py +0 -0
  60. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/dataset/dataset_loader.py +0 -0
  61. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/dataset/grouping_strategy.py +0 -0
  62. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/dataset/image_loader.py +0 -0
  63. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/dataset/xy_tuple.py +0 -0
  64. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/metric_dictionnary.py +0 -0
  65. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/metric_utils.py +0 -0
  66. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/mlflow_utils.py +0 -0
  67. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/abstract_model.py +0 -0
  68. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/all.py +0 -0
  69. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/base_keras.py +0 -0
  70. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras/all.py +0 -0
  71. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras/convnext.py +0 -0
  72. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras/densenet.py +0 -0
  73. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras/efficientnet.py +0 -0
  74. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras/mobilenet.py +0 -0
  75. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras/resnet.py +0 -0
  76. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras/squeezenet.py +0 -0
  77. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras/vgg.py +0 -0
  78. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras/xception.py +0 -0
  79. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras_utils/callbacks/__init__.py +0 -0
  80. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +0 -0
  81. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +0 -0
  82. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +0 -0
  83. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +0 -0
  84. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +0 -0
  85. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras_utils/losses/__init__.py +0 -0
  86. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +0 -0
  87. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/keras_utils/visualizations.py +0 -0
  88. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/model_interface.py +0 -0
  89. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/models/sandbox.py +0 -0
  90. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/range_tuple.py +0 -0
  91. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/scripts/augment_dataset.py +0 -0
  92. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/scripts/exhaustive_process.py +0 -0
  93. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/scripts/preprocess_dataset.py +0 -0
  94. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/scripts/routine.py +0 -0
  95. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/data_science/utils.py +0 -0
  96. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/decorators.py +0 -0
  97. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/dont_look/zip_file_override.py +0 -0
  98. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/image.py +0 -0
  99. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/installer/__init__.py +0 -0
  100. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/installer/common.py +0 -0
  101. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/installer/downloader.py +0 -0
  102. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/installer/linux.py +0 -0
  103. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/installer/main.py +0 -0
  104. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/installer/windows.py +0 -0
  105. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/parallel.py +0 -0
  106. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/print.py +0 -0
  107. {stouputils-1.3.2 → stouputils-1.3.3}/stouputils/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stouputils
3
- Version: 1.3.2
3
+ Version: 1.3.3
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
@@ -14,6 +14,7 @@ Requires-Dist: numpy
14
14
  Requires-Dist: opencv-python>=4.0.0
15
15
  Requires-Dist: orjson>=3.0.0
16
16
  Requires-Dist: pillow>=11.0.0
17
+ Requires-Dist: pyfastcopy>=1.0.0
17
18
  Requires-Dist: pyyaml>=6.0.0
18
19
  Requires-Dist: requests>=2.20.0
19
20
  Requires-Dist: toml>=0.10.0
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
 
6
6
  [project]
7
7
  name = "stouputils"
8
- version = "1.3.2"
8
+ version = "1.3.3"
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"
@@ -23,6 +23,7 @@ dependencies = [
23
23
  "numpy",
24
24
  "opencv-python>=4.0.0",
25
25
  "orjson>=3.0.0",
26
+ "pyfastcopy>=1.0.0",
26
27
  ]
27
28
  [[project.authors]]
28
29
  name = "Stoupy51"
@@ -14,10 +14,12 @@ This module provides utilities for file management.
14
14
 
15
15
  # Imports
16
16
  import os
17
+ import re
17
18
  import shutil
18
19
  from typing import IO, Any
19
20
 
20
21
  import orjson
22
+ import pyfastcopy # type: ignore # noqa: F401
21
23
 
22
24
 
23
25
  # Function that replace the "~" by the user's home directory
@@ -219,58 +221,27 @@ def super_json_dump(data: Any, file: IO[Any]|None = None, max_level: int = 2, in
219
221
  >>> super_json_dump({"a": [[1,2,3]], "b": 2}, max_level = 2)
220
222
  '{\\n\\t"a": [\\n\\t\\t[1,2,3]\\n\\t],\\n\\t"b": 2\\n}\\n'
221
223
  """
222
- # Dump content
224
+ # Normalize indentation to string
225
+ if isinstance(indent, int):
226
+ indent = ' ' * indent
227
+
228
+ # Dump content with 2-space indent and replace it with the desired indent
223
229
  content: str = orjson.dumps(data, option=orjson.OPT_INDENT_2).decode("utf-8")
224
- if indent not in (2, " "):
225
- if isinstance(indent, str):
226
- content = content.replace(" ", indent)
227
- else:
228
- content = content.replace(" ", indent * ' ')
230
+ if indent != " ":
231
+ content = content.replace(" ", indent)
229
232
 
230
- # Fix indent level
233
+ # Limit max depth of indentation
231
234
  if max_level > -1:
232
-
233
- # Character-based indentation
234
- if isinstance(indent, str):
235
- longest_indentation: int = 0
236
- for line in content.split("\n"):
237
- indentation: int = 0
238
- for char in line:
239
- if char == indent:
240
- indentation += 1
241
- else:
242
- break
243
- longest_indentation = max(longest_indentation, indentation)
244
- for i in range(longest_indentation, max_level, -1):
245
- content = content.replace("\n" + indent * i, "")
246
-
247
- # Numeric indentation (spaces)
248
- else:
249
- longest_indentation: int = 0
250
- for line in content.split("\n"):
251
- indentation: int = 0
252
- for char in line:
253
- if char == " ":
254
- indentation += 1
255
- else:
256
- break
257
- longest_indentation = max(longest_indentation, indentation // indent)
258
- for i in range(longest_indentation, max_level, -1):
259
- content = content.replace("\n" + " " * (i * indent), "")
260
-
261
- # To finalyze, fix the last indentations
262
- finishes: tuple[str, str] = ('}', ']')
263
- for char in finishes:
264
- if isinstance(indent, str):
265
- to_replace: str = "\n" + indent * max_level + char
266
- else:
267
- to_replace: str = "\n" + " " * (max_level * indent) + char
268
- content = content.replace(to_replace, char)
269
-
270
- # Write file content and return it
235
+ escape: str = re.escape(indent)
236
+ pattern: re.Pattern[str] = re.compile(
237
+ r"\n" + escape + "{" + str(max_level + 1) + r",}(.*)"
238
+ r"|\n" + escape + "{" + str(max_level) + r"}([}\]])"
239
+ )
240
+ content = pattern.sub(r"\1\2", content)
241
+
242
+ # Final newline and write
271
243
  content += "\n"
272
244
  if file:
273
245
  file.write(content)
274
246
  return content
275
247
 
276
-
File without changes
File without changes
File without changes
File without changes