dycw-utilities 0.150.11__tar.gz → 0.150.13__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.11 → dycw_utilities-0.150.13}/PKG-INFO +1 -1
  2. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/pyproject.toml +226 -97
  3. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_sqlalchemy.py +5 -1
  4. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/__init__.py +1 -1
  5. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/sqlalchemy.py +14 -1
  6. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/.gitignore +0 -0
  7. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/LICENSE +0 -0
  8. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/README.md +0 -0
  9. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/__init__.py +0 -0
  10. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/conftest.py +0 -0
  11. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/__init__.py +0 -0
  12. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_missing/__init__.py +0 -0
  13. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_missing/module.py +0 -0
  14. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_with/__init__.py +0 -0
  15. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_with/outer_1.py +0 -0
  16. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_with/outer_2.py +0 -0
  17. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  18. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  19. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  20. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  21. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_without/__init__.py +0 -0
  22. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_without/module_1.py +0 -0
  23. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/package_without/module_2.py +0 -0
  24. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/standalone.py +0 -0
  25. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/modules/with_imports.py +0 -0
  26. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  27. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  28. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  29. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  30. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  31. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  32. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  33. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  34. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_altair.py +0 -0
  35. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_asyncio.py +0 -0
  36. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_atomicwrites.py +0 -0
  37. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_atools.py +0 -0
  38. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_cachetools.py +0 -0
  39. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_click.py +0 -0
  40. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_concurrent.py +0 -0
  41. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_contextlib.py +0 -0
  42. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_contextvars.py +0 -0
  43. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_cryptography.py +0 -0
  44. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_cvxpy.py +0 -0
  45. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_dataclasses.py +0 -0
  46. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_dnspython.py +0 -0
  47. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_enum.py +0 -0
  48. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_errors.py +0 -0
  49. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_eventkit.py +0 -0
  50. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_fastapi.py +0 -0
  51. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_fpdf2.py +0 -0
  52. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_functions.py +0 -0
  53. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_functools.py +0 -0
  54. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_getpass.py +0 -0
  55. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_gzip.py +0 -0
  56. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_hashlib.py +0 -0
  57. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_http.py +0 -0
  58. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_hypothesis.py +0 -0
  59. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_importlib.py +0 -0
  60. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_inflect.py +0 -0
  61. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_ipython.py +0 -0
  62. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_iterables.py +0 -0
  63. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_json.py +0 -0
  64. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_jupyter.py +0 -0
  65. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_libcst.py +0 -0
  66. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_lightweight_charts.py +0 -0
  67. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_logging.py +0 -0
  68. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_math.py +0 -0
  69. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_memory_profiler.py +0 -0
  70. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_modules.py +0 -0
  71. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_more_itertools.py +0 -0
  72. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_numpy.py +0 -0
  73. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_objects/__init__.py +0 -0
  74. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_objects/objects.py +0 -0
  75. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_operator.py +0 -0
  76. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_optuna.py +0 -0
  77. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_orjson.py +0 -0
  78. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_os.py +0 -0
  79. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_parse.py +0 -0
  80. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_pathlib.py +0 -0
  81. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_period.py +0 -0
  82. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_pickle.py +0 -0
  83. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_platform.py +0 -0
  84. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_polars.py +0 -0
  85. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_polars_ols.py +0 -0
  86. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_postgres.py +0 -0
  87. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_pottery.py +0 -0
  88. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_pqdm.py +0 -0
  89. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_psutil.py +0 -0
  90. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_pyinstrument.py +0 -0
  91. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_pytest.py +0 -0
  92. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_pytest_randomly.py +0 -0
  93. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_pytest_regressions.py +0 -0
  94. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_random.py +0 -0
  95. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_re.py +0 -0
  96. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_redis.py +0 -0
  97. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_reprlib.py +0 -0
  98. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_scipy.py +0 -0
  99. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_sentinel.py +0 -0
  100. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_shelve.py +0 -0
  101. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_slack_sdk.py +0 -0
  102. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_socket.py +0 -0
  103. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_sqlalchemy_polars.py +0 -0
  104. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_statsmodels.py +0 -0
  105. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_string.py +0 -0
  106. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_tempfile.py +0 -0
  107. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_text.py +0 -0
  108. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_threading.py +0 -0
  109. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_timer.py +0 -0
  110. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_traceback.py +0 -0
  111. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_typed_settings.py +0 -0
  112. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_types.py +0 -0
  113. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_typing.py +0 -0
  114. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_typing_funcs/__init__.py +0 -0
  115. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_typing_funcs/no_future.py +0 -0
  116. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_typing_funcs/with_future.py +0 -0
  117. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_tzdata.py +0 -0
  118. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_tzlocal.py +0 -0
  119. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_uuid.py +0 -0
  120. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_version.py +0 -0
  121. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_warnings.py +0 -0
  122. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_whenever.py +0 -0
  123. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_yield_access/__init__.py +0 -0
  124. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_yield_access/script.py +0 -0
  125. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_yield_access/script.sh +0 -0
  126. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_zipfile.py +0 -0
  127. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/tests/test_zoneinfo.py +0 -0
  128. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/altair.py +0 -0
  129. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/asyncio.py +0 -0
  130. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/atomicwrites.py +0 -0
  131. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/atools.py +0 -0
  132. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/cachetools.py +0 -0
  133. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/click.py +0 -0
  134. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/concurrent.py +0 -0
  135. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/contextlib.py +0 -0
  136. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/contextvars.py +0 -0
  137. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/cryptography.py +0 -0
  138. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/cvxpy.py +0 -0
  139. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/dataclasses.py +0 -0
  140. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/dnspython.py +0 -0
  141. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/enum.py +0 -0
  142. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/errors.py +0 -0
  143. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/eventkit.py +0 -0
  144. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/fastapi.py +0 -0
  145. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/fpdf2.py +0 -0
  146. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/functions.py +0 -0
  147. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/functools.py +0 -0
  148. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/getpass.py +0 -0
  149. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/gzip.py +0 -0
  150. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/hashlib.py +0 -0
  151. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/http.py +0 -0
  152. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/hypothesis.py +0 -0
  153. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/importlib.py +0 -0
  154. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/inflect.py +0 -0
  155. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/ipython.py +0 -0
  156. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/iterables.py +0 -0
  157. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/json.py +0 -0
  158. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/jupyter.py +0 -0
  159. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/libcst.py +0 -0
  160. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/lightweight_charts.py +0 -0
  161. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/logging.py +0 -0
  162. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/math.py +0 -0
  163. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/memory_profiler.py +0 -0
  164. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/modules.py +0 -0
  165. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/more_itertools.py +0 -0
  166. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/numpy.py +0 -0
  167. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/operator.py +0 -0
  168. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/optuna.py +0 -0
  169. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/orjson.py +0 -0
  170. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/os.py +0 -0
  171. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/parse.py +0 -0
  172. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/pathlib.py +0 -0
  173. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/period.py +0 -0
  174. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/pickle.py +0 -0
  175. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/platform.py +0 -0
  176. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/polars.py +0 -0
  177. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/polars_ols.py +0 -0
  178. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/postgres.py +0 -0
  179. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/pottery.py +0 -0
  180. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/pqdm.py +0 -0
  181. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/psutil.py +0 -0
  182. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/py.typed +0 -0
  183. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/pyinstrument.py +0 -0
  184. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/pytest.py +0 -0
  185. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/pytest_plugins/__init__.py +0 -0
  186. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
  187. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
  188. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/pytest_regressions.py +0 -0
  189. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/random.py +0 -0
  190. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/re.py +0 -0
  191. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/redis.py +0 -0
  192. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/reprlib.py +0 -0
  193. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/scipy.py +0 -0
  194. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/sentinel.py +0 -0
  195. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/shelve.py +0 -0
  196. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/slack_sdk.py +0 -0
  197. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/socket.py +0 -0
  198. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/sqlalchemy_polars.py +0 -0
  199. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/statsmodels.py +0 -0
  200. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/string.py +0 -0
  201. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/tempfile.py +0 -0
  202. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/text.py +0 -0
  203. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/threading.py +0 -0
  204. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/timer.py +0 -0
  205. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/traceback.py +0 -0
  206. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/typed_settings.py +0 -0
  207. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/types.py +0 -0
  208. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/typing.py +0 -0
  209. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/tzdata.py +0 -0
  210. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/tzlocal.py +0 -0
  211. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/uuid.py +0 -0
  212. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/version.py +0 -0
  213. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/warnings.py +0 -0
  214. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/whenever.py +0 -0
  215. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/src/utilities/zipfile.py +0 -0
  216. {dycw_utilities-0.150.11 → dycw_utilities-0.150.13}/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.11
3
+ Version: 0.150.13
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -7,103 +7,232 @@ requires = ["hatchling"]
7
7
 
8
8
  # dependency groups
9
9
  [dependency-groups]
10
- altair = ["altair >= 5.5.0, < 5.6"]
10
+ altair = [
11
+ "altair >=5.5.0, <5.6",
12
+ ]
11
13
  altair-test = [
12
14
  "polars",
13
15
  "img2pdf",
14
16
  "vl-convert-python",
15
17
  ]
16
- atools = ["atools >= 0.14.2, < 0.15"]
17
- cachetools = ["cachetools >= 6.1.0, < 6.2"]
18
- click = ["click >= 8.2.1, < 8.3"]
18
+ atools = [
19
+ "atools >=0.14.2, <0.15",
20
+ ]
21
+ cachetools = [
22
+ "cachetools >=6.1.0, <6.2",
23
+ ]
24
+ click = [
25
+ "click >=8.2.1, <8.3",
26
+ ]
19
27
  core = [
20
- "atomicwrites >= 1.4.1, < 1.5",
21
- "typing-extensions >= 4.14.1, < 4.15",
22
- "tzlocal >= 5.3.1, < 5.4",
23
- "whenever >= 0.8.7, < 0.9",
24
- ]
25
- cryptography = ["cryptography >= 45.0.4, < 45.1"]
26
- cvxpy = ["cvxpy >= 1.7.1, < 1.8"]
27
- dataclasses-test = ["orjson", "polars"]
28
+ "atomicwrites >=1.4.1, <1.5",
29
+ "typing-extensions >=4.14.1, <4.15",
30
+ "tzlocal >=5.3.1, <5.4",
31
+ "whenever >=0.8.7, <0.9",
32
+ ]
33
+ cryptography = [
34
+ "cryptography >=45.0.4, <45.1",
35
+ ]
36
+ cvxpy = [
37
+ "cvxpy >=1.7.1, <1.8",
38
+ ]
39
+ dataclasses-test = [
40
+ "orjson",
41
+ "polars",
42
+ ]
28
43
  dev = [
29
- "coloredlogs >= 15.0.1, < 15.1",
30
- "coverage-conditional-plugin >= 0.9.0, < 0.10",
31
- "dycw-pytest-only >= 2.1.1, < 2.2",
32
- "pudb >= 2025.1, < 2025.2",
33
- "pyright[nodejs] >= 1.1.401, < 1.2",
34
- "pytest-cov >= 6.2.1, < 6.3",
35
- "pytest-timeout >= 2.4.0, < 2.5",
36
- ]
37
- dnspython = ["dnspython >= 2.7.0, < 2.8"]
38
- eventkit = ["eventkit >= 1.0.3, < 1.1"]
39
- fastapi = ["fastapi >= 0.116.0, < 0.117"]
40
- fastapi-test = ["httpx", "uvicorn"]
41
- fpdf2 = ["fpdf2 >= 2.8.3, < 2.9"]
42
- hashlib-test = ["orjson"]
43
- http-test = ["orjson"]
44
- hypothesis = ["hypothesis >= 6.136.1, < 6.137"]
45
- hypothesis-test = ["libcst", "pathvalidate", "numpy", "pytest-rerunfailures"]
46
- inflect = ["inflect >= 7.5.0, < 7.6"]
47
- jupyter-test = ["pandas", "polars"]
48
- libcst = ["libcst >= 1.8.0, < 1.9"]
49
- lightweight-charts = ["lightweight-charts >= 2.1, < 2.2"]
50
- lightweight-charts-test = ["polars-lts-cpu", "pyarrow"]
51
- math-test = ["numpy"]
52
- memory-profiler = ["memory-profiler >= 0.61.0, < 0.62"]
53
- more-itertools = ["more-itertools >= 10.7.0, < 10.8"]
54
- numpy = ["numpy >= 2.3.1, < 2.4"]
55
- operator = ["polars"]
56
- optuna = ["optuna >= 4.4.0, < 4.5"]
57
- orjson = ["orjson >= 3.11.0, < 3.12"]
58
- orjson-test = ["polars"]
59
- polars = ["polars >= 1.31.0, < 1.32"]
60
- polars-ols = ["polars-ols >= 0.3.5, < 0.4"]
61
- polars-ols-test = ["scikit-learn"]
62
- polars-test = ["numpy", "statsmodels"]
63
- pottery = ["pottery >= 3.0.1, < 3.1"]
64
- pottery-test = ["orjson", "pytest-rerunfailures"]
65
- pqdm = ["pqdm >= 0.2.0, < 0.3"]
66
- psutil = ["psutil >= 7.0.0, < 7.1"]
67
- pyinstrument = ["pyinstrument >= 5.0.3, < 5.1"]
44
+ "coloredlogs >=15.0.1, <15.1",
45
+ "coverage-conditional-plugin >=0.9.0, <0.10",
46
+ "dycw-pytest-only >=2.1.1, <2.2",
47
+ "pudb >=2025.1, <2025.2",
48
+ "pyright[nodejs] >=1.1.401, <1.2",
49
+ "pytest-cov >=6.2.1, <6.3",
50
+ "pytest-timeout >=2.4.0, <2.5",
51
+ ]
52
+ dnspython = [
53
+ "dnspython >=2.7.0, <2.8",
54
+ ]
55
+ eventkit = [
56
+ "eventkit >=1.0.3, <1.1",
57
+ ]
58
+ fastapi = [
59
+ "fastapi >=0.116.0, <0.117",
60
+ ]
61
+ fastapi-test = [
62
+ "httpx",
63
+ "uvicorn",
64
+ ]
65
+ fpdf2 = [
66
+ "fpdf2 >=2.8.3, <2.9",
67
+ ]
68
+ hashlib-test = [
69
+ "orjson",
70
+ ]
71
+ http-test = [
72
+ "orjson",
73
+ ]
74
+ hypothesis = [
75
+ "hypothesis >=6.136.1, <6.137",
76
+ ]
77
+ hypothesis-test = [
78
+ "libcst",
79
+ "pathvalidate",
80
+ "numpy",
81
+ "pytest-rerunfailures",
82
+ ]
83
+ inflect = [
84
+ "inflect >=7.5.0, <7.6",
85
+ ]
86
+ jupyter-test = [
87
+ "pandas",
88
+ "polars",
89
+ ]
90
+ libcst = [
91
+ "libcst >=1.8.0, <1.9",
92
+ ]
93
+ lightweight-charts = [
94
+ "lightweight-charts >=2.1, <2.2",
95
+ ]
96
+ lightweight-charts-test = [
97
+ "polars-lts-cpu",
98
+ "pyarrow",
99
+ ]
100
+ math-test = [
101
+ "numpy",
102
+ ]
103
+ memory-profiler = [
104
+ "memory-profiler >=0.61.0, <0.62",
105
+ ]
106
+ more-itertools = [
107
+ "more-itertools >=10.7.0, <10.8",
108
+ ]
109
+ numpy = [
110
+ "numpy >=2.3.1, <2.4",
111
+ ]
112
+ operator = [
113
+ "polars",
114
+ ]
115
+ optuna = [
116
+ "optuna >=4.4.0, <4.5",
117
+ ]
118
+ orjson = [
119
+ "orjson >=3.11.0, <3.12",
120
+ ]
121
+ orjson-test = [
122
+ "polars",
123
+ ]
124
+ polars = [
125
+ "polars >=1.31.0, <1.32",
126
+ ]
127
+ polars-ols = [
128
+ "polars-ols >=0.3.5, <0.4",
129
+ ]
130
+ polars-ols-test = [
131
+ "scikit-learn",
132
+ ]
133
+ polars-test = [
134
+ "numpy",
135
+ "statsmodels",
136
+ ]
137
+ pottery = [
138
+ "pottery >=3.0.1, <3.1",
139
+ ]
140
+ pottery-test = [
141
+ "orjson",
142
+ "pytest-rerunfailures",
143
+ ]
144
+ pqdm = [
145
+ "pqdm >=0.2.0, <0.3",
146
+ ]
147
+ psutil = [
148
+ "psutil >=7.0.0, <7.1",
149
+ ]
150
+ pyinstrument = [
151
+ "pyinstrument >=5.0.3, <5.1",
152
+ ]
68
153
  pytest = [
69
- "pudb >= 2025.1, < 2025.2",
70
- "pytest >= 8.4.1, < 8.5",
71
- "pytest-asyncio >= 1.1.0, < 1.2",
72
- "pytest-randomly >= 3.16.0, < 3.17",
73
- "pytest-timeout >= 2.4.0, < 2.5",
74
- "pytest-xdist >= 3.8.0, < 3.9",
75
- ]
76
- pytest-regressions = ["pytest-regressions >= 2.8.1, < 2.9"]
77
- pytest-regressions-test = ["orjson", "polars"]
78
- pytest-test = ["orjson", "pytest-rng", "pytest-rerunfailures"]
79
- redis = ["redis >= 6.2.0, < 6.3", "orjson"]
80
- redis-test = ["pytest-rerunfailures"]
81
- reprlib-test = ["rich"]
82
- scipy = ["scipy >= 1.16.0, < 1.17"]
83
- sklearn = ["scikit-learn >= 1.7.0, < 1.8"]
84
- slack-sdk = ["slack-sdk >= 3.36.0, < 3.37"]
85
- slack-sdk-test = ["aiohttp"]
86
- sqlalchemy = ["sqlalchemy >= 2.0.41, < 2.1", "psycopg"]
87
- sqlalchemy-polars = ["sqlalchemy", "polars"]
88
- sqlalchemy-polars-test = ["aiosqlite", "asyncpg", "greenlet"]
89
- sqlalchemy-test = ["aiosqlite", "asyncpg", "greenlet"]
90
- statsmodels = ["statsmodels >= 0.14.4, < 0.15"]
91
- typed-settings = ["typed-settings >= 24.6.0, < 24.7"]
92
- tzdata = ["tzdata >= 2025.2, < 2025.3"]
154
+ "pudb >=2025.1, <2025.2",
155
+ "pytest >=8.4.1, <8.5",
156
+ "pytest-asyncio >=1.1.0, <1.2",
157
+ "pytest-randomly >=3.16.0, <3.17",
158
+ "pytest-timeout >=2.4.0, <2.5",
159
+ "pytest-xdist >=3.8.0, <3.9",
160
+ ]
161
+ pytest-regressions = [
162
+ "pytest-regressions >=2.8.1, <2.9",
163
+ ]
164
+ pytest-regressions-test = [
165
+ "orjson",
166
+ "polars",
167
+ ]
168
+ pytest-test = [
169
+ "orjson",
170
+ "pytest-rng",
171
+ "pytest-rerunfailures",
172
+ ]
173
+ redis = [
174
+ "redis >=6.2.0, <6.3",
175
+ "orjson",
176
+ ]
177
+ redis-test = [
178
+ "pytest-rerunfailures",
179
+ ]
180
+ reprlib-test = [
181
+ "rich",
182
+ ]
183
+ scipy = [
184
+ "scipy >=1.16.0, <1.17",
185
+ ]
186
+ sklearn = [
187
+ "scikit-learn >=1.7.0, <1.8",
188
+ ]
189
+ slack-sdk = [
190
+ "slack-sdk >=3.36.0, <3.37",
191
+ ]
192
+ slack-sdk-test = [
193
+ "aiohttp",
194
+ ]
195
+ sqlalchemy = [
196
+ "sqlalchemy >=2.0.41, <2.1",
197
+ "psycopg",
198
+ ]
199
+ sqlalchemy-polars = [
200
+ "sqlalchemy",
201
+ "polars",
202
+ ]
203
+ sqlalchemy-polars-test = [
204
+ "aiosqlite",
205
+ "asyncpg",
206
+ "greenlet",
207
+ ]
208
+ sqlalchemy-test = [
209
+ "aiosqlite",
210
+ "asyncpg",
211
+ "greenlet",
212
+ ]
213
+ statsmodels = [
214
+ "statsmodels >=0.14.4, <0.15",
215
+ ]
216
+ typed-settings = [
217
+ "typed-settings >=24.6.0, <24.7",
218
+ ]
219
+ tzdata = [
220
+ "tzdata >=2025.2, <2025.3",
221
+ ]
93
222
 
94
223
  # project
95
224
  [project]
96
225
  authors = [{name = "Derek Wan", email = "d.wan@icloud.com"}]
97
226
  dependencies = [
98
- "atomicwrites >= 1.4.1, < 1.5",
99
- "typing-extensions >= 4.14.0, < 4.15",
100
- "tzlocal >= 5.3.1, < 5.4",
101
- "whenever >= 0.8.7, < 0.9",
227
+ "atomicwrites >=1.4.1, <1.5",
228
+ "typing-extensions >=4.14.0, <4.15",
229
+ "tzlocal >=5.3.1, <5.4",
230
+ "whenever >=0.8.7, <0.9",
102
231
  ]
103
232
  name = "dycw-utilities"
104
233
  readme = "README.md"
105
234
  requires-python = ">= 3.12"
106
- version = "0.150.11"
235
+ version = "0.150.13"
107
236
 
108
237
  [project.entry-points.pytest11]
109
238
  pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
@@ -111,24 +240,24 @@ pytest-regressions = "utilities.pytest_plugins.pytest_regressions"
111
240
 
112
241
  [project.optional-dependencies]
113
242
  logging = [
114
- "coloredlogs >= 15.0.1, < 15.1",
243
+ "coloredlogs >=15.0.1, <15.1",
115
244
  ]
116
245
  test = [
117
- "dycw-pytest-only >= 2.1.1, < 2.2",
118
- "hypothesis >= 6.136.1, < 6.137",
119
- "pudb >= 2025.1, < 2025.2",
120
- "pytest >= 8.4.1, < 8.5",
121
- "pytest-asyncio >= 1.1.0, < 1.2",
122
- "pytest-cov >= 6.2.1, < 6.3",
123
- "pytest-instafail >= 0.5.0, < 0.6",
124
- "pytest-lazy-fixtures >= 1.1.4, < 1.2",
125
- "pytest-randomly >= 3.16.0, < 3.17",
126
- "pytest-regressions >= 2.8.1, < 2.9",
127
- "pytest-repeat >= 0.9.4, < 0.10",
128
- "pytest-rerunfailures >= 15.1, < 16",
129
- "pytest-rng >= 1.0.0, < 1.1",
130
- "pytest-timeout >= 2.4.0, < 2.5",
131
- "pytest-xdist >= 3.8.0, < 3.9",
246
+ "dycw-pytest-only >=2.1.1, <2.2",
247
+ "hypothesis >=6.136.1, <6.137",
248
+ "pudb >=2025.1, <2025.2",
249
+ "pytest >=8.4.1, <8.5",
250
+ "pytest-asyncio >=1.1.0, <1.2",
251
+ "pytest-cov >=6.2.1, <6.3",
252
+ "pytest-instafail >=0.5.0, <0.6",
253
+ "pytest-lazy-fixtures >=1.1.4, <1.2",
254
+ "pytest-randomly >=3.16.0, <3.17",
255
+ "pytest-regressions >=2.8.1, <2.9",
256
+ "pytest-repeat >=0.9.4, <0.10",
257
+ "pytest-rerunfailures >=15.1, <16",
258
+ "pytest-rng >=1.0.0, <1.1",
259
+ "pytest-timeout >=2.4.0, <2.5",
260
+ "pytest-xdist >=3.8.0, <3.9",
132
261
  ]
133
262
 
134
263
  [project.scripts]
@@ -136,7 +265,7 @@ test = [
136
265
  # bump-my-version
137
266
  [tool.bumpversion]
138
267
  allow_dirty = true
139
- current_version = "0.150.11"
268
+ current_version = "0.150.13"
140
269
 
141
270
  [[tool.bumpversion.files]]
142
271
  filename = "src/utilities/__init__.py"
@@ -67,6 +67,7 @@ from utilities.sqlalchemy import (
67
67
  _SelectedOrAll,
68
68
  _tuple_to_mapping,
69
69
  check_connect,
70
+ check_connect_async,
70
71
  check_engine,
71
72
  columnwise_max,
72
73
  columnwise_min,
@@ -137,9 +138,12 @@ def _upsert_lists(
137
138
 
138
139
 
139
140
  class TestCheckConnect:
140
- def test_main(self, *, test_engine: Engine) -> None:
141
+ def test_sync(self, *, test_engine: Engine) -> None:
141
142
  assert check_connect(test_engine)
142
143
 
144
+ async def test_async(self, *, test_async_engine: AsyncEngine) -> None:
145
+ assert await check_connect_async(test_async_engine)
146
+
143
147
 
144
148
  class TestCheckEngine:
145
149
  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.11"
3
+ __version__ = "0.150.13"
@@ -115,11 +115,23 @@ CHUNK_SIZE_FRAC = 0.8
115
115
  ##
116
116
 
117
117
 
118
+ _SELECT = text("SELECT 1")
119
+
120
+
118
121
  def check_connect(engine: Engine, /) -> bool:
119
122
  """Check if an engine can connect."""
120
123
  try:
121
124
  with engine.connect() as conn:
122
- return bool(conn.execute(text("SELECT 1")).scalar_one())
125
+ return bool(conn.execute(_SELECT).scalar_one())
126
+ except (OperationalError, ProgrammingError):
127
+ return False
128
+
129
+
130
+ async def check_connect_async(engine: AsyncEngine, /) -> bool:
131
+ """Check if an engine can connect."""
132
+ try:
133
+ async with engine.connect() as conn:
134
+ return bool((await conn.execute(_SELECT)).scalar_one())
123
135
  except (OperationalError, ProgrammingError):
124
136
  return False
125
137
 
@@ -1260,6 +1272,7 @@ __all__ = [
1260
1272
  "TablenameMixin",
1261
1273
  "UpsertItemsError",
1262
1274
  "check_connect",
1275
+ "check_connect_async",
1263
1276
  "check_engine",
1264
1277
  "columnwise_max",
1265
1278
  "columnwise_min",