stouputils 1.7.0__tar.gz → 1.7.1__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 (137) hide show
  1. {stouputils-1.7.0 → stouputils-1.7.1}/PKG-INFO +1 -1
  2. {stouputils-1.7.0 → stouputils-1.7.1}/pyproject.toml +1 -1
  3. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/io.py +45 -33
  4. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/io.pyi +2 -0
  5. {stouputils-1.7.0 → stouputils-1.7.1}/.gitignore +0 -0
  6. {stouputils-1.7.0 → stouputils-1.7.1}/LICENSE +0 -0
  7. {stouputils-1.7.0 → stouputils-1.7.1}/README.md +0 -0
  8. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/__init__.py +0 -0
  9. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/__init__.pyi +0 -0
  10. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/__main__.py +0 -0
  11. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/all_doctests.py +0 -0
  12. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/all_doctests.pyi +0 -0
  13. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/__init__.py +0 -0
  14. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/__init__.pyi +0 -0
  15. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/automatic_docs.py +0 -0
  16. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/automatic_docs.pyi +0 -0
  17. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/upscaler/__init__.py +0 -0
  18. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/upscaler/__init__.pyi +0 -0
  19. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/upscaler/config.py +0 -0
  20. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/upscaler/config.pyi +0 -0
  21. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/upscaler/image.py +0 -0
  22. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/upscaler/image.pyi +0 -0
  23. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/upscaler/video.py +0 -0
  24. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/applications/upscaler/video.pyi +0 -0
  25. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/archive.py +0 -0
  26. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/archive.pyi +0 -0
  27. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/backup.py +0 -0
  28. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/backup.pyi +0 -0
  29. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/collections.py +0 -0
  30. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/collections.pyi +0 -0
  31. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/__init__.py +0 -0
  32. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/__init__.pyi +0 -0
  33. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/cd_utils.py +0 -0
  34. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/cd_utils.pyi +0 -0
  35. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/github.py +0 -0
  36. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/github.pyi +0 -0
  37. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/pypi.py +0 -0
  38. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/pypi.pyi +0 -0
  39. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/pyproject.py +0 -0
  40. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/pyproject.pyi +0 -0
  41. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/stubs.py +0 -0
  42. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/continuous_delivery/stubs.pyi +0 -0
  43. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/ctx.py +0 -0
  44. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/ctx.pyi +0 -0
  45. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/config/get.py +0 -0
  46. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/config/set.py +0 -0
  47. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/__init__.py +0 -0
  48. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/auto_contrast.py +0 -0
  49. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/axis_flip.py +0 -0
  50. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/bias_field_correction.py +0 -0
  51. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/binary_threshold.py +0 -0
  52. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/blur.py +0 -0
  53. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/brightness.py +0 -0
  54. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/canny.py +0 -0
  55. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/clahe.py +0 -0
  56. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/common.py +0 -0
  57. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/contrast.py +0 -0
  58. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/curvature_flow_filter.py +0 -0
  59. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/denoise.py +0 -0
  60. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/histogram_equalization.py +0 -0
  61. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/invert.py +0 -0
  62. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/laplacian.py +0 -0
  63. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/median_blur.py +0 -0
  64. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/noise.py +0 -0
  65. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/normalize.py +0 -0
  66. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/random_erase.py +0 -0
  67. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/resize.py +0 -0
  68. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/rotation.py +0 -0
  69. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/salt_pepper.py +0 -0
  70. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/sharpening.py +0 -0
  71. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/shearing.py +0 -0
  72. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/threshold.py +0 -0
  73. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/translation.py +0 -0
  74. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image/zoom.py +0 -0
  75. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image_augmentation.py +0 -0
  76. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/image_preprocess.py +0 -0
  77. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/prosthesis_detection.py +0 -0
  78. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/data_processing/technique.py +0 -0
  79. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/dataset/__init__.py +0 -0
  80. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/dataset/dataset.py +0 -0
  81. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/dataset/dataset_loader.py +0 -0
  82. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/dataset/grouping_strategy.py +0 -0
  83. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/dataset/image_loader.py +0 -0
  84. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/dataset/xy_tuple.py +0 -0
  85. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/metric_dictionnary.py +0 -0
  86. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/metric_utils.py +0 -0
  87. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/mlflow_utils.py +0 -0
  88. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/abstract_model.py +0 -0
  89. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/all.py +0 -0
  90. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/base_keras.py +0 -0
  91. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras/all.py +0 -0
  92. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras/convnext.py +0 -0
  93. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras/densenet.py +0 -0
  94. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras/efficientnet.py +0 -0
  95. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras/mobilenet.py +0 -0
  96. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras/resnet.py +0 -0
  97. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras/squeezenet.py +0 -0
  98. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras/vgg.py +0 -0
  99. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras/xception.py +0 -0
  100. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras_utils/callbacks/__init__.py +0 -0
  101. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +0 -0
  102. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +0 -0
  103. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +0 -0
  104. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +0 -0
  105. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +0 -0
  106. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras_utils/losses/__init__.py +0 -0
  107. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +0 -0
  108. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/keras_utils/visualizations.py +0 -0
  109. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/model_interface.py +0 -0
  110. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/models/sandbox.py +0 -0
  111. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/range_tuple.py +0 -0
  112. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/scripts/augment_dataset.py +0 -0
  113. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/scripts/exhaustive_process.py +0 -0
  114. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/scripts/preprocess_dataset.py +0 -0
  115. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/scripts/routine.py +0 -0
  116. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/data_science/utils.py +0 -0
  117. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/decorators.py +0 -0
  118. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/decorators.pyi +0 -0
  119. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/image.py +0 -0
  120. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/image.pyi +0 -0
  121. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/__init__.py +0 -0
  122. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/__init__.pyi +0 -0
  123. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/common.py +0 -0
  124. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/common.pyi +0 -0
  125. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/downloader.py +0 -0
  126. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/downloader.pyi +0 -0
  127. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/linux.py +0 -0
  128. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/linux.pyi +0 -0
  129. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/main.py +0 -0
  130. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/main.pyi +0 -0
  131. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/windows.py +0 -0
  132. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/installer/windows.pyi +0 -0
  133. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/parallel.py +0 -0
  134. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/parallel.pyi +0 -0
  135. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/print.py +0 -0
  136. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/print.pyi +0 -0
  137. {stouputils-1.7.0 → stouputils-1.7.1}/stouputils/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stouputils
3
- Version: 1.7.0
3
+ Version: 1.7.1
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
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
 
6
6
  [project]
7
7
  name = "stouputils"
8
- version = "1.7.0"
8
+ version = "1.7.1"
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"
@@ -190,48 +190,58 @@ def super_csv_dump(
190
190
  if isinstance(data, str | bytes | dict):
191
191
  raise ValueError("Data must be a list of lists, list of dicts, pandas DataFrame, or Polars DataFrame")
192
192
  output = StringIO()
193
+ done: bool = False
193
194
 
194
195
  # Handle Polars DataFrame
195
196
  try:
196
- import polars as pl # type: ignore # noqa: F401
197
- copy_kwargs = kwargs.copy()
198
- copy_kwargs.setdefault("separator", delimiter)
199
- copy_kwargs.setdefault("include_header", has_header)
200
- copy_kwargs.setdefault("line_terminator", "\r\n")
201
- data.write_csv(output, *args, **copy_kwargs)
197
+ import polars as pl # type: ignore
198
+ if isinstance(data, pl.DataFrame):
199
+ copy_kwargs = kwargs.copy()
200
+ copy_kwargs.setdefault("separator", delimiter)
201
+ copy_kwargs.setdefault("include_header", has_header)
202
+ data.write_csv(output, *args, **copy_kwargs)
203
+ done = True
202
204
  except Exception:
203
205
  pass
204
206
 
205
207
  # Handle pandas DataFrame
206
- try:
207
- import pandas as pd # type: ignore # noqa: F401
208
- copy_kwargs = kwargs.copy()
209
- copy_kwargs.setdefault("index", index)
210
- copy_kwargs.setdefault("sep", delimiter)
211
- copy_kwargs.setdefault("header", has_header)
212
- copy_kwargs.setdefault("lineterminator", "\r\n")
213
- data.to_csv(output, *args, **copy_kwargs)
214
- except Exception:
215
- pass
208
+ if not done:
209
+ try:
210
+ import pandas as pd # type: ignore
211
+ if isinstance(data, pd.DataFrame):
212
+ copy_kwargs = kwargs.copy()
213
+ copy_kwargs.setdefault("index", index)
214
+ copy_kwargs.setdefault("sep", delimiter)
215
+ copy_kwargs.setdefault("header", has_header)
216
+ data.to_csv(output, *args, **copy_kwargs)
217
+ except Exception:
218
+ pass
219
+
220
+ if not done:
221
+ # Handle list of dicts
222
+ if isinstance(data[0], dict):
223
+ fieldnames = list(data[0].keys()) # type: ignore
224
+ kwargs.setdefault("fieldnames", fieldnames)
225
+ kwargs.setdefault("delimiter", delimiter)
226
+ dict_writer = csv.DictWriter(output, *args, **kwargs)
227
+ if has_header:
228
+ dict_writer.writeheader()
229
+ dict_writer.writerows(data) # type: ignore
230
+ done = True
216
231
 
217
- # Handle list of dicts
218
- if isinstance(data[0], dict):
219
- fieldnames = list(data[0].keys())
220
- kwargs.setdefault("fieldnames", fieldnames)
221
- kwargs.setdefault("delimiter", delimiter)
222
- kwargs.setdefault("lineterminator", "\r\n")
223
- dict_writer = csv.DictWriter(output, *args, **kwargs)
224
- if has_header:
225
- dict_writer.writeheader()
226
- dict_writer.writerows(data) # type: ignore
227
-
228
- # Handle list of lists
229
- else:
230
- kwargs.setdefault("delimiter", delimiter)
231
- kwargs.setdefault("lineterminator", "\r\n")
232
- list_writer = csv.writer(output, *args, **kwargs)
233
- list_writer.writerows(data)
232
+ # Handle list of lists
233
+ else:
234
+ kwargs.setdefault("delimiter", delimiter)
235
+ list_writer = csv.writer(output, *args, **kwargs)
236
+ list_writer.writerows(data) # type: ignore
237
+ done = True
234
238
 
239
+ # If still not done, raise error
240
+ if not done:
241
+ output.close()
242
+ raise ValueError(f"Data must be a list of lists, list of dicts, pandas DataFrame, or Polars DataFrame, got {type(data)} instead")
243
+
244
+ # Get content and write to file if needed
235
245
  content: str = output.getvalue()
236
246
  if file:
237
247
  if isinstance(file, str):
@@ -274,6 +284,8 @@ def super_csv_load(file_path: str, delimiter: str = ',', has_header: bool = True
274
284
  0 1 2 3
275
285
  1 4 5 6
276
286
 
287
+ .. code-block:: console
288
+
277
289
  > super_csv_load("test.csv", as_dataframe=True, use_polars=True)
278
290
  shape: (2, 3)
279
291
  ┌─────┬─────┬─────┐
@@ -119,6 +119,8 @@ def super_csv_load(file_path: str, delimiter: str = ',', has_header: bool = True
119
119
  \t\t\t0 1 2 3
120
120
  \t\t\t1 4 5 6
121
121
 
122
+ \t\t.. code-block:: console
123
+
122
124
  \t\t\t> super_csv_load("test.csv", as_dataframe=True, use_polars=True)
123
125
  \t\t\tshape: (2, 3)
124
126
  \t\t\t┌─────┬─────┬─────┐
File without changes
File without changes
File without changes
File without changes