stouputils 1.6.5__tar.gz → 1.6.6__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.6.5 → stouputils-1.6.6}/PKG-INFO +1 -1
  2. {stouputils-1.6.5 → stouputils-1.6.6}/pyproject.toml +1 -1
  3. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/io.py +46 -21
  4. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/io.pyi +16 -15
  5. {stouputils-1.6.5 → stouputils-1.6.6}/.gitignore +0 -0
  6. {stouputils-1.6.5 → stouputils-1.6.6}/LICENSE +0 -0
  7. {stouputils-1.6.5 → stouputils-1.6.6}/README.md +0 -0
  8. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/__init__.py +0 -0
  9. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/__init__.pyi +0 -0
  10. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/__main__.py +0 -0
  11. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/all_doctests.py +0 -0
  12. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/all_doctests.pyi +0 -0
  13. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/__init__.py +0 -0
  14. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/__init__.pyi +0 -0
  15. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/automatic_docs.py +0 -0
  16. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/automatic_docs.pyi +0 -0
  17. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/upscaler/__init__.py +0 -0
  18. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/upscaler/__init__.pyi +0 -0
  19. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/upscaler/config.py +0 -0
  20. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/upscaler/config.pyi +0 -0
  21. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/upscaler/image.py +0 -0
  22. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/upscaler/image.pyi +0 -0
  23. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/upscaler/video.py +0 -0
  24. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/applications/upscaler/video.pyi +0 -0
  25. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/archive.py +0 -0
  26. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/archive.pyi +0 -0
  27. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/backup.py +0 -0
  28. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/backup.pyi +0 -0
  29. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/collections.py +0 -0
  30. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/collections.pyi +0 -0
  31. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/__init__.py +0 -0
  32. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/__init__.pyi +0 -0
  33. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/cd_utils.py +0 -0
  34. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/cd_utils.pyi +0 -0
  35. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/github.py +0 -0
  36. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/github.pyi +0 -0
  37. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/pypi.py +0 -0
  38. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/pypi.pyi +0 -0
  39. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/pyproject.py +0 -0
  40. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/pyproject.pyi +0 -0
  41. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/stubs.py +0 -0
  42. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/continuous_delivery/stubs.pyi +0 -0
  43. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/ctx.py +0 -0
  44. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/ctx.pyi +0 -0
  45. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/config/get.py +0 -0
  46. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/config/set.py +0 -0
  47. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/__init__.py +0 -0
  48. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/auto_contrast.py +0 -0
  49. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/axis_flip.py +0 -0
  50. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/bias_field_correction.py +0 -0
  51. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/binary_threshold.py +0 -0
  52. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/blur.py +0 -0
  53. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/brightness.py +0 -0
  54. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/canny.py +0 -0
  55. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/clahe.py +0 -0
  56. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/common.py +0 -0
  57. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/contrast.py +0 -0
  58. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/curvature_flow_filter.py +0 -0
  59. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/denoise.py +0 -0
  60. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/histogram_equalization.py +0 -0
  61. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/invert.py +0 -0
  62. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/laplacian.py +0 -0
  63. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/median_blur.py +0 -0
  64. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/noise.py +0 -0
  65. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/normalize.py +0 -0
  66. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/random_erase.py +0 -0
  67. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/resize.py +0 -0
  68. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/rotation.py +0 -0
  69. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/salt_pepper.py +0 -0
  70. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/sharpening.py +0 -0
  71. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/shearing.py +0 -0
  72. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/threshold.py +0 -0
  73. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/translation.py +0 -0
  74. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image/zoom.py +0 -0
  75. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image_augmentation.py +0 -0
  76. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/image_preprocess.py +0 -0
  77. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/prosthesis_detection.py +0 -0
  78. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/data_processing/technique.py +0 -0
  79. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/dataset/__init__.py +0 -0
  80. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/dataset/dataset.py +0 -0
  81. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/dataset/dataset_loader.py +0 -0
  82. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/dataset/grouping_strategy.py +0 -0
  83. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/dataset/image_loader.py +0 -0
  84. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/dataset/xy_tuple.py +0 -0
  85. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/metric_dictionnary.py +0 -0
  86. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/metric_utils.py +0 -0
  87. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/mlflow_utils.py +0 -0
  88. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/abstract_model.py +0 -0
  89. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/all.py +0 -0
  90. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/base_keras.py +0 -0
  91. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras/all.py +0 -0
  92. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras/convnext.py +0 -0
  93. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras/densenet.py +0 -0
  94. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras/efficientnet.py +0 -0
  95. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras/mobilenet.py +0 -0
  96. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras/resnet.py +0 -0
  97. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras/squeezenet.py +0 -0
  98. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras/vgg.py +0 -0
  99. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras/xception.py +0 -0
  100. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras_utils/callbacks/__init__.py +0 -0
  101. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +0 -0
  102. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +0 -0
  103. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +0 -0
  104. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +0 -0
  105. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +0 -0
  106. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras_utils/losses/__init__.py +0 -0
  107. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +0 -0
  108. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/keras_utils/visualizations.py +0 -0
  109. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/model_interface.py +0 -0
  110. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/models/sandbox.py +0 -0
  111. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/range_tuple.py +0 -0
  112. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/scripts/augment_dataset.py +0 -0
  113. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/scripts/exhaustive_process.py +0 -0
  114. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/scripts/preprocess_dataset.py +0 -0
  115. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/scripts/routine.py +0 -0
  116. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/data_science/utils.py +0 -0
  117. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/decorators.py +0 -0
  118. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/decorators.pyi +0 -0
  119. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/image.py +0 -0
  120. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/image.pyi +0 -0
  121. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/__init__.py +0 -0
  122. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/__init__.pyi +0 -0
  123. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/common.py +0 -0
  124. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/common.pyi +0 -0
  125. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/downloader.py +0 -0
  126. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/downloader.pyi +0 -0
  127. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/linux.py +0 -0
  128. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/linux.pyi +0 -0
  129. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/main.py +0 -0
  130. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/main.pyi +0 -0
  131. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/windows.py +0 -0
  132. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/installer/windows.pyi +0 -0
  133. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/parallel.py +0 -0
  134. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/parallel.pyi +0 -0
  135. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/print.py +0 -0
  136. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/print.pyi +0 -0
  137. {stouputils-1.6.5 → stouputils-1.6.6}/stouputils/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stouputils
3
- Version: 1.6.5
3
+ Version: 1.6.6
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.6.5"
8
+ version = "1.6.6"
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"
@@ -80,16 +80,22 @@ def relative_path(file_path: str, relative_to: str = "") -> str:
80
80
  return file_path or "."
81
81
 
82
82
  # JSON dump with indentation for levels
83
- def super_json_dump(data: Any, file: IO[Any]|None = None, max_level: int = 2, indent: str | int = '\t', suffix: str = "\n") -> str:
83
+ def super_json_dump(
84
+ data: Any,
85
+ file: IO[Any] | str | None = None,
86
+ max_level: int | None = 2,
87
+ indent: str | int = '\t',
88
+ suffix: str = "\n"
89
+ ) -> str:
84
90
  r""" Writes the provided data to a JSON file with a specified indentation depth.
85
91
  For instance, setting max_level to 2 will limit the indentation to 2 levels.
86
92
 
87
93
  Args:
88
- data (Any): The data to dump (usually a dict or a list)
89
- file (IO[Any]): The file to dump the data to, if None, the data is returned as a string
90
- max_level (int): The depth of indentation to stop at (-1 for infinite)
91
- indent (str | int): The indentation character (default: '\t')
92
- suffix (str): The suffix to add at the end of the string (default: '\n')
94
+ data (Any): The data to dump (usually a dict or a list)
95
+ file (IO[Any] | str): The file object or path to dump the data to
96
+ max_level (int | None): The depth of indentation to stop at (-1 for infinite), None will default to 2
97
+ indent (str | int): The indentation character (default: '\t')
98
+ suffix (str): The suffix to add at the end of the string (default: '\n')
93
99
  Returns:
94
100
  str: The content of the file in every case
95
101
 
@@ -102,9 +108,11 @@ def super_json_dump(data: Any, file: IO[Any]|None = None, max_level: int = 2, in
102
108
  >>> super_json_dump({"a": [[1,2,3]], "b": 2}, max_level = 3)
103
109
  '{\n\t"a": [\n\t\t[\n\t\t\t1,\n\t\t\t2,\n\t\t\t3\n\t\t]\n\t],\n\t"b": 2\n}\n'
104
110
  """
105
- # Normalize indentation to string
111
+ # Normalize indentation to string, and handle None values for max_level
106
112
  if isinstance(indent, int):
107
113
  indent = ' ' * indent
114
+ if max_level is None:
115
+ max_level = 2
108
116
 
109
117
  # Dump content with 2-space indent and replace it with the desired indent
110
118
  content: str = orjson.dumps(data, option=orjson.OPT_INDENT_2).decode("utf-8")
@@ -128,7 +136,11 @@ def super_json_dump(data: Any, file: IO[Any]|None = None, max_level: int = 2, in
128
136
  # Final newline and write
129
137
  content += suffix
130
138
  if file:
131
- file.write(content)
139
+ if isinstance(file, str):
140
+ with super_open(file, "w") as f:
141
+ f.write(content)
142
+ else:
143
+ file.write(content)
132
144
  return content
133
145
 
134
146
  # JSON load from file path
@@ -144,17 +156,26 @@ def super_json_load(file_path: str) -> Any:
144
156
  return orjson.loads(f.read())
145
157
 
146
158
  # CSV dump to file
147
- def super_csv_dump(data: Any, file: IO[Any] | None = None, delimiter: str = ',', has_header: bool = True, index: bool = False, *args: Any, **kwargs: Any) -> str:
148
- """ Writes data to a CSV file with customizable options
159
+ def super_csv_dump(
160
+ data: Any,
161
+ file: IO[Any] | str | None = None,
162
+ delimiter: str = ',',
163
+ has_header: bool = True,
164
+ index: bool = False,
165
+ *args: Any,
166
+ **kwargs: Any
167
+ ) -> str:
168
+ """ Writes data to a CSV file with customizable options and returns the CSV content as a string.
149
169
 
150
170
  Args:
151
- data (list[list[Any]] | list[dict[str, Any]] | pd.DataFrame | pl.DataFrame): The data to write, either a list of lists, list of dicts, pandas DataFrame, or Polars DataFrame
152
- file (IO[Any]): The file to dump the data to, if None, the data is returned as a string
153
- delimiter (str): The delimiter to use (default: ',')
154
- has_header (bool): Whether to include headers (default: True, applies to dict and DataFrame data)
155
- index (bool): Whether to include the index (default: False, only applies to pandas DataFrame)
156
- *args: Additional positional arguments to pass to the underlying CSV writer or DataFrame method
157
- **kwargs: Additional keyword arguments to pass to the underlying CSV writer or DataFrame method
171
+ data (list[list[Any]] | list[dict[str, Any]] | pd.DataFrame | pl.DataFrame):
172
+ The data to write, either a list of lists, list of dicts, pandas DataFrame, or Polars DataFrame
173
+ file (IO[Any] | str): The file object or path to dump the data to
174
+ delimiter (str): The delimiter to use (default: ',')
175
+ has_header (bool): Whether to include headers (default: True, applies to dict and DataFrame data)
176
+ index (bool): Whether to include the index (default: False, only applies to pandas DataFrame)
177
+ *args (Any): Additional positional arguments to pass to the underlying CSV writer or DataFrame method
178
+ **kwargs (Any): Additional keyword arguments to pass to the underlying CSV writer or DataFrame method
158
179
  Returns:
159
180
  str: The CSV content as a string
160
181
 
@@ -213,7 +234,11 @@ def super_csv_dump(data: Any, file: IO[Any] | None = None, delimiter: str = ',',
213
234
 
214
235
  content: str = output.getvalue()
215
236
  if file:
216
- file.write(content)
237
+ if isinstance(file, str):
238
+ with super_open(file, "w") as f:
239
+ f.write(content)
240
+ else:
241
+ file.write(content)
217
242
  output.close()
218
243
  return content
219
244
 
@@ -265,14 +290,14 @@ def super_csv_load(file_path: str, delimiter: str = ',', has_header: bool = True
265
290
  if use_polars:
266
291
  import polars as pl # type: ignore
267
292
  if not os.path.exists(file_path):
268
- return pl.DataFrame()
293
+ return pl.DataFrame() # type: ignore
269
294
  kwargs.setdefault("separator", delimiter)
270
295
  kwargs.setdefault("has_header", has_header)
271
- return pl.read_csv(file_path, *args, **kwargs)
296
+ return pl.read_csv(file_path, *args, **kwargs) # type: ignore
272
297
  else:
273
298
  import pandas as pd # type: ignore
274
299
  if not os.path.exists(file_path):
275
- return pd.DataFrame()
300
+ return pd.DataFrame() # type: ignore
276
301
  kwargs.setdefault("sep", delimiter)
277
302
  kwargs.setdefault("header", 0 if has_header else None)
278
303
  return pd.read_csv(file_path, *args, **kwargs) # type: ignore
@@ -35,16 +35,16 @@ def relative_path(file_path: str, relative_to: str = '') -> str:
35
35
  \t\t>>> relative_path("D:/some/random/path/stouputils/io.py", "D:\\\\some\\\\")
36
36
  \t\t\'random/path/stouputils/io.py\'
37
37
  \t'''
38
- def super_json_dump(data: Any, file: IO[Any] | None = None, max_level: int = 2, indent: str | int = '\t', suffix: str = '\n') -> str:
38
+ def super_json_dump(data: Any, file: IO[Any] | str | None = None, max_level: int | None = 2, indent: str | int = '\t', suffix: str = '\n') -> str:
39
39
  ''' Writes the provided data to a JSON file with a specified indentation depth.
40
40
  \tFor instance, setting max_level to 2 will limit the indentation to 2 levels.
41
41
 
42
42
  \tArgs:
43
- \t\tdata (Any): \t\t\t\tThe data to dump (usually a dict or a list)
44
- \t\tfile (IO[Any]): \t\t\tThe file to dump the data to, if None, the data is returned as a string
45
- \t\tmax_level (int):\t\t\tThe depth of indentation to stop at (-1 for infinite)
46
- \t\tindent (str | int):\t\t\tThe indentation character (default: \'\\t\')
47
- \t\tsuffix (str):\t\t\t\tThe suffix to add at the end of the string (default: \'\\n\')
43
+ \t\tdata\t\t(Any): \t\t\t\tThe data to dump (usually a dict or a list)
44
+ \t\tfile\t\t(IO[Any] | str): \tThe file object or path to dump the data to
45
+ \t\tmax_level\t(int | None):\t\tThe depth of indentation to stop at (-1 for infinite), None will default to 2
46
+ \t\tindent\t\t(str | int):\t\tThe indentation character (default: \'\\t\')
47
+ \t\tsuffix\t\t(str):\t\t\t\tThe suffix to add at the end of the string (default: \'\\n\')
48
48
  \tReturns:
49
49
  \t\tstr: The content of the file in every case
50
50
 
@@ -65,17 +65,18 @@ def super_json_load(file_path: str) -> Any:
65
65
  \tReturns:
66
66
  \t\tAny: The content of the JSON file
67
67
  \t"""
68
- def super_csv_dump(data: Any, file: IO[Any] | None = None, delimiter: str = ',', has_header: bool = True, index: bool = False, *args: Any, **kwargs: Any) -> str:
69
- ''' Writes data to a CSV file with customizable options
68
+ def super_csv_dump(data: Any, file: IO[Any] | str | None = None, delimiter: str = ',', has_header: bool = True, index: bool = False, *args: Any, **kwargs: Any) -> str:
69
+ ''' Writes data to a CSV file with customizable options and returns the CSV content as a string.
70
70
 
71
71
  \tArgs:
72
- \t\tdata (list[list[Any]] | list[dict[str, Any]] | pd.DataFrame | pl.DataFrame): The data to write, either a list of lists, list of dicts, pandas DataFrame, or Polars DataFrame
73
- \t\tfile (IO[Any]): The file to dump the data to, if None, the data is returned as a string
74
- \t\tdelimiter (str): The delimiter to use (default: \',\')
75
- \t\thas_header (bool): Whether to include headers (default: True, applies to dict and DataFrame data)
76
- \t\tindex (bool): Whether to include the index (default: False, only applies to pandas DataFrame)
77
- \t\t*args: Additional positional arguments to pass to the underlying CSV writer or DataFrame method
78
- \t\t**kwargs: Additional keyword arguments to pass to the underlying CSV writer or DataFrame method
72
+ \t\tdata\t\t(list[list[Any]] | list[dict[str, Any]] | pd.DataFrame | pl.DataFrame):
73
+ \t\t\t\t\t\tThe data to write, either a list of lists, list of dicts, pandas DataFrame, or Polars DataFrame
74
+ \t\tfile\t\t(IO[Any] | str): The file object or path to dump the data to
75
+ \t\tdelimiter\t(str): The delimiter to use (default: \',\')
76
+ \t\thas_header\t(bool): Whether to include headers (default: True, applies to dict and DataFrame data)
77
+ \t\tindex\t\t(bool): Whether to include the index (default: False, only applies to pandas DataFrame)
78
+ \t\t*args\t\t(Any): Additional positional arguments to pass to the underlying CSV writer or DataFrame method
79
+ \t\t**kwargs\t(Any): Additional keyword arguments to pass to the underlying CSV writer or DataFrame method
79
80
  \tReturns:
80
81
  \t\tstr: The CSV content as a string
81
82
 
File without changes
File without changes
File without changes
File without changes