dycw-utilities 0.149.1__tar.gz → 0.149.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 (214) hide show
  1. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/PKG-INFO +1 -1
  2. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/pyproject.toml +2 -2
  3. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_click.py +5 -0
  4. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_postgres.py +16 -4
  5. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_typed_settings.py +3 -0
  6. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/__init__.py +1 -1
  7. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/click.py +28 -0
  8. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/postgres.py +35 -23
  9. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/typed_settings.py +2 -0
  10. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/.gitignore +0 -0
  11. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/LICENSE +0 -0
  12. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/README.md +0 -0
  13. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/__init__.py +0 -0
  14. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/conftest.py +0 -0
  15. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/__init__.py +0 -0
  16. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_missing/__init__.py +0 -0
  17. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_missing/module.py +0 -0
  18. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_with/__init__.py +0 -0
  19. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_with/outer_1.py +0 -0
  20. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_with/outer_2.py +0 -0
  21. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  22. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  23. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  24. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  25. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_without/__init__.py +0 -0
  26. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_without/module_1.py +0 -0
  27. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/package_without/module_2.py +0 -0
  28. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/standalone.py +0 -0
  29. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/modules/with_imports.py +0 -0
  30. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  31. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  32. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  33. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  34. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  35. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  36. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  37. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  38. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_altair.py +0 -0
  39. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_asyncio.py +0 -0
  40. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_atomicwrites.py +0 -0
  41. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_atools.py +0 -0
  42. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_cachetools.py +0 -0
  43. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_concurrent.py +0 -0
  44. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_contextlib.py +0 -0
  45. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_contextvars.py +0 -0
  46. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_cryptography.py +0 -0
  47. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_cvxpy.py +0 -0
  48. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_dataclasses.py +0 -0
  49. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_enum.py +0 -0
  50. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_errors.py +0 -0
  51. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_eventkit.py +0 -0
  52. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_fastapi.py +0 -0
  53. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_fpdf2.py +0 -0
  54. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_functions.py +0 -0
  55. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_functools.py +0 -0
  56. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_getpass.py +0 -0
  57. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_gzip.py +0 -0
  58. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_hashlib.py +0 -0
  59. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_http.py +0 -0
  60. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_hypothesis.py +0 -0
  61. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_importlib.py +0 -0
  62. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_inflect.py +0 -0
  63. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_ipython.py +0 -0
  64. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_iterables.py +0 -0
  65. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_json.py +0 -0
  66. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_jupyter.py +0 -0
  67. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_libcst.py +0 -0
  68. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_lightweight_charts.py +0 -0
  69. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_logging.py +0 -0
  70. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_math.py +0 -0
  71. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_memory_profiler.py +0 -0
  72. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_modules.py +0 -0
  73. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_more_itertools.py +0 -0
  74. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_numpy.py +0 -0
  75. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_objects/__init__.py +0 -0
  76. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_objects/objects.py +0 -0
  77. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_operator.py +0 -0
  78. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_optuna.py +0 -0
  79. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_orjson.py +0 -0
  80. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_os.py +0 -0
  81. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_parse.py +0 -0
  82. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_pathlib.py +0 -0
  83. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_period.py +0 -0
  84. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_pickle.py +0 -0
  85. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_platform.py +0 -0
  86. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_polars.py +0 -0
  87. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_polars_ols.py +0 -0
  88. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_pottery.py +0 -0
  89. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_pqdm.py +0 -0
  90. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_psutil.py +0 -0
  91. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_pyinstrument.py +0 -0
  92. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_pytest.py +0 -0
  93. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_pytest_randomly.py +0 -0
  94. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_pytest_regressions.py +0 -0
  95. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_random.py +0 -0
  96. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_re.py +0 -0
  97. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_redis.py +0 -0
  98. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_reprlib.py +0 -0
  99. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_scipy.py +0 -0
  100. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_sentinel.py +0 -0
  101. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_shelve.py +0 -0
  102. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_slack_sdk.py +0 -0
  103. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_socket.py +0 -0
  104. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_sqlalchemy.py +0 -0
  105. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_sqlalchemy_polars.py +0 -0
  106. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_statsmodels.py +0 -0
  107. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_string.py +0 -0
  108. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_tempfile.py +0 -0
  109. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_text.py +0 -0
  110. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_threading.py +0 -0
  111. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_timer.py +0 -0
  112. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_traceback.py +0 -0
  113. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_types.py +0 -0
  114. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_typing.py +0 -0
  115. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_typing_funcs/__init__.py +0 -0
  116. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_typing_funcs/no_future.py +0 -0
  117. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_typing_funcs/with_future.py +0 -0
  118. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_tzdata.py +0 -0
  119. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_tzlocal.py +0 -0
  120. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_uuid.py +0 -0
  121. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_version.py +0 -0
  122. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_warnings.py +0 -0
  123. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_whenever.py +0 -0
  124. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_yield_access/__init__.py +0 -0
  125. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_yield_access/script.py +0 -0
  126. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_yield_access/script.sh +0 -0
  127. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_zipfile.py +0 -0
  128. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/tests/test_zoneinfo.py +0 -0
  129. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/altair.py +0 -0
  130. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/asyncio.py +0 -0
  131. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/atomicwrites.py +0 -0
  132. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/atools.py +0 -0
  133. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/cachetools.py +0 -0
  134. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/concurrent.py +0 -0
  135. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/contextlib.py +0 -0
  136. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/contextvars.py +0 -0
  137. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/cryptography.py +0 -0
  138. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/cvxpy.py +0 -0
  139. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/dataclasses.py +0 -0
  140. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/enum.py +0 -0
  141. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/errors.py +0 -0
  142. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/eventkit.py +0 -0
  143. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/fastapi.py +0 -0
  144. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/fpdf2.py +0 -0
  145. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/functions.py +0 -0
  146. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/functools.py +0 -0
  147. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/getpass.py +0 -0
  148. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/gzip.py +0 -0
  149. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/hashlib.py +0 -0
  150. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/http.py +0 -0
  151. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/hypothesis.py +0 -0
  152. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/importlib.py +0 -0
  153. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/inflect.py +0 -0
  154. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/ipython.py +0 -0
  155. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/iterables.py +0 -0
  156. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/json.py +0 -0
  157. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/jupyter.py +0 -0
  158. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/libcst.py +0 -0
  159. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/lightweight_charts.py +0 -0
  160. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/logging.py +0 -0
  161. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/math.py +0 -0
  162. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/memory_profiler.py +0 -0
  163. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/modules.py +0 -0
  164. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/more_itertools.py +0 -0
  165. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/numpy.py +0 -0
  166. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/operator.py +0 -0
  167. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/optuna.py +0 -0
  168. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/orjson.py +0 -0
  169. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/os.py +0 -0
  170. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/parse.py +0 -0
  171. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/pathlib.py +0 -0
  172. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/period.py +0 -0
  173. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/pickle.py +0 -0
  174. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/platform.py +0 -0
  175. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/polars.py +0 -0
  176. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/polars_ols.py +0 -0
  177. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/pottery.py +0 -0
  178. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/pqdm.py +0 -0
  179. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/psutil.py +0 -0
  180. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/py.typed +0 -0
  181. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/pyinstrument.py +0 -0
  182. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/pytest.py +0 -0
  183. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/pytest_plugins/__init__.py +0 -0
  184. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
  185. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
  186. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/pytest_regressions.py +0 -0
  187. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/random.py +0 -0
  188. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/re.py +0 -0
  189. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/redis.py +0 -0
  190. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/reprlib.py +0 -0
  191. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/scipy.py +0 -0
  192. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/sentinel.py +0 -0
  193. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/shelve.py +0 -0
  194. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/slack_sdk.py +0 -0
  195. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/socket.py +0 -0
  196. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/sqlalchemy.py +0 -0
  197. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/sqlalchemy_polars.py +0 -0
  198. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/statsmodels.py +0 -0
  199. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/string.py +0 -0
  200. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/tempfile.py +0 -0
  201. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/text.py +0 -0
  202. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/threading.py +0 -0
  203. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/timer.py +0 -0
  204. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/traceback.py +0 -0
  205. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/types.py +0 -0
  206. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/typing.py +0 -0
  207. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/tzdata.py +0 -0
  208. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/tzlocal.py +0 -0
  209. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/uuid.py +0 -0
  210. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/version.py +0 -0
  211. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/warnings.py +0 -0
  212. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/whenever.py +0 -0
  213. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/zipfile.py +0 -0
  214. {dycw_utilities-0.149.1 → dycw_utilities-0.149.3}/src/utilities/zoneinfo.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.149.1
3
+ Version: 0.149.3
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -102,7 +102,7 @@ dependencies = [
102
102
  name = "dycw-utilities"
103
103
  readme = "README.md"
104
104
  requires-python = ">= 3.12"
105
- version = "0.149.1"
105
+ version = "0.149.3"
106
106
 
107
107
  [project.entry-points.pytest11]
108
108
  pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
@@ -135,7 +135,7 @@ test = [
135
135
  # bump-my-version
136
136
  [tool.bumpversion]
137
137
  allow_dirty = true
138
- current_version = "0.149.1"
138
+ current_version = "0.149.3"
139
139
 
140
140
  [[tool.bumpversion.files]]
141
141
  filename = "src/utilities/__init__.py"
@@ -20,11 +20,13 @@ from hypothesis.strategies import (
20
20
  ip_addresses,
21
21
  lists,
22
22
  sampled_from,
23
+ uuids,
23
24
  )
24
25
  from pytest import mark, param
25
26
 
26
27
  from utilities.click import (
27
28
  CONTEXT_SETTINGS_HELP_OPTION_NAMES,
29
+ UUID,
28
30
  Date,
29
31
  DateDelta,
30
32
  DateTimeDelta,
@@ -320,6 +322,9 @@ class TestParameters:
320
322
  serialize=whenever.TimeDelta.format_common_iso,
321
323
  failable=True,
322
324
  ),
325
+ _Case(
326
+ param=UUID(), name="uuid", strategy=uuids(), serialize=str, failable=True
327
+ ),
323
328
  _Case(
324
329
  param=YearMonth(),
325
330
  name="year-month",
@@ -61,7 +61,10 @@ class TestPGDump:
61
61
  @given(
62
62
  url=urls(),
63
63
  path=temp_paths(),
64
+ format_=sampled_from(get_literal_elements(_PGDumpFormat)),
64
65
  jobs=integers(min_value=0) | none(),
66
+ data_only=booleans(),
67
+ clean=booleans(),
65
68
  schemas=lists(text_ascii(min_size=1)) | none(),
66
69
  schemas_exc=lists(text_ascii(min_size=1)) | none(),
67
70
  tables=tables() | none(),
@@ -75,7 +78,10 @@ class TestPGDump:
75
78
  *,
76
79
  url: URL,
77
80
  path: Path,
81
+ format_: _PGDumpFormat,
78
82
  jobs: int | None,
83
+ data_only: bool,
84
+ clean: bool,
79
85
  schemas: list[str] | None,
80
86
  schemas_exc: list[str] | None,
81
87
  tables: list[Table | str] | None,
@@ -87,11 +93,14 @@ class TestPGDump:
87
93
  _ = _build_pg_dump(
88
94
  url,
89
95
  path,
96
+ format_=format_,
90
97
  jobs=jobs,
91
- schemas=schemas,
92
- schemas_exc=schemas_exc,
93
- tables=tables,
94
- tables_exc=tables_exc,
98
+ data_only=data_only,
99
+ clean=clean,
100
+ schema=schemas,
101
+ schema_exc=schemas_exc,
102
+ table=tables,
103
+ table_exc=tables_exc,
95
104
  inserts=inserts,
96
105
  on_conflict_do_nothing=on_conflict_do_nothing,
97
106
  docker=docker,
@@ -114,6 +123,7 @@ class TestRestore:
114
123
  psql=booleans(),
115
124
  database=text_ascii(min_size=1) | none(),
116
125
  data_only=booleans(),
126
+ clean=booleans(),
117
127
  jobs=integers(min_value=0) | none(),
118
128
  schemas=lists(text_ascii(min_size=1)) | none(),
119
129
  schemas_exc=lists(text_ascii(min_size=1)) | none(),
@@ -128,6 +138,7 @@ class TestRestore:
128
138
  psql: bool,
129
139
  database: str | None,
130
140
  data_only: bool,
141
+ clean: bool,
131
142
  jobs: int | None,
132
143
  schemas: list[str] | None,
133
144
  schemas_exc: list[str] | None,
@@ -140,6 +151,7 @@ class TestRestore:
140
151
  psql=psql,
141
152
  database=database,
142
153
  data_only=data_only,
154
+ clean=clean,
143
155
  jobs=jobs,
144
156
  schemas=schemas,
145
157
  schemas_exc=schemas_exc,
@@ -3,6 +3,7 @@ from dataclasses import dataclass
3
3
  from ipaddress import IPv4Address, IPv6Address
4
4
  from pathlib import Path
5
5
  from typing import Any, ClassVar, assert_never
6
+ from uuid import UUID
6
7
 
7
8
  import typed_settings
8
9
  from hypothesis import given
@@ -13,6 +14,7 @@ from hypothesis.strategies import (
13
14
  data,
14
15
  ip_addresses,
15
16
  tuples,
17
+ uuids,
16
18
  )
17
19
  from pytest import mark, param, raises
18
20
  from typed_settings import EnvLoader, FileLoader, TomlFormat
@@ -87,6 +89,7 @@ class TestExtendedTSConverter:
87
89
  _Case(
88
90
  cls=TimeDelta, strategy=time_deltas(), serialize=TimeDelta.format_common_iso
89
91
  ),
92
+ _Case(cls=UUID, strategy=uuids(), serialize=str),
90
93
  _Case(
91
94
  cls=YearMonth, strategy=year_months(), serialize=YearMonth.format_common_iso
92
95
  ),
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.149.1"
3
+ __version__ = "0.149.3"
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
  import enum
4
4
  import ipaddress
5
5
  import pathlib
6
+ import uuid
6
7
  from typing import TYPE_CHECKING, TypedDict, assert_never, override
7
8
 
8
9
  import click
@@ -329,6 +330,32 @@ class TimeDelta(ParamType):
329
330
  assert_never(never)
330
331
 
331
332
 
333
+ class UUID(ParamType):
334
+ """A UUID-valued parameter."""
335
+
336
+ name = "uuid"
337
+
338
+ @override
339
+ def __repr__(self) -> str:
340
+ return self.name.upper()
341
+
342
+ @override
343
+ def convert(
344
+ self, value: uuid.UUID | str, param: Parameter | None, ctx: Context | None
345
+ ) -> uuid.UUID:
346
+ """Convert a value into the `UUID` type."""
347
+ match value:
348
+ case uuid.UUID():
349
+ return value
350
+ case str():
351
+ try:
352
+ return uuid.UUID(value)
353
+ except ValueError as error:
354
+ self.fail(str(error), param, ctx)
355
+ case _ as never:
356
+ assert_never(never)
357
+
358
+
332
359
  class YearMonth(ParamType):
333
360
  """A year-month parameter."""
334
361
 
@@ -561,6 +588,7 @@ def _make_metavar(param: Parameter, desc: str, /) -> str:
561
588
 
562
589
  __all__ = [
563
590
  "CONTEXT_SETTINGS_HELP_OPTION_NAMES",
591
+ "UUID",
564
592
  "Date",
565
593
  "DateDelta",
566
594
  "DateTimeDelta",
@@ -34,10 +34,12 @@ async def pg_dump(
34
34
  *,
35
35
  format_: _PGDumpFormat = "plain",
36
36
  jobs: int | None = None,
37
- schemas: MaybeListStr | None = None,
38
- schemas_exc: MaybeListStr | None = None,
39
- tables: MaybeSequence[TableOrORMInstOrClass | str] | None = None,
40
- tables_exc: MaybeSequence[TableOrORMInstOrClass | str] | None = None,
37
+ data_only: bool = False,
38
+ clean: bool = False,
39
+ schema: MaybeListStr | None = None,
40
+ schema_exc: MaybeListStr | None = None,
41
+ table: MaybeSequence[TableOrORMInstOrClass | str] | None = None,
42
+ table_exc: MaybeSequence[TableOrORMInstOrClass | str] | None = None,
41
43
  inserts: bool = False,
42
44
  on_conflict_do_nothing: bool = False,
43
45
  docker: str | None = None,
@@ -52,10 +54,12 @@ async def pg_dump(
52
54
  path,
53
55
  format_=format_,
54
56
  jobs=jobs,
55
- schemas=schemas,
56
- schemas_exc=schemas_exc,
57
- tables=tables,
58
- tables_exc=tables_exc,
57
+ data_only=data_only,
58
+ clean=clean,
59
+ schema=schema,
60
+ schema_exc=schema_exc,
61
+ table=table,
62
+ table_exc=table_exc,
59
63
  inserts=inserts,
60
64
  on_conflict_do_nothing=on_conflict_do_nothing,
61
65
  docker=docker,
@@ -98,10 +102,12 @@ def _build_pg_dump(
98
102
  *,
99
103
  format_: _PGDumpFormat = "plain",
100
104
  jobs: int | None = None,
101
- schemas: MaybeListStr | None = None,
102
- schemas_exc: MaybeListStr | None = None,
103
- tables: MaybeSequence[TableOrORMInstOrClass | str] | None = None,
104
- tables_exc: MaybeSequence[TableOrORMInstOrClass | str] | None = None,
105
+ data_only: bool = False,
106
+ clean: bool = False,
107
+ schema: MaybeListStr | None = None,
108
+ schema_exc: MaybeListStr | None = None,
109
+ table: MaybeSequence[TableOrORMInstOrClass | str] | None = None,
110
+ table_exc: MaybeSequence[TableOrORMInstOrClass | str] | None = None,
105
111
  inserts: bool = False,
106
112
  on_conflict_do_nothing: bool = False,
107
113
  docker: str | None = None,
@@ -117,10 +123,9 @@ def _build_pg_dump(
117
123
  "--verbose",
118
124
  # output options
119
125
  "--large-objects",
120
- "--clean",
126
+ "--create",
121
127
  "--no-owner",
122
128
  "--no-privileges",
123
- "--if-exists",
124
129
  # connection options
125
130
  f"--host={host}",
126
131
  f"--port={port}",
@@ -128,15 +133,19 @@ def _build_pg_dump(
128
133
  ]
129
134
  if (format_ == "directory") and (jobs is not None):
130
135
  parts.append(f"--jobs={jobs}")
131
- if schemas is not None:
132
- parts.extend([f"--schema={s}" for s in always_iterable(schemas)])
133
- if schemas_exc is not None:
134
- parts.extend([f"--exclude-schema={s}" for s in always_iterable(schemas_exc)])
135
- if tables is not None:
136
- parts.extend([f"--table={_get_table_name(t)}" for t in always_iterable(tables)])
137
- if tables_exc is not None:
136
+ if data_only:
137
+ parts.append("--data-only")
138
+ if clean:
139
+ parts.extend(["--clean", "--if-exists"])
140
+ if schema is not None:
141
+ parts.extend([f"--schema={s}" for s in always_iterable(schema)])
142
+ if schema_exc is not None:
143
+ parts.extend([f"--exclude-schema={s}" for s in always_iterable(schema_exc)])
144
+ if table is not None:
145
+ parts.extend([f"--table={_get_table_name(t)}" for t in always_iterable(table)])
146
+ if table_exc is not None:
138
147
  parts.extend([
139
- f"--exclude-table={_get_table_name(t)}" for t in always_iterable(tables_exc)
148
+ f"--exclude-table={_get_table_name(t)}" for t in always_iterable(table_exc)
140
149
  ])
141
150
  if inserts:
142
151
  parts.append("--inserts")
@@ -239,6 +248,7 @@ def _build_pg_restore_or_psql(
239
248
  psql: bool = False,
240
249
  database: str | None = None,
241
250
  data_only: bool = False,
251
+ clean: bool = False,
242
252
  jobs: int | None = None,
243
253
  schemas: MaybeListStr | None = None,
244
254
  schemas_exc: MaybeListStr | None = None,
@@ -253,6 +263,7 @@ def _build_pg_restore_or_psql(
253
263
  path,
254
264
  database=database,
255
265
  data_only=data_only,
266
+ clean=clean,
256
267
  jobs=jobs,
257
268
  schemas=schemas,
258
269
  schemas_exc=schemas_exc,
@@ -268,6 +279,7 @@ def _build_pg_restore(
268
279
  *,
269
280
  database: str | None = None,
270
281
  data_only: bool = False,
282
+ clean: bool = False,
271
283
  jobs: int | None = None,
272
284
  schemas: MaybeListStr | None = None,
273
285
  schemas_exc: MaybeListStr | None = None,
@@ -293,7 +305,7 @@ def _build_pg_restore(
293
305
  ]
294
306
  if data_only:
295
307
  parts.append("--data-only")
296
- else:
308
+ if clean:
297
309
  parts.extend(["--clean", "--if-exists"])
298
310
  if jobs is not None:
299
311
  parts.append(f"--jobs={jobs}")
@@ -7,6 +7,7 @@ from os import environ
7
7
  from pathlib import Path
8
8
  from re import search
9
9
  from typing import TYPE_CHECKING, Any, assert_never, override
10
+ from uuid import UUID
10
11
 
11
12
  import typed_settings
12
13
  from typed_settings import EnvLoader, FileLoader, find
@@ -62,6 +63,7 @@ class ExtendedTSConverter(TSConverter):
62
63
  (PlainDateTime, PlainDateTime.parse_common_iso),
63
64
  (Time, Time.parse_common_iso),
64
65
  (TimeDelta, TimeDelta.parse_common_iso),
66
+ (UUID, UUID),
65
67
  (YearMonth, YearMonth.parse_common_iso),
66
68
  (ZonedDateTime, ZonedDateTime.parse_common_iso),
67
69
  ]