dycw-utilities 0.150.13__tar.gz → 0.150.14__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 (216) hide show
  1. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/PKG-INFO +1 -1
  2. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/pyproject.toml +2 -2
  3. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_sqlalchemy.py +4 -1
  4. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/__init__.py +1 -1
  5. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/sqlalchemy.py +22 -15
  6. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/.gitignore +0 -0
  7. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/LICENSE +0 -0
  8. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/README.md +0 -0
  9. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/__init__.py +0 -0
  10. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/conftest.py +0 -0
  11. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/__init__.py +0 -0
  12. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_missing/__init__.py +0 -0
  13. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_missing/module.py +0 -0
  14. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_with/__init__.py +0 -0
  15. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_with/outer_1.py +0 -0
  16. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_with/outer_2.py +0 -0
  17. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  18. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  19. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  20. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  21. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_without/__init__.py +0 -0
  22. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_without/module_1.py +0 -0
  23. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/package_without/module_2.py +0 -0
  24. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/standalone.py +0 -0
  25. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/modules/with_imports.py +0 -0
  26. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  27. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  28. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  29. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  30. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  31. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  32. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  33. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  34. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_altair.py +0 -0
  35. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_asyncio.py +0 -0
  36. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_atomicwrites.py +0 -0
  37. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_atools.py +0 -0
  38. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_cachetools.py +0 -0
  39. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_click.py +0 -0
  40. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_concurrent.py +0 -0
  41. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_contextlib.py +0 -0
  42. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_contextvars.py +0 -0
  43. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_cryptography.py +0 -0
  44. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_cvxpy.py +0 -0
  45. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_dataclasses.py +0 -0
  46. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_dnspython.py +0 -0
  47. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_enum.py +0 -0
  48. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_errors.py +0 -0
  49. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_eventkit.py +0 -0
  50. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_fastapi.py +0 -0
  51. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_fpdf2.py +0 -0
  52. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_functions.py +0 -0
  53. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_functools.py +0 -0
  54. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_getpass.py +0 -0
  55. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_gzip.py +0 -0
  56. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_hashlib.py +0 -0
  57. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_http.py +0 -0
  58. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_hypothesis.py +0 -0
  59. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_importlib.py +0 -0
  60. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_inflect.py +0 -0
  61. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_ipython.py +0 -0
  62. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_iterables.py +0 -0
  63. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_json.py +0 -0
  64. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_jupyter.py +0 -0
  65. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_libcst.py +0 -0
  66. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_lightweight_charts.py +0 -0
  67. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_logging.py +0 -0
  68. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_math.py +0 -0
  69. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_memory_profiler.py +0 -0
  70. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_modules.py +0 -0
  71. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_more_itertools.py +0 -0
  72. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_numpy.py +0 -0
  73. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_objects/__init__.py +0 -0
  74. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_objects/objects.py +0 -0
  75. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_operator.py +0 -0
  76. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_optuna.py +0 -0
  77. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_orjson.py +0 -0
  78. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_os.py +0 -0
  79. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_parse.py +0 -0
  80. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_pathlib.py +0 -0
  81. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_period.py +0 -0
  82. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_pickle.py +0 -0
  83. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_platform.py +0 -0
  84. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_polars.py +0 -0
  85. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_polars_ols.py +0 -0
  86. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_postgres.py +0 -0
  87. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_pottery.py +0 -0
  88. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_pqdm.py +0 -0
  89. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_psutil.py +0 -0
  90. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_pyinstrument.py +0 -0
  91. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_pytest.py +0 -0
  92. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_pytest_randomly.py +0 -0
  93. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_pytest_regressions.py +0 -0
  94. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_random.py +0 -0
  95. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_re.py +0 -0
  96. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_redis.py +0 -0
  97. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_reprlib.py +0 -0
  98. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_scipy.py +0 -0
  99. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_sentinel.py +0 -0
  100. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_shelve.py +0 -0
  101. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_slack_sdk.py +0 -0
  102. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_socket.py +0 -0
  103. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_sqlalchemy_polars.py +0 -0
  104. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_statsmodels.py +0 -0
  105. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_string.py +0 -0
  106. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_tempfile.py +0 -0
  107. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_text.py +0 -0
  108. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_threading.py +0 -0
  109. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_timer.py +0 -0
  110. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_traceback.py +0 -0
  111. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_typed_settings.py +0 -0
  112. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_types.py +0 -0
  113. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_typing.py +0 -0
  114. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_typing_funcs/__init__.py +0 -0
  115. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_typing_funcs/no_future.py +0 -0
  116. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_typing_funcs/with_future.py +0 -0
  117. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_tzdata.py +0 -0
  118. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_tzlocal.py +0 -0
  119. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_uuid.py +0 -0
  120. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_version.py +0 -0
  121. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_warnings.py +0 -0
  122. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_whenever.py +0 -0
  123. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_yield_access/__init__.py +0 -0
  124. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_yield_access/script.py +0 -0
  125. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_yield_access/script.sh +0 -0
  126. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_zipfile.py +0 -0
  127. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/tests/test_zoneinfo.py +0 -0
  128. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/altair.py +0 -0
  129. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/asyncio.py +0 -0
  130. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/atomicwrites.py +0 -0
  131. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/atools.py +0 -0
  132. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/cachetools.py +0 -0
  133. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/click.py +0 -0
  134. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/concurrent.py +0 -0
  135. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/contextlib.py +0 -0
  136. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/contextvars.py +0 -0
  137. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/cryptography.py +0 -0
  138. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/cvxpy.py +0 -0
  139. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/dataclasses.py +0 -0
  140. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/dnspython.py +0 -0
  141. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/enum.py +0 -0
  142. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/errors.py +0 -0
  143. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/eventkit.py +0 -0
  144. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/fastapi.py +0 -0
  145. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/fpdf2.py +0 -0
  146. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/functions.py +0 -0
  147. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/functools.py +0 -0
  148. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/getpass.py +0 -0
  149. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/gzip.py +0 -0
  150. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/hashlib.py +0 -0
  151. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/http.py +0 -0
  152. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/hypothesis.py +0 -0
  153. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/importlib.py +0 -0
  154. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/inflect.py +0 -0
  155. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/ipython.py +0 -0
  156. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/iterables.py +0 -0
  157. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/json.py +0 -0
  158. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/jupyter.py +0 -0
  159. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/libcst.py +0 -0
  160. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/lightweight_charts.py +0 -0
  161. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/logging.py +0 -0
  162. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/math.py +0 -0
  163. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/memory_profiler.py +0 -0
  164. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/modules.py +0 -0
  165. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/more_itertools.py +0 -0
  166. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/numpy.py +0 -0
  167. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/operator.py +0 -0
  168. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/optuna.py +0 -0
  169. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/orjson.py +0 -0
  170. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/os.py +0 -0
  171. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/parse.py +0 -0
  172. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/pathlib.py +0 -0
  173. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/period.py +0 -0
  174. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/pickle.py +0 -0
  175. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/platform.py +0 -0
  176. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/polars.py +0 -0
  177. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/polars_ols.py +0 -0
  178. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/postgres.py +0 -0
  179. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/pottery.py +0 -0
  180. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/pqdm.py +0 -0
  181. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/psutil.py +0 -0
  182. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/py.typed +0 -0
  183. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/pyinstrument.py +0 -0
  184. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/pytest.py +0 -0
  185. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/pytest_plugins/__init__.py +0 -0
  186. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
  187. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
  188. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/pytest_regressions.py +0 -0
  189. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/random.py +0 -0
  190. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/re.py +0 -0
  191. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/redis.py +0 -0
  192. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/reprlib.py +0 -0
  193. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/scipy.py +0 -0
  194. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/sentinel.py +0 -0
  195. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/shelve.py +0 -0
  196. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/slack_sdk.py +0 -0
  197. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/socket.py +0 -0
  198. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/sqlalchemy_polars.py +0 -0
  199. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/statsmodels.py +0 -0
  200. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/string.py +0 -0
  201. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/tempfile.py +0 -0
  202. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/text.py +0 -0
  203. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/threading.py +0 -0
  204. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/timer.py +0 -0
  205. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/traceback.py +0 -0
  206. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/typed_settings.py +0 -0
  207. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/types.py +0 -0
  208. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/typing.py +0 -0
  209. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/tzdata.py +0 -0
  210. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/tzlocal.py +0 -0
  211. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/uuid.py +0 -0
  212. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/version.py +0 -0
  213. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/warnings.py +0 -0
  214. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/whenever.py +0 -0
  215. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/zipfile.py +0 -0
  216. {dycw_utilities-0.150.13 → dycw_utilities-0.150.14}/src/utilities/zoneinfo.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.150.13
3
+ Version: 0.150.14
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -232,7 +232,7 @@ dependencies = [
232
232
  name = "dycw-utilities"
233
233
  readme = "README.md"
234
234
  requires-python = ">= 3.12"
235
- version = "0.150.13"
235
+ version = "0.150.14"
236
236
 
237
237
  [project.entry-points.pytest11]
238
238
  pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
@@ -265,7 +265,7 @@ test = [
265
265
  # bump-my-version
266
266
  [tool.bumpversion]
267
267
  allow_dirty = true
268
- current_version = "0.150.13"
268
+ current_version = "0.150.14"
269
269
 
270
270
  [[tool.bumpversion.files]]
271
271
  filename = "src/utilities/__init__.py"
@@ -94,7 +94,7 @@ from utilities.sqlalchemy import (
94
94
  )
95
95
  from utilities.text import strip_and_dedent
96
96
  from utilities.typing import get_args, get_literal_elements
97
- from utilities.whenever import format_compact, get_now, to_local_plain
97
+ from utilities.whenever import MILLISECOND, format_compact, get_now, to_local_plain
98
98
 
99
99
  if TYPE_CHECKING:
100
100
  from collections.abc import Callable, Iterator
@@ -144,6 +144,9 @@ class TestCheckConnect:
144
144
  async def test_async(self, *, test_async_engine: AsyncEngine) -> None:
145
145
  assert await check_connect_async(test_async_engine)
146
146
 
147
+ async def test_async_timeout(self, *, test_async_engine: AsyncEngine) -> None:
148
+ assert not await check_connect_async(test_async_engine, timeout=MILLISECOND)
149
+
147
150
 
148
151
  class TestCheckEngine:
149
152
  async def test_main(self, *, test_async_engine: AsyncEngine) -> None:
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.150.13"
3
+ __version__ = "0.150.14"
@@ -97,12 +97,17 @@ from utilities.iterables import (
97
97
  )
98
98
  from utilities.reprlib import get_repr
99
99
  from utilities.text import secret_str, snake_case
100
- from utilities.types import MaybeIterable, MaybeType, StrMapping, TupleOrStrMapping
100
+ from utilities.types import (
101
+ Delta,
102
+ MaybeIterable,
103
+ MaybeType,
104
+ StrMapping,
105
+ TupleOrStrMapping,
106
+ )
101
107
 
102
108
  if TYPE_CHECKING:
103
109
  from enum import Enum, StrEnum
104
110
 
105
- from whenever import TimeDelta
106
111
 
107
112
  type EngineOrConnectionOrAsync = Engine | Connection | AsyncEngine | AsyncConnection
108
113
  type Dialect = Literal["mssql", "mysql", "oracle", "postgresql", "sqlite"]
@@ -127,12 +132,14 @@ def check_connect(engine: Engine, /) -> bool:
127
132
  return False
128
133
 
129
134
 
130
- async def check_connect_async(engine: AsyncEngine, /) -> bool:
135
+ async def check_connect_async(
136
+ engine: AsyncEngine, /, *, timeout: Delta | None = None
137
+ ) -> bool:
131
138
  """Check if an engine can connect."""
132
139
  try:
133
- async with engine.connect() as conn:
140
+ async with timeout_td(timeout), engine.connect() as conn:
134
141
  return bool((await conn.execute(_SELECT)).scalar_one())
135
- except (OperationalError, ProgrammingError):
142
+ except (OperationalError, ProgrammingError, TimeoutError):
136
143
  return False
137
144
 
138
145
 
@@ -143,7 +150,7 @@ async def check_engine(
143
150
  engine: AsyncEngine,
144
151
  /,
145
152
  *,
146
- timeout: TimeDelta | None = None,
153
+ timeout: Delta | None = None,
147
154
  error: type[Exception] = TimeoutError,
148
155
  num_tables: int | tuple[int, float] | None = None,
149
156
  ) -> None:
@@ -316,7 +323,7 @@ async def ensure_tables_created(
316
323
  engine: AsyncEngine,
317
324
  /,
318
325
  *tables_or_orms: TableOrORMInstOrClass,
319
- timeout: TimeDelta | None = None,
326
+ timeout: Delta | None = None,
320
327
  error: type[Exception] = TimeoutError,
321
328
  ) -> None:
322
329
  """Ensure a table/set of tables is/are created."""
@@ -345,7 +352,7 @@ async def ensure_tables_created(
345
352
  async def ensure_tables_dropped(
346
353
  engine: AsyncEngine,
347
354
  *tables_or_orms: TableOrORMInstOrClass,
348
- timeout: TimeDelta | None = None,
355
+ timeout: Delta | None = None,
349
356
  error: type[Exception] = TimeoutError,
350
357
  ) -> None:
351
358
  """Ensure a table/set of tables is/are dropped."""
@@ -575,9 +582,9 @@ async def insert_items(
575
582
  snake: bool = False,
576
583
  chunk_size_frac: float = CHUNK_SIZE_FRAC,
577
584
  assume_tables_exist: bool = False,
578
- timeout_create: TimeDelta | None = None,
585
+ timeout_create: Delta | None = None,
579
586
  error_create: type[Exception] = TimeoutError,
580
- timeout_insert: TimeDelta | None = None,
587
+ timeout_insert: Delta | None = None,
581
588
  error_insert: type[Exception] = TimeoutError,
582
589
  ) -> None:
583
590
  """Insert a set of items into a database.
@@ -676,9 +683,9 @@ async def migrate_data(
676
683
  table_or_orm_to: TableOrORMInstOrClass | None = None,
677
684
  chunk_size_frac: float = CHUNK_SIZE_FRAC,
678
685
  assume_tables_exist: bool = False,
679
- timeout_create: TimeDelta | None = None,
686
+ timeout_create: Delta | None = None,
680
687
  error_create: type[Exception] = TimeoutError,
681
- timeout_insert: TimeDelta | None = None,
688
+ timeout_insert: Delta | None = None,
682
689
  error_insert: type[Exception] = TimeoutError,
683
690
  ) -> None:
684
691
  """Migrate the contents of a table from one database to another."""
@@ -812,9 +819,9 @@ async def upsert_items(
812
819
  selected_or_all: _SelectedOrAll = "selected",
813
820
  chunk_size_frac: float = CHUNK_SIZE_FRAC,
814
821
  assume_tables_exist: bool = False,
815
- timeout_create: TimeDelta | None = None,
822
+ timeout_create: Delta | None = None,
816
823
  error_create: type[Exception] = TimeoutError,
817
- timeout_insert: TimeDelta | None = None,
824
+ timeout_insert: Delta | None = None,
818
825
  error_insert: type[Exception] = TimeoutError,
819
826
  ) -> None:
820
827
  """Upsert a set of items into a database.
@@ -934,7 +941,7 @@ async def yield_connection(
934
941
  engine: AsyncEngine,
935
942
  /,
936
943
  *,
937
- timeout: TimeDelta | None = None,
944
+ timeout: Delta | None = None,
938
945
  error: MaybeType[BaseException] = TimeoutError,
939
946
  ) -> AsyncIterator[AsyncConnection]:
940
947
  """Yield an async connection."""