stouputils 1.18.3__tar.gz → 1.18.5__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 (161) hide show
  1. {stouputils-1.18.3 → stouputils-1.18.5}/PKG-INFO +1 -1
  2. {stouputils-1.18.3 → stouputils-1.18.5}/pyproject.toml +1 -1
  3. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/decorators.py +29 -11
  4. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/decorators.pyi +7 -0
  5. {stouputils-1.18.3 → stouputils-1.18.5}/README.md +0 -0
  6. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/__init__.py +0 -0
  7. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/__init__.pyi +0 -0
  8. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/__main__.py +0 -0
  9. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/_deprecated.py +0 -0
  10. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/_deprecated.pyi +0 -0
  11. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/all_doctests.py +0 -0
  12. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/all_doctests.pyi +0 -0
  13. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/__init__.py +0 -0
  14. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/__init__.pyi +0 -0
  15. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/automatic_docs.py +0 -0
  16. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/automatic_docs.pyi +0 -0
  17. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/upscaler/__init__.py +0 -0
  18. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/upscaler/__init__.pyi +0 -0
  19. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/upscaler/config.py +0 -0
  20. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/upscaler/config.pyi +0 -0
  21. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/upscaler/image.py +0 -0
  22. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/upscaler/image.pyi +0 -0
  23. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/upscaler/video.py +0 -0
  24. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/applications/upscaler/video.pyi +0 -0
  25. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/archive.py +0 -0
  26. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/archive.pyi +0 -0
  27. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/backup.py +0 -0
  28. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/backup.pyi +0 -0
  29. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/collections.py +0 -0
  30. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/collections.pyi +0 -0
  31. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/__init__.py +0 -0
  32. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/__init__.pyi +0 -0
  33. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/cd_utils.py +0 -0
  34. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/cd_utils.pyi +0 -0
  35. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/github.py +0 -0
  36. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/github.pyi +0 -0
  37. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/pypi.py +0 -0
  38. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/pypi.pyi +0 -0
  39. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/pyproject.py +0 -0
  40. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/pyproject.pyi +0 -0
  41. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/stubs.py +0 -0
  42. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/continuous_delivery/stubs.pyi +0 -0
  43. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/ctx.py +0 -0
  44. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/ctx.pyi +0 -0
  45. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/config/get.py +0 -0
  46. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/config/set.py +0 -0
  47. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/__init__.py +0 -0
  48. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/auto_contrast.py +0 -0
  49. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/axis_flip.py +0 -0
  50. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/bias_field_correction.py +0 -0
  51. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/binary_threshold.py +0 -0
  52. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/blur.py +0 -0
  53. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/brightness.py +0 -0
  54. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/canny.py +0 -0
  55. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/clahe.py +0 -0
  56. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/common.py +0 -0
  57. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/contrast.py +0 -0
  58. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/curvature_flow_filter.py +0 -0
  59. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/denoise.py +0 -0
  60. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/histogram_equalization.py +0 -0
  61. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/invert.py +0 -0
  62. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/laplacian.py +0 -0
  63. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/median_blur.py +0 -0
  64. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/noise.py +0 -0
  65. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/normalize.py +0 -0
  66. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/random_erase.py +0 -0
  67. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/resize.py +0 -0
  68. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/rotation.py +0 -0
  69. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/salt_pepper.py +0 -0
  70. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/sharpening.py +0 -0
  71. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/shearing.py +0 -0
  72. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/threshold.py +0 -0
  73. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/translation.py +0 -0
  74. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image/zoom.py +0 -0
  75. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image_augmentation.py +0 -0
  76. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/image_preprocess.py +0 -0
  77. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/prosthesis_detection.py +0 -0
  78. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/data_processing/technique.py +0 -0
  79. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/dataset/__init__.py +0 -0
  80. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/dataset/dataset.py +0 -0
  81. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/dataset/dataset_loader.py +0 -0
  82. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/dataset/grouping_strategy.py +0 -0
  83. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/dataset/image_loader.py +0 -0
  84. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/dataset/xy_tuple.py +0 -0
  85. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/metric_dictionnary.py +0 -0
  86. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/metric_utils.py +0 -0
  87. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/mlflow_utils.py +0 -0
  88. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/abstract_model.py +0 -0
  89. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/all.py +0 -0
  90. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/base_keras.py +0 -0
  91. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras/all.py +0 -0
  92. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras/convnext.py +0 -0
  93. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras/densenet.py +0 -0
  94. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras/efficientnet.py +0 -0
  95. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras/mobilenet.py +0 -0
  96. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras/resnet.py +0 -0
  97. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras/squeezenet.py +0 -0
  98. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras/vgg.py +0 -0
  99. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras/xception.py +0 -0
  100. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras_utils/callbacks/__init__.py +0 -0
  101. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +0 -0
  102. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +0 -0
  103. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +0 -0
  104. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +0 -0
  105. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +0 -0
  106. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras_utils/losses/__init__.py +0 -0
  107. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +0 -0
  108. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/keras_utils/visualizations.py +0 -0
  109. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/model_interface.py +0 -0
  110. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/models/sandbox.py +0 -0
  111. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/range_tuple.py +0 -0
  112. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/scripts/augment_dataset.py +0 -0
  113. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/scripts/exhaustive_process.py +0 -0
  114. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/scripts/preprocess_dataset.py +0 -0
  115. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/scripts/routine.py +0 -0
  116. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/data_science/utils.py +0 -0
  117. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/image.py +0 -0
  118. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/image.pyi +0 -0
  119. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/__init__.py +0 -0
  120. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/__init__.pyi +0 -0
  121. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/common.py +0 -0
  122. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/common.pyi +0 -0
  123. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/downloader.py +0 -0
  124. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/downloader.pyi +0 -0
  125. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/linux.py +0 -0
  126. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/linux.pyi +0 -0
  127. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/main.py +0 -0
  128. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/main.pyi +0 -0
  129. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/windows.py +0 -0
  130. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/installer/windows.pyi +0 -0
  131. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/io.py +0 -0
  132. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/io.pyi +0 -0
  133. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/__init__.py +0 -0
  134. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/__init__.pyi +0 -0
  135. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/base.py +0 -0
  136. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/base.pyi +0 -0
  137. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/queue.py +0 -0
  138. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/queue.pyi +0 -0
  139. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/re_entrant.py +0 -0
  140. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/re_entrant.pyi +0 -0
  141. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/redis_fifo.py +0 -0
  142. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/redis_fifo.pyi +0 -0
  143. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/shared.py +0 -0
  144. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/lock/shared.pyi +0 -0
  145. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/parallel/__init__.py +0 -0
  146. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/parallel/__init__.pyi +0 -0
  147. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/parallel/capturer.py +0 -0
  148. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/parallel/capturer.pyi +0 -0
  149. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/parallel/common.py +0 -0
  150. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/parallel/common.pyi +0 -0
  151. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/parallel/multi.py +0 -0
  152. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/parallel/multi.pyi +0 -0
  153. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/parallel/subprocess.py +0 -0
  154. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/parallel/subprocess.pyi +0 -0
  155. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/print.py +0 -0
  156. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/print.pyi +0 -0
  157. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/py.typed +0 -0
  158. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/typing.py +0 -0
  159. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/typing.pyi +0 -0
  160. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/version_pkg.py +0 -0
  161. {stouputils-1.18.3 → stouputils-1.18.5}/stouputils/version_pkg.pyi +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: stouputils
3
- Version: 1.18.3
3
+ Version: 1.18.5
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
@@ -8,7 +8,7 @@ module-root = ""
8
8
 
9
9
  [project]
10
10
  name = "stouputils"
11
- version = "1.18.3"
11
+ version = "1.18.5"
12
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."
13
13
  readme = "README.md"
14
14
  keywords = ["utilities", "tools", "helpers", "development", "python"]
@@ -76,7 +76,7 @@ def measure_time(
76
76
  def wrapper(*args: tuple[Any, ...], **kwargs: dict[str, Any]) -> Any:
77
77
  with MeasureTime(print_func=printer, message=new_msg, perf_counter=perf_counter):
78
78
  return func(*args, **kwargs)
79
- wrapper.__name__ = _get_wrapper_name("stouputils.decorators.measure_time", func)
79
+ _set_wrapper_name(wrapper, _get_wrapper_name("stouputils.decorators.measure_time", func))
80
80
  return wrapper
81
81
 
82
82
  # Handle both @measure_time and @measure_time(printer=..., message=..., perf_counter=..., is_generator=...)
@@ -160,7 +160,7 @@ def handle_error(
160
160
  # Sleep for the specified time, only if the error_log is not ERROR_TRACEBACK (because it's blocking)
161
161
  if sleep_time > 0.0 and error_log != LogLevels.ERROR_TRACEBACK:
162
162
  time.sleep(sleep_time)
163
- wrapper.__name__ = _get_wrapper_name("stouputils.decorators.handle_error", func)
163
+ _set_wrapper_name(wrapper, _get_wrapper_name("stouputils.decorators.handle_error", func))
164
164
  return wrapper
165
165
 
166
166
  # Handle both @handle_error and @handle_error(exceptions=..., message=..., error_log=...)
@@ -277,7 +277,7 @@ def timeout(
277
277
  if result_container:
278
278
  return result_container[0]
279
279
 
280
- wrapper.__name__ = _get_wrapper_name("stouputils.decorators.timeout", func)
280
+ _set_wrapper_name(wrapper, _get_wrapper_name("stouputils.decorators.timeout", func))
281
281
  return wrapper
282
282
 
283
283
  # Handle both @timeout and @timeout(seconds=..., message=...)
@@ -352,7 +352,7 @@ def retry(
352
352
  time.sleep(current_delay)
353
353
  current_delay *= backoff
354
354
 
355
- wrapper.__name__ = _get_wrapper_name("stouputils.decorators.retry", func)
355
+ _set_wrapper_name(wrapper, _get_wrapper_name("stouputils.decorators.retry", func))
356
356
  return wrapper
357
357
 
358
358
  # Handle both @retry and @retry(exceptions=..., max_attempts=..., delay=...)
@@ -427,7 +427,7 @@ def simple_cache(
427
427
  return result
428
428
 
429
429
  # Return the wrapper
430
- wrapper.__name__ = _get_wrapper_name("stouputils.decorators.simple_cache", func)
430
+ _set_wrapper_name(wrapper, _get_wrapper_name("stouputils.decorators.simple_cache", func))
431
431
  return wrapper
432
432
 
433
433
  # Handle both @simple_cache and @simple_cache(method=...)
@@ -477,10 +477,10 @@ def abstract(
477
477
 
478
478
  @wraps(func)
479
479
  @handle_error(exceptions=NotImplementedError, error_log=error_log)
480
- def wrapper(*args: tuple[Any, ...], **kwargs: dict[str, Any]) -> Any:
480
+ def not_implemented_error(*args: tuple[Any, ...], **kwargs: dict[str, Any]) -> Any:
481
481
  raise NotImplementedError(message)
482
- wrapper.__name__ = _get_wrapper_name("stouputils.decorators.abstract", func)
483
- return wrapper
482
+ _set_wrapper_name(not_implemented_error, _get_wrapper_name("stouputils.decorators.abstract", func))
483
+ return not_implemented_error
484
484
 
485
485
  # Handle both @abstract and @abstract(error_log=...)
486
486
  if func is None:
@@ -541,7 +541,7 @@ def deprecated(
541
541
 
542
542
  # Call the original function
543
543
  return func(*args, **kwargs)
544
- wrapper.__name__ = _get_wrapper_name("stouputils.decorators.deprecated", func)
544
+ _set_wrapper_name(wrapper, _get_wrapper_name("stouputils.decorators.deprecated", func))
545
545
  return wrapper
546
546
 
547
547
  # Handle both @deprecated and @deprecated(message=..., error_log=...)
@@ -582,7 +582,7 @@ def silent(
582
582
  # Use Muffle context manager to silence output
583
583
  with Muffle(mute_stderr=mute_stderr):
584
584
  return func(*args, **kwargs)
585
- wrapper.__name__ = _get_wrapper_name("stouputils.decorators.silent", func)
585
+ _set_wrapper_name(wrapper, _get_wrapper_name("stouputils.decorators.silent", func))
586
586
  return wrapper
587
587
 
588
588
  # Handle both @silent and @silent(mute_stderr=...)
@@ -613,7 +613,25 @@ def _get_wrapper_name(decorator_name: str, func: Callable[..., Any]) -> str:
613
613
 
614
614
  # Remove "stouputils.decorators.*" prefix if present
615
615
  if func_name.startswith("stouputils.decorators."):
616
- func_name = ".".join(func_name.split(".")[3:])
616
+ func_name = func_name.split(".", 2)[-1]
617
617
 
618
618
  return f"{decorator_name}@{func_name}"
619
619
 
620
+
621
+ def _set_wrapper_name(wrapper: Callable[..., Any], name: str) -> None:
622
+ """ Set the wrapper function's visible name, qualname and code object name for clearer tracebacks.
623
+
624
+ Args:
625
+ wrapper (Callable[..., Any]): Wrapper function to update
626
+ name (str): New name to set
627
+ """
628
+ # __name__ affects repr and some introspection
629
+ wrapper.__name__ = name
630
+
631
+ # Update the code object's co_name so tracebacks show the new name
632
+ try:
633
+ wrapper.__code__ = wrapper.__code__.replace(co_name=name)
634
+ except Exception:
635
+ # If code.replace isn't available, ignore silently
636
+ pass
637
+
@@ -250,3 +250,10 @@ def _get_wrapper_name(decorator_name: str, func: Callable[..., Any]) -> str:
250
250
  \tReturns:
251
251
  \t\tstr: Combined name for the wrapper function (e.g., "stouputils.decorators.handle_error@function_name")
252
252
  \t'''
253
+ def _set_wrapper_name(wrapper: Callable[..., Any], name: str) -> None:
254
+ """ Set the wrapper function's visible name, qualname and code object name for clearer tracebacks.
255
+
256
+ \tArgs:
257
+ \t\twrapper\t(Callable[..., Any]):\tWrapper function to update
258
+ \t\tname\t(str):\t\t\t\t\tNew name to set
259
+ \t"""
File without changes