dycw-utilities 0.151.9__tar.gz → 0.151.11__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.151.9 → dycw_utilities-0.151.11}/PKG-INFO +1 -1
  2. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/pyproject.toml +2 -2
  3. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_period.py +4 -4
  4. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_polars.py +2 -2
  5. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/__init__.py +1 -1
  6. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/asyncio.py +3 -3
  7. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/hypothesis.py +21 -21
  8. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/logging.py +2 -2
  9. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/period.py +33 -12
  10. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/redis.py +3 -3
  11. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/sqlalchemy.py +10 -10
  12. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/.gitignore +0 -0
  13. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/LICENSE +0 -0
  14. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/README.md +0 -0
  15. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/__init__.py +0 -0
  16. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/conftest.py +0 -0
  17. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/__init__.py +0 -0
  18. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_missing/__init__.py +0 -0
  19. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_missing/module.py +0 -0
  20. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_with/__init__.py +0 -0
  21. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_with/outer_1.py +0 -0
  22. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_with/outer_2.py +0 -0
  23. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  24. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  25. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  26. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  27. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_without/__init__.py +0 -0
  28. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_without/module_1.py +0 -0
  29. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/package_without/module_2.py +0 -0
  30. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/standalone.py +0 -0
  31. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/modules/with_imports.py +0 -0
  32. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  33. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  34. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  35. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  36. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  37. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  38. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  39. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  40. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_altair.py +0 -0
  41. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_asyncio.py +0 -0
  42. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_atomicwrites.py +0 -0
  43. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_atools.py +0 -0
  44. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_cachetools.py +0 -0
  45. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_click.py +0 -0
  46. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_concurrent.py +0 -0
  47. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_contextlib.py +0 -0
  48. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_contextvars.py +0 -0
  49. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_cryptography.py +0 -0
  50. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_cvxpy.py +0 -0
  51. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_dataclasses.py +0 -0
  52. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_dnspython.py +0 -0
  53. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_enum.py +0 -0
  54. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_errors.py +0 -0
  55. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_eventkit.py +0 -0
  56. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_fastapi.py +0 -0
  57. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_fpdf2.py +0 -0
  58. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_functions.py +0 -0
  59. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_functools.py +0 -0
  60. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_getpass.py +0 -0
  61. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_gzip.py +0 -0
  62. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_hashlib.py +0 -0
  63. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_http.py +0 -0
  64. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_hypothesis.py +0 -0
  65. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_importlib.py +0 -0
  66. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_inflect.py +0 -0
  67. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_ipython.py +0 -0
  68. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_iterables.py +0 -0
  69. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_json.py +0 -0
  70. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_jupyter.py +0 -0
  71. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_libcst.py +0 -0
  72. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_lightweight_charts.py +0 -0
  73. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_logging.py +0 -0
  74. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_math.py +0 -0
  75. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_memory_profiler.py +0 -0
  76. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_modules.py +0 -0
  77. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_more_itertools.py +0 -0
  78. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_numpy.py +0 -0
  79. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_objects/__init__.py +0 -0
  80. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_objects/objects.py +0 -0
  81. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_operator.py +0 -0
  82. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_optuna.py +0 -0
  83. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_orjson.py +0 -0
  84. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_os.py +0 -0
  85. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_parse.py +0 -0
  86. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_pathlib.py +0 -0
  87. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_pickle.py +0 -0
  88. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_platform.py +0 -0
  89. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_polars_ols.py +0 -0
  90. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_postgres.py +0 -0
  91. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_pottery.py +0 -0
  92. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_pqdm.py +0 -0
  93. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_psutil.py +0 -0
  94. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_pyinstrument.py +0 -0
  95. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_pytest.py +0 -0
  96. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_pytest_randomly.py +0 -0
  97. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_pytest_regressions.py +0 -0
  98. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_random.py +0 -0
  99. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_re.py +0 -0
  100. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_redis.py +0 -0
  101. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_reprlib.py +0 -0
  102. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_scipy.py +0 -0
  103. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_sentinel.py +0 -0
  104. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_shelve.py +0 -0
  105. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_slack_sdk.py +0 -0
  106. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_socket.py +0 -0
  107. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_sqlalchemy.py +0 -0
  108. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_sqlalchemy_polars.py +0 -0
  109. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_statsmodels.py +0 -0
  110. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_string.py +0 -0
  111. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_tempfile.py +0 -0
  112. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_text.py +0 -0
  113. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_threading.py +0 -0
  114. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_timer.py +0 -0
  115. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_traceback.py +0 -0
  116. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_typed_settings.py +0 -0
  117. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_types.py +0 -0
  118. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_typing.py +0 -0
  119. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_typing_funcs/__init__.py +0 -0
  120. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_typing_funcs/no_future.py +0 -0
  121. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_typing_funcs/with_future.py +0 -0
  122. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_tzdata.py +0 -0
  123. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_tzlocal.py +0 -0
  124. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_uuid.py +0 -0
  125. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_version.py +0 -0
  126. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_warnings.py +0 -0
  127. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_whenever.py +0 -0
  128. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_yield_access/__init__.py +0 -0
  129. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_yield_access/script.py +0 -0
  130. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_yield_access/script.sh +0 -0
  131. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_zipfile.py +0 -0
  132. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/tests/test_zoneinfo.py +0 -0
  133. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/altair.py +0 -0
  134. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/atomicwrites.py +0 -0
  135. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/atools.py +0 -0
  136. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/cachetools.py +0 -0
  137. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/click.py +0 -0
  138. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/concurrent.py +0 -0
  139. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/contextlib.py +0 -0
  140. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/contextvars.py +0 -0
  141. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/cryptography.py +0 -0
  142. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/cvxpy.py +0 -0
  143. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/dataclasses.py +0 -0
  144. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/dnspython.py +0 -0
  145. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/enum.py +0 -0
  146. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/errors.py +0 -0
  147. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/eventkit.py +0 -0
  148. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/fastapi.py +0 -0
  149. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/fpdf2.py +0 -0
  150. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/functions.py +0 -0
  151. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/functools.py +0 -0
  152. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/getpass.py +0 -0
  153. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/gzip.py +0 -0
  154. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/hashlib.py +0 -0
  155. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/http.py +0 -0
  156. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/importlib.py +0 -0
  157. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/inflect.py +0 -0
  158. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/ipython.py +0 -0
  159. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/iterables.py +0 -0
  160. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/json.py +0 -0
  161. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/jupyter.py +0 -0
  162. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/libcst.py +0 -0
  163. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/lightweight_charts.py +0 -0
  164. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/math.py +0 -0
  165. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/memory_profiler.py +0 -0
  166. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/modules.py +0 -0
  167. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/more_itertools.py +0 -0
  168. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/numpy.py +0 -0
  169. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/operator.py +0 -0
  170. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/optuna.py +0 -0
  171. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/orjson.py +0 -0
  172. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/os.py +0 -0
  173. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/parse.py +0 -0
  174. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/pathlib.py +0 -0
  175. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/pickle.py +0 -0
  176. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/platform.py +0 -0
  177. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/polars.py +0 -0
  178. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/polars_ols.py +0 -0
  179. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/postgres.py +0 -0
  180. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/pottery.py +0 -0
  181. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/pqdm.py +0 -0
  182. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/psutil.py +0 -0
  183. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/py.typed +0 -0
  184. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/pyinstrument.py +0 -0
  185. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/pytest.py +0 -0
  186. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/pytest_plugins/__init__.py +0 -0
  187. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
  188. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
  189. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/pytest_regressions.py +0 -0
  190. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/random.py +0 -0
  191. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/re.py +0 -0
  192. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/reprlib.py +0 -0
  193. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/scipy.py +0 -0
  194. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/sentinel.py +0 -0
  195. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/shelve.py +0 -0
  196. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/slack_sdk.py +0 -0
  197. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/socket.py +0 -0
  198. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/sqlalchemy_polars.py +0 -0
  199. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/statsmodels.py +0 -0
  200. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/string.py +0 -0
  201. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/tempfile.py +0 -0
  202. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/text.py +0 -0
  203. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/threading.py +0 -0
  204. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/timer.py +0 -0
  205. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/traceback.py +0 -0
  206. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/typed_settings.py +0 -0
  207. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/types.py +0 -0
  208. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/typing.py +0 -0
  209. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/tzdata.py +0 -0
  210. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/tzlocal.py +0 -0
  211. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/uuid.py +0 -0
  212. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/version.py +0 -0
  213. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/warnings.py +0 -0
  214. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/whenever.py +0 -0
  215. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/zipfile.py +0 -0
  216. {dycw_utilities-0.151.9 → dycw_utilities-0.151.11}/src/utilities/zoneinfo.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.151.9
3
+ Version: 0.151.11
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.151.9"
235
+ version = "0.151.11"
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.151.9"
268
+ current_version = "0.151.11"
269
269
 
270
270
  [[tool.bumpversion.files]]
271
271
  filename = "src/utilities/__init__.py"
@@ -21,9 +21,9 @@ from utilities.hypothesis import (
21
21
  )
22
22
  from utilities.period import (
23
23
  DatePeriod,
24
+ PeriodDict,
24
25
  TimePeriod,
25
26
  ZonedDateTimePeriod,
26
- _PeriodAsDict,
27
27
  _PeriodExactEqArgumentsError,
28
28
  _PeriodInvalidError,
29
29
  _PeriodTimeZoneError,
@@ -154,7 +154,7 @@ class TestDatePeriod:
154
154
  period = DatePeriod(start, end)
155
155
  dict1 = period.to_dict()
156
156
  dstart, dend = dict1["start"], dict1["end"]
157
- dict2 = _PeriodAsDict(
157
+ dict2 = PeriodDict(
158
158
  start=data.draw(sampled_from([dstart, dstart.py_date()])),
159
159
  end=data.draw(sampled_from([dend, dend.py_date()])),
160
160
  )
@@ -240,7 +240,7 @@ class TestTimePeriod:
240
240
  period = TimePeriod(start, end)
241
241
  dict1 = period.to_dict()
242
242
  dstart, dend = dict1["start"], dict1["end"]
243
- dict2 = _PeriodAsDict(
243
+ dict2 = PeriodDict(
244
244
  start=data.draw(sampled_from([dstart, dstart.py_time()])),
245
245
  end=data.draw(sampled_from([dend, dend.py_time()])),
246
246
  )
@@ -478,7 +478,7 @@ class TestZonedDateTimePeriod:
478
478
  period = ZonedDateTimePeriod(start, end)
479
479
  dict1 = period.to_dict()
480
480
  dstart, dend = dict1["start"], dict1["end"]
481
- dict2 = _PeriodAsDict(
481
+ dict2 = PeriodDict(
482
482
  start=data.draw(sampled_from([dstart, dstart.py_datetime()])),
483
483
  end=data.draw(sampled_from([dend, dend.py_datetime()])),
484
484
  )
@@ -1500,14 +1500,14 @@ class TestGetDataTypeOrSeriesTimeZone:
1500
1500
  dtype = zoned_datetime_dtype(time_zone=time_zone)
1501
1501
  case "struct":
1502
1502
  dtype = zoned_datetime_period_dtype(time_zone=time_zone)
1503
- case _ as never:
1503
+ case never:
1504
1504
  assert_never(never)
1505
1505
  match dtype_or_series:
1506
1506
  case "dtype":
1507
1507
  obj = dtype
1508
1508
  case "series":
1509
1509
  obj = Series(dtype=dtype)
1510
- case _ as never:
1510
+ case never:
1511
1511
  assert_never(never)
1512
1512
  result = get_data_type_or_series_time_zone(obj)
1513
1513
  assert result is time_zone
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.151.9"
3
+ __version__ = "0.151.11"
@@ -275,7 +275,7 @@ class EnhancedTaskGroup(TaskGroup):
275
275
  _ = await super().__aexit__(et, exc, tb)
276
276
  case False:
277
277
  _ = await super().__aexit__(et, exc, tb)
278
- case _ as never:
278
+ case never:
279
279
  assert_never(never)
280
280
 
281
281
  @override
@@ -312,7 +312,7 @@ class EnhancedTaskGroup(TaskGroup):
312
312
  self.create_task(make_coro(*args, **kwargs))
313
313
  for _ in range(self._max_tasks)
314
314
  ]
315
- case _ as never:
315
+ case never:
316
316
  assert_never(never)
317
317
 
318
318
  async def run_or_create_task[T](
@@ -327,7 +327,7 @@ class EnhancedTaskGroup(TaskGroup):
327
327
  return await coro
328
328
  case False:
329
329
  return self.create_task(coro, name=name, context=context)
330
- case _ as never:
330
+ case never:
331
331
  assert_never(never)
332
332
 
333
333
  def _is_debug(self) -> bool:
@@ -180,14 +180,14 @@ def date_deltas(
180
180
  min_value_ = DATE_DELTA_MIN
181
181
  case DateDelta():
182
182
  ...
183
- case _ as never:
183
+ case never:
184
184
  assert_never(never)
185
185
  match max_value_:
186
186
  case None:
187
187
  max_value_ = DATE_DELTA_MAX
188
188
  case DateDelta():
189
189
  ...
190
- case _ as never:
190
+ case never:
191
191
  assert_never(never)
192
192
  min_days = to_days(min_value_)
193
193
  max_days = to_days(max_value_)
@@ -217,14 +217,14 @@ def date_time_deltas(
217
217
  min_value_ = DATE_TIME_DELTA_MIN
218
218
  case DateTimeDelta():
219
219
  ...
220
- case _ as never:
220
+ case never:
221
221
  assert_never(never)
222
222
  match max_value_:
223
223
  case None:
224
224
  max_value_ = DATE_TIME_DELTA_MAX
225
225
  case DateTimeDelta():
226
226
  ...
227
- case _ as never:
227
+ case never:
228
228
  assert_never(never)
229
229
  min_nanos, max_nanos = map(to_nanoseconds, [min_value_, max_value_])
230
230
  if draw2(draw, parsable):
@@ -253,14 +253,14 @@ def dates(
253
253
  min_value_ = Date.MIN
254
254
  case Date():
255
255
  ...
256
- case _ as never:
256
+ case never:
257
257
  assert_never(never)
258
258
  match max_value_:
259
259
  case None:
260
260
  max_value_ = Date.MAX
261
261
  case Date():
262
262
  ...
263
- case _ as never:
263
+ case never:
264
264
  assert_never(never)
265
265
  if draw2(draw, two_digit):
266
266
  min_value_ = max(min_value_, DATE_TWO_DIGIT_YEAR_MIN)
@@ -343,7 +343,7 @@ def draw2[T](
343
343
  raise _Draw2InputResolvedToSentinelError
344
344
  case _, _, _:
345
345
  return value
346
- case _ as never:
346
+ case never:
347
347
  assert_never(never)
348
348
 
349
349
 
@@ -672,14 +672,14 @@ def month_days(
672
672
  min_value_ = MonthDay.MIN
673
673
  case MonthDay():
674
674
  ...
675
- case _ as never:
675
+ case never:
676
676
  assert_never(never)
677
677
  match max_value_:
678
678
  case None:
679
679
  max_value_ = MonthDay.MAX
680
680
  case MonthDay():
681
681
  ...
682
- case _ as never:
682
+ case never:
683
683
  assert_never(never)
684
684
  min_date, max_date = [m.in_year(2000) for m in [min_value_, max_value_]]
685
685
  date = draw(dates(min_value=min_date, max_value=max_date))
@@ -794,14 +794,14 @@ def plain_datetimes(
794
794
  min_value_ = PlainDateTime.MIN
795
795
  case PlainDateTime():
796
796
  ...
797
- case _ as never:
797
+ case never:
798
798
  assert_never(never)
799
799
  match max_value_:
800
800
  case None:
801
801
  max_value_ = PlainDateTime.MAX
802
802
  case PlainDateTime():
803
803
  ...
804
- case _ as never:
804
+ case never:
805
805
  assert_never(never)
806
806
  py_datetime = draw(
807
807
  datetimes(
@@ -887,7 +887,7 @@ def setup_hypothesis_profiles(
887
887
  return 100
888
888
  case Profile.ci:
889
889
  return 1000
890
- case _ as never:
890
+ case never:
891
891
  assert_never(never)
892
892
 
893
893
  @property
@@ -897,7 +897,7 @@ def setup_hypothesis_profiles(
897
897
  return Verbosity.quiet
898
898
  case Profile.ci:
899
899
  return Verbosity.verbose
900
- case _ as never:
900
+ case never:
901
901
  assert_never(never)
902
902
 
903
903
  phases = {Phase.explicit, Phase.reuse, Phase.generate, Phase.target}
@@ -1154,14 +1154,14 @@ def time_deltas(
1154
1154
  min_value_ = TIME_DELTA_MIN
1155
1155
  case TimeDelta():
1156
1156
  ...
1157
- case _ as never:
1157
+ case never:
1158
1158
  assert_never(never)
1159
1159
  match max_value_:
1160
1160
  case None:
1161
1161
  max_value_ = TIME_DELTA_MAX
1162
1162
  case TimeDelta():
1163
1163
  ...
1164
- case _ as never:
1164
+ case never:
1165
1165
  assert_never(never)
1166
1166
  py_time = draw(
1167
1167
  hypothesis.strategies.timedeltas(
@@ -1189,14 +1189,14 @@ def times(
1189
1189
  min_value_ = Time.MIN
1190
1190
  case Time():
1191
1191
  ...
1192
- case _ as never:
1192
+ case never:
1193
1193
  assert_never(never)
1194
1194
  match max_value_:
1195
1195
  case None:
1196
1196
  max_value_ = Time.MAX
1197
1197
  case Time():
1198
1198
  ...
1199
- case _ as never:
1199
+ case never:
1200
1200
  assert_never(never)
1201
1201
  py_time = draw(
1202
1202
  hypothesis.strategies.times(
@@ -1356,14 +1356,14 @@ def year_months(
1356
1356
  min_value_ = YearMonth.MIN
1357
1357
  case YearMonth():
1358
1358
  ...
1359
- case _ as never:
1359
+ case never:
1360
1360
  assert_never(never)
1361
1361
  match max_value_:
1362
1362
  case None:
1363
1363
  max_value_ = YearMonth.MAX
1364
1364
  case YearMonth():
1365
1365
  ...
1366
- case _ as never:
1366
+ case never:
1367
1367
  assert_never(never)
1368
1368
  min_date, max_date = [m.on_day(1) for m in [min_value_, max_value_]]
1369
1369
  date = draw(dates(min_value=min_date, max_value=max_date, two_digit=two_digit))
@@ -1391,7 +1391,7 @@ def zoned_datetimes(
1391
1391
  case ZonedDateTime():
1392
1392
  with assume_does_not_raise(ValueError):
1393
1393
  min_value_ = min_value_.to_tz(time_zone_.key).to_plain()
1394
- case _ as never:
1394
+ case never:
1395
1395
  assert_never(never)
1396
1396
  match max_value_:
1397
1397
  case None | PlainDateTime():
@@ -1399,7 +1399,7 @@ def zoned_datetimes(
1399
1399
  case ZonedDateTime():
1400
1400
  with assume_does_not_raise(ValueError):
1401
1401
  max_value_ = max_value_.to_tz(time_zone_.key).to_plain()
1402
- case _ as never:
1402
+ case never:
1403
1403
  assert_never(never)
1404
1404
  plain = draw(plain_datetimes(min_value=min_value_, max_value=max_value_))
1405
1405
  with (
@@ -144,7 +144,7 @@ def basic_config(
144
144
  color_field_styles=color_field_styles,
145
145
  )
146
146
  handler.setFormatter(formatter)
147
- case _ as never:
147
+ case never:
148
148
  assert_never(never)
149
149
 
150
150
 
@@ -275,7 +275,7 @@ def get_logger(*, logger: LoggerOrName | None = None) -> Logger:
275
275
  return logger
276
276
  case str() | None:
277
277
  return getLogger(logger)
278
- case _ as never:
278
+ case never:
279
279
  assert_never(never)
280
280
 
281
281
 
@@ -2,7 +2,16 @@ from __future__ import annotations
2
2
 
3
3
  import datetime as dt
4
4
  from dataclasses import dataclass
5
- from typing import TYPE_CHECKING, Any, Self, TypedDict, assert_never, overload, override
5
+ from typing import (
6
+ TYPE_CHECKING,
7
+ Any,
8
+ Self,
9
+ TypedDict,
10
+ TypeVar,
11
+ assert_never,
12
+ overload,
13
+ override,
14
+ )
6
15
  from zoneinfo import ZoneInfo
7
16
 
8
17
  from whenever import Date, DateDelta, PlainDateTime, Time, TimeDelta, ZonedDateTime
@@ -16,8 +25,14 @@ from utilities.zoneinfo import UTC, ensure_time_zone, get_time_zone_name
16
25
  if TYPE_CHECKING:
17
26
  from utilities.types import TimeZoneLike
18
27
 
28
+ _TDate_co = TypeVar("_TDate_co", bound=Date | dt.date, covariant=True)
29
+ _TTime_co = TypeVar("_TTime_co", bound=Time | dt.time, covariant=True)
30
+ _TDateTime_co = TypeVar(
31
+ "_TDateTime_co", bound=ZonedDateTime | dt.datetime, covariant=True
32
+ )
19
33
 
20
- class _PeriodAsDict[T: Date | Time | ZonedDateTime | dt.date | dt.time | dt.datetime](
34
+
35
+ class PeriodDict[T: Date | Time | ZonedDateTime | dt.date | dt.time | dt.datetime](
21
36
  TypedDict
22
37
  ):
23
38
  start: T
@@ -85,7 +100,7 @@ class DatePeriod:
85
100
  return f"{fc(start)}-{fc(end)}"
86
101
 
87
102
  @classmethod
88
- def from_dict(cls, mapping: _PeriodAsDict[Date | dt.date], /) -> Self:
103
+ def from_dict(cls, mapping: PeriodDict[_TDate_co], /) -> Self:
89
104
  """Convert the dictionary to a period."""
90
105
  match mapping["start"]:
91
106
  case Date() as start:
@@ -109,9 +124,9 @@ class DatePeriod:
109
124
  """Replace elements of the period."""
110
125
  return replace_non_sentinel(self, start=start, end=end)
111
126
 
112
- def to_dict(self) -> _PeriodAsDict[Date]:
127
+ def to_dict(self) -> PeriodDict[Date]:
113
128
  """Convert the period to a dictionary."""
114
- return _PeriodAsDict(start=self.start, end=self.end)
129
+ return PeriodDict(start=self.start, end=self.end)
115
130
 
116
131
 
117
132
  @dataclass(repr=False, order=True, unsafe_hash=True, kw_only=False)
@@ -140,7 +155,7 @@ class TimePeriod:
140
155
  return DatePeriod(start, end).at((self.start, self.end), time_zone=time_zone)
141
156
 
142
157
  @classmethod
143
- def from_dict(cls, mapping: _PeriodAsDict[Time | dt.time], /) -> Self:
158
+ def from_dict(cls, mapping: PeriodDict[_TTime_co], /) -> Self:
144
159
  """Convert the dictionary to a period."""
145
160
  match mapping["start"]:
146
161
  case Time() as start:
@@ -164,9 +179,9 @@ class TimePeriod:
164
179
  """Replace elements of the period."""
165
180
  return replace_non_sentinel(self, start=start, end=end)
166
181
 
167
- def to_dict(self) -> _PeriodAsDict[Time]:
182
+ def to_dict(self) -> PeriodDict[Time]:
168
183
  """Convert the period to a dictionary."""
169
- return _PeriodAsDict(start=self.start, end=self.end)
184
+ return PeriodDict(start=self.start, end=self.end)
170
185
 
171
186
 
172
187
  @dataclass(repr=False, order=True, unsafe_hash=True, kw_only=False)
@@ -271,7 +286,7 @@ class ZonedDateTimePeriod:
271
286
  return f"{fc(start.to_plain())}-{fc(end, fmt='%Y%m%dT%H')}"
272
287
 
273
288
  @classmethod
274
- def from_dict(cls, mapping: _PeriodAsDict[ZonedDateTime | dt.datetime], /) -> Self:
289
+ def from_dict(cls, mapping: PeriodDict[_TDateTime_co], /) -> Self:
275
290
  """Convert the dictionary to a period."""
276
291
  match mapping["start"]:
277
292
  case ZonedDateTime() as start:
@@ -303,9 +318,9 @@ class ZonedDateTimePeriod:
303
318
  """The time zone of the period."""
304
319
  return ZoneInfo(self.start.tz)
305
320
 
306
- def to_dict(self) -> _PeriodAsDict[ZonedDateTime]:
321
+ def to_dict(self) -> PeriodDict[ZonedDateTime]:
307
322
  """Convert the period to a dictionary."""
308
- return _PeriodAsDict(start=self.start, end=self.end)
323
+ return PeriodDict(start=self.start, end=self.end)
309
324
 
310
325
  def to_tz(self, time_zone: TimeZoneLike, /) -> Self:
311
326
  """Convert the time zone."""
@@ -346,4 +361,10 @@ class _PeriodExactEqArgumentsError(PeriodError):
346
361
  return f"Invalid arguments; got {self.args}"
347
362
 
348
363
 
349
- __all__ = ["DatePeriod", "PeriodError", "TimePeriod", "ZonedDateTimePeriod"]
364
+ __all__ = [
365
+ "DatePeriod",
366
+ "PeriodDict",
367
+ "PeriodError",
368
+ "TimePeriod",
369
+ "ZonedDateTimePeriod",
370
+ ]
@@ -386,7 +386,7 @@ class RedisKey[T]:
386
386
  match result: # skipif-ci-and-not-linux
387
387
  case 0 | 1 as value:
388
388
  return bool(value)
389
- case _ as never:
389
+ case never:
390
390
  assert_never(never)
391
391
 
392
392
  async def get(self, redis: Redis, /) -> T:
@@ -561,7 +561,7 @@ async def publish[T](
561
561
  raise PublishError(data=data)
562
562
  case _, Callable():
563
563
  data_use = serializer(data)
564
- case _ as never:
564
+ case never:
565
565
  assert_never(never)
566
566
  async with timeout_td(timeout): # skipif-ci-and-not-linux
567
567
  response = await redis.publish(channel, data_use) # skipif-ci-and-not-linux
@@ -710,7 +710,7 @@ async def subscribe[T](
710
710
  def transform(message: _RedisMessage, /) -> T:
711
711
  return deserialize(message["data"])
712
712
 
713
- case _ as never:
713
+ case never:
714
714
  assert_never(never)
715
715
 
716
716
  task = create_task( # skipif-ci-and-not-linux
@@ -166,7 +166,7 @@ async def check_engine(
166
166
  query = "select * from all_objects"
167
167
  case "sqlite":
168
168
  query = "select * from sqlite_master where type='table'"
169
- case _ as never:
169
+ case never:
170
170
  assert_never(never)
171
171
  statement = text(query)
172
172
  async with yield_connection(engine, timeout=timeout, error=error) as conn:
@@ -312,7 +312,7 @@ def create_engine(
312
312
  return sqlalchemy.create_engine(url, poolclass=poolclass)
313
313
  case True:
314
314
  return sqlalchemy.ext.asyncio.create_async_engine(url, poolclass=poolclass)
315
- case _ as never:
315
+ case never:
316
316
  assert_never(never)
317
317
 
318
318
 
@@ -339,7 +339,7 @@ async def ensure_tables_created(
339
339
  match = "ORA-00955: name is already used by an existing object"
340
340
  case "sqlite":
341
341
  match = "table .* already exists"
342
- case _ as never:
342
+ case never:
343
343
  assert_never(never)
344
344
  async with yield_connection(engine, timeout=timeout, error=error) as conn:
345
345
  for table in tables:
@@ -368,7 +368,7 @@ async def ensure_tables_dropped(
368
368
  match = "ORA-00942: table or view does not exist"
369
369
  case "sqlite":
370
370
  match = "no such table"
371
- case _ as never:
371
+ case never:
372
372
  assert_never(never)
373
373
  async with yield_connection(engine, timeout=timeout, error=error) as conn:
374
374
  for table in tables:
@@ -493,7 +493,7 @@ def get_chunk_size(
493
493
  case int() as num_cols:
494
494
  size = floor(chunk_size_frac * max_params / num_cols)
495
495
  return max(size, 1)
496
- case _ as never:
496
+ case never:
497
497
  assert_never(never)
498
498
 
499
499
 
@@ -777,7 +777,7 @@ def _normalize_upsert_item(
777
777
  yield _NormalizedItem(mapping=values, table=norm.table)
778
778
  case "all":
779
779
  yield from normalized
780
- case _ as never:
780
+ case never:
781
781
  assert_never(never)
782
782
 
783
783
 
@@ -890,7 +890,7 @@ def _upsert_items_build(
890
890
  insert = sqlite_insert
891
891
  case "mssql" | "mysql" | "oracle" as dialect: # pragma: no cover
892
892
  raise NotImplementedError(dialect)
893
- case _ as never:
893
+ case never:
894
894
  assert_never(never)
895
895
  ins = insert(table).values(values)
896
896
  primary_key = cast("Any", table.primary_key)
@@ -912,7 +912,7 @@ def _upsert_items_apply_on_conflict_do_update(
912
912
  columns = merge_sets(*values)
913
913
  case "all":
914
914
  columns = {c.name for c in insert.excluded}
915
- case _ as never:
915
+ case never:
916
916
  assert_never(never)
917
917
  set_ = {c: getattr(insert.excluded, c) for c in columns}
918
918
  match insert:
@@ -920,7 +920,7 @@ def _upsert_items_apply_on_conflict_do_update(
920
920
  return insert.on_conflict_do_update(constraint=primary_key, set_=set_)
921
921
  case sqlite_Insert():
922
922
  return insert.on_conflict_do_update(index_elements=primary_key, set_=set_)
923
- case _ as never:
923
+ case never:
924
924
  assert_never(never)
925
925
 
926
926
 
@@ -1029,7 +1029,7 @@ def _get_dialect_max_params(
1029
1029
  ):
1030
1030
  dialect = _get_dialect(engine_or_conn)
1031
1031
  return _get_dialect_max_params(dialect)
1032
- case _ as never:
1032
+ case never:
1033
1033
  assert_never(never)
1034
1034
 
1035
1035