dycw-utilities 0.151.7__tar.gz → 0.151.8__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.7 → dycw_utilities-0.151.8}/PKG-INFO +1 -1
  2. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/pyproject.toml +4 -3
  3. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_platform.py +3 -3
  4. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_typed_settings.py +1 -1
  5. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/__init__.py +1 -1
  6. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/atomicwrites.py +1 -1
  7. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/click.py +12 -12
  8. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/concurrent.py +1 -1
  9. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/contextlib.py +1 -1
  10. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/dataclasses.py +4 -4
  11. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/enum.py +2 -2
  12. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/errors.py +1 -1
  13. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/eventkit.py +2 -2
  14. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/functions.py +1 -1
  15. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/inflect.py +1 -1
  16. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/iterables.py +6 -6
  17. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/json.py +1 -1
  18. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/libcst.py +6 -6
  19. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/math.py +3 -3
  20. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/more_itertools.py +2 -2
  21. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/orjson.py +5 -5
  22. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/os.py +2 -2
  23. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/pathlib.py +3 -3
  24. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/period.py +2 -2
  25. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/platform.py +3 -3
  26. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/polars.py +14 -14
  27. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/postgres.py +3 -3
  28. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/pqdm.py +1 -1
  29. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/pytest.py +1 -1
  30. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/pytest_regressions.py +1 -1
  31. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/re.py +1 -1
  32. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/sqlalchemy_polars.py +1 -1
  33. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/string.py +1 -1
  34. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/typed_settings.py +1 -1
  35. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/version.py +1 -1
  36. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/whenever.py +19 -19
  37. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/zoneinfo.py +1 -1
  38. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/.gitignore +0 -0
  39. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/LICENSE +0 -0
  40. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/README.md +0 -0
  41. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/__init__.py +0 -0
  42. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/conftest.py +0 -0
  43. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/__init__.py +0 -0
  44. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_missing/__init__.py +0 -0
  45. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_missing/module.py +0 -0
  46. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_with/__init__.py +0 -0
  47. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_with/outer_1.py +0 -0
  48. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_with/outer_2.py +0 -0
  49. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  50. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  51. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  52. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  53. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_without/__init__.py +0 -0
  54. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_without/module_1.py +0 -0
  55. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/package_without/module_2.py +0 -0
  56. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/standalone.py +0 -0
  57. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/modules/with_imports.py +0 -0
  58. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  59. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  60. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  61. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  62. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  63. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  64. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  65. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  66. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_altair.py +0 -0
  67. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_asyncio.py +0 -0
  68. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_atomicwrites.py +0 -0
  69. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_atools.py +0 -0
  70. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_cachetools.py +0 -0
  71. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_click.py +0 -0
  72. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_concurrent.py +0 -0
  73. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_contextlib.py +0 -0
  74. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_contextvars.py +0 -0
  75. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_cryptography.py +0 -0
  76. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_cvxpy.py +0 -0
  77. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_dataclasses.py +0 -0
  78. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_dnspython.py +0 -0
  79. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_enum.py +0 -0
  80. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_errors.py +0 -0
  81. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_eventkit.py +0 -0
  82. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_fastapi.py +0 -0
  83. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_fpdf2.py +0 -0
  84. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_functions.py +0 -0
  85. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_functools.py +0 -0
  86. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_getpass.py +0 -0
  87. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_gzip.py +0 -0
  88. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_hashlib.py +0 -0
  89. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_http.py +0 -0
  90. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_hypothesis.py +0 -0
  91. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_importlib.py +0 -0
  92. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_inflect.py +0 -0
  93. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_ipython.py +0 -0
  94. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_iterables.py +0 -0
  95. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_json.py +0 -0
  96. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_jupyter.py +0 -0
  97. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_libcst.py +0 -0
  98. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_lightweight_charts.py +0 -0
  99. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_logging.py +0 -0
  100. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_math.py +0 -0
  101. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_memory_profiler.py +0 -0
  102. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_modules.py +0 -0
  103. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_more_itertools.py +0 -0
  104. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_numpy.py +0 -0
  105. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_objects/__init__.py +0 -0
  106. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_objects/objects.py +0 -0
  107. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_operator.py +0 -0
  108. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_optuna.py +0 -0
  109. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_orjson.py +0 -0
  110. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_os.py +0 -0
  111. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_parse.py +0 -0
  112. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_pathlib.py +0 -0
  113. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_period.py +0 -0
  114. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_pickle.py +0 -0
  115. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_polars.py +0 -0
  116. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_polars_ols.py +0 -0
  117. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_postgres.py +0 -0
  118. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_pottery.py +0 -0
  119. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_pqdm.py +0 -0
  120. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_psutil.py +0 -0
  121. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_pyinstrument.py +0 -0
  122. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_pytest.py +0 -0
  123. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_pytest_randomly.py +0 -0
  124. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_pytest_regressions.py +0 -0
  125. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_random.py +0 -0
  126. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_re.py +0 -0
  127. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_redis.py +0 -0
  128. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_reprlib.py +0 -0
  129. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_scipy.py +0 -0
  130. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_sentinel.py +0 -0
  131. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_shelve.py +0 -0
  132. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_slack_sdk.py +0 -0
  133. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_socket.py +0 -0
  134. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_sqlalchemy.py +0 -0
  135. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_sqlalchemy_polars.py +0 -0
  136. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_statsmodels.py +0 -0
  137. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_string.py +0 -0
  138. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_tempfile.py +0 -0
  139. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_text.py +0 -0
  140. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_threading.py +0 -0
  141. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_timer.py +0 -0
  142. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_traceback.py +0 -0
  143. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_types.py +0 -0
  144. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_typing.py +0 -0
  145. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_typing_funcs/__init__.py +0 -0
  146. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_typing_funcs/no_future.py +0 -0
  147. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_typing_funcs/with_future.py +0 -0
  148. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_tzdata.py +0 -0
  149. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_tzlocal.py +0 -0
  150. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_uuid.py +0 -0
  151. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_version.py +0 -0
  152. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_warnings.py +0 -0
  153. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_whenever.py +0 -0
  154. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_yield_access/__init__.py +0 -0
  155. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_yield_access/script.py +0 -0
  156. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_yield_access/script.sh +0 -0
  157. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_zipfile.py +0 -0
  158. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/tests/test_zoneinfo.py +0 -0
  159. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/altair.py +0 -0
  160. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/asyncio.py +0 -0
  161. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/atools.py +0 -0
  162. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/cachetools.py +0 -0
  163. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/contextvars.py +0 -0
  164. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/cryptography.py +0 -0
  165. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/cvxpy.py +0 -0
  166. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/dnspython.py +0 -0
  167. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/fastapi.py +0 -0
  168. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/fpdf2.py +0 -0
  169. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/functools.py +0 -0
  170. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/getpass.py +0 -0
  171. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/gzip.py +0 -0
  172. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/hashlib.py +0 -0
  173. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/http.py +0 -0
  174. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/hypothesis.py +0 -0
  175. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/importlib.py +0 -0
  176. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/ipython.py +0 -0
  177. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/jupyter.py +0 -0
  178. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/lightweight_charts.py +0 -0
  179. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/logging.py +0 -0
  180. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/memory_profiler.py +0 -0
  181. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/modules.py +0 -0
  182. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/numpy.py +0 -0
  183. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/operator.py +0 -0
  184. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/optuna.py +0 -0
  185. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/parse.py +0 -0
  186. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/pickle.py +0 -0
  187. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/polars_ols.py +0 -0
  188. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/pottery.py +0 -0
  189. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/psutil.py +0 -0
  190. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/py.typed +0 -0
  191. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/pyinstrument.py +0 -0
  192. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/pytest_plugins/__init__.py +0 -0
  193. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
  194. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
  195. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/random.py +0 -0
  196. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/redis.py +0 -0
  197. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/reprlib.py +0 -0
  198. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/scipy.py +0 -0
  199. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/sentinel.py +0 -0
  200. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/shelve.py +0 -0
  201. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/slack_sdk.py +0 -0
  202. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/socket.py +0 -0
  203. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/sqlalchemy.py +0 -0
  204. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/statsmodels.py +0 -0
  205. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/tempfile.py +0 -0
  206. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/text.py +0 -0
  207. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/threading.py +0 -0
  208. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/timer.py +0 -0
  209. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/traceback.py +0 -0
  210. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/types.py +0 -0
  211. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/typing.py +0 -0
  212. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/tzdata.py +0 -0
  213. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/tzlocal.py +0 -0
  214. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/uuid.py +0 -0
  215. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/warnings.py +0 -0
  216. {dycw_utilities-0.151.7 → dycw_utilities-0.151.8}/src/utilities/zipfile.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.151.7
3
+ Version: 0.151.8
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.7"
235
+ version = "0.151.8"
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.7"
268
+ current_version = "0.151.8"
269
269
 
270
270
  [[tool.bumpversion.files]]
271
271
  filename = "src/utilities/__init__.py"
@@ -295,7 +295,7 @@ directory = ".coverage/html"
295
295
  exclude_also = [
296
296
  "@overload",
297
297
  "assert_never",
298
- "case _ as never:",
298
+ "case never:",
299
299
  "if TYPE_CHECKING:",
300
300
  ]
301
301
  fail_under = 100.0
@@ -352,6 +352,7 @@ reportUnknownArgumentType = false
352
352
  reportUnknownMemberType = false
353
353
  reportUnknownParameterType = false
354
354
  reportUnknownVariableType = false
355
+ reportUnnecessaryComparison = false
355
356
  reportUnnecessaryTypeIgnoreComment = true
356
357
  reportUnusedCallResult = true
357
358
  reportUnusedImport = false
@@ -38,7 +38,7 @@ class TestGetMaxPID:
38
38
  assert isinstance(result, int)
39
39
  case "linux": # skipif-not-linux
40
40
  assert isinstance(result, int)
41
- case _ as never:
41
+ case never:
42
42
  assert_never(never)
43
43
 
44
44
  def test_constant(self) -> None:
@@ -49,7 +49,7 @@ class TestGetMaxPID:
49
49
  assert isinstance(MAX_PID, int)
50
50
  case "linux": # skipif-not-linux
51
51
  assert isinstance(MAX_PID, int)
52
- case _ as never:
52
+ case never:
53
53
  assert_never(never)
54
54
 
55
55
 
@@ -93,5 +93,5 @@ class TestMaybeYieldLowerCase:
93
93
  assert all(text == text.lower() for text in result)
94
94
  case "linux": # skipif-not-linux
95
95
  assert result == text
96
- case _ as never:
96
+ case never:
97
97
  assert_never(never)
@@ -211,7 +211,7 @@ class TestExtendedTSConverter:
211
211
  expected = Path.cwd().joinpath(path)
212
212
  case False:
213
213
  expected = Path(path)
214
- case _ as never:
214
+ case never:
215
215
  assert_never(never)
216
216
  assert settings.value == expected
217
217
 
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.151.7"
3
+ __version__ = "0.151.8"
@@ -57,7 +57,7 @@ def move(
57
57
  raise ImpossibleCaseError(
58
58
  case=[f"{source.is_file()=}", f"{source.is_dir()=}"]
59
59
  )
60
- case _ as never:
60
+ case never:
61
61
  assert_never(never)
62
62
 
63
63
 
@@ -85,7 +85,7 @@ class Date(ParamType):
85
85
  return whenever.Date.parse_common_iso(value)
86
86
  except ValueError as error:
87
87
  self.fail(str(error), param, ctx)
88
- case _ as never:
88
+ case never:
89
89
  assert_never(never)
90
90
 
91
91
 
@@ -111,7 +111,7 @@ class DateDelta(ParamType):
111
111
  return whenever.DateDelta.parse_common_iso(value)
112
112
  except ValueError as error:
113
113
  self.fail(str(error), param, ctx)
114
- case _ as never:
114
+ case never:
115
115
  assert_never(never)
116
116
 
117
117
 
@@ -137,7 +137,7 @@ class DateTimeDelta(ParamType):
137
137
  return whenever.DateTimeDelta.parse_common_iso(value)
138
138
  except ValueError as error:
139
139
  self.fail(str(error), param, ctx)
140
- case _ as never:
140
+ case never:
141
141
  assert_never(never)
142
142
 
143
143
 
@@ -196,7 +196,7 @@ class IPv4Address(ParamType):
196
196
  return parse_object(ipaddress.IPv4Address, value)
197
197
  except ParseObjectError as error:
198
198
  self.fail(str(error), param, ctx)
199
- case _ as never:
199
+ case never:
200
200
  assert_never(never)
201
201
 
202
202
 
@@ -222,7 +222,7 @@ class IPv6Address(ParamType):
222
222
  return parse_object(ipaddress.IPv6Address, value)
223
223
  except ParseObjectError as error:
224
224
  self.fail(str(error), param, ctx)
225
- case _ as never:
225
+ case never:
226
226
  assert_never(never)
227
227
 
228
228
 
@@ -248,7 +248,7 @@ class MonthDay(ParamType):
248
248
  return whenever.MonthDay.parse_common_iso(value)
249
249
  except ValueError as error:
250
250
  self.fail(str(error), param, ctx)
251
- case _ as never:
251
+ case never:
252
252
  assert_never(never)
253
253
 
254
254
 
@@ -274,7 +274,7 @@ class PlainDateTime(ParamType):
274
274
  return whenever.PlainDateTime.parse_common_iso(value)
275
275
  except ValueError as error:
276
276
  self.fail(str(error), param, ctx)
277
- case _ as never:
277
+ case never:
278
278
  assert_never(never)
279
279
 
280
280
 
@@ -300,7 +300,7 @@ class Time(ParamType):
300
300
  return whenever.Time.parse_common_iso(value)
301
301
  except ValueError as error:
302
302
  self.fail(str(error), param, ctx)
303
- case _ as never:
303
+ case never:
304
304
  assert_never(never)
305
305
 
306
306
 
@@ -326,7 +326,7 @@ class TimeDelta(ParamType):
326
326
  return whenever.TimeDelta.parse_common_iso(value)
327
327
  except ValueError as error:
328
328
  self.fail(str(error), param, ctx)
329
- case _ as never:
329
+ case never:
330
330
  assert_never(never)
331
331
 
332
332
 
@@ -352,7 +352,7 @@ class UUID(ParamType):
352
352
  return uuid.UUID(value)
353
353
  except ValueError as error:
354
354
  self.fail(str(error), param, ctx)
355
- case _ as never:
355
+ case never:
356
356
  assert_never(never)
357
357
 
358
358
 
@@ -378,7 +378,7 @@ class YearMonth(ParamType):
378
378
  return whenever.YearMonth.parse_common_iso(value)
379
379
  except ValueError as error:
380
380
  self.fail(str(error), param, ctx)
381
- case _ as never:
381
+ case never:
382
382
  assert_never(never)
383
383
 
384
384
 
@@ -404,7 +404,7 @@ class ZonedDateTime(ParamType):
404
404
  return whenever.ZonedDateTime.parse_common_iso(value)
405
405
  except ValueError as error:
406
406
  self.fail(str(error), param, ctx)
407
- case _ as never:
407
+ case never:
408
408
  assert_never(never)
409
409
 
410
410
 
@@ -84,7 +84,7 @@ def concurrent_starmap[T](
84
84
  initargs=initargs,
85
85
  ) as pool:
86
86
  result = pool.map(apply, iterable, timeout=timeout, chunksize=chunksize)
87
- case _ as never:
87
+ case never:
88
88
  assert_never(never)
89
89
  return list(result)
90
90
 
@@ -210,7 +210,7 @@ def _make_handler(
210
210
  _ = loop.call_soon_threadsafe(
211
211
  create_task, agcm.__aexit__(None, None, None)
212
212
  )
213
- case _ as never:
213
+ case never:
214
214
  assert_never(never)
215
215
  if callable(orig_handler): # pragma: no cover
216
216
  orig_handler(signum, frame)
@@ -214,7 +214,7 @@ def is_nullable_lt[T: SupportsLT](x: T | None, y: T | None, /) -> bool | None:
214
214
  return True
215
215
  case 0:
216
216
  return None
217
- case _ as never:
217
+ case never:
218
218
  assert_never(never)
219
219
 
220
220
 
@@ -520,7 +520,7 @@ def parse_dataclass[T: Dataclass](
520
520
  )
521
521
  case Mapping() as keys_to_serializes:
522
522
  ...
523
- case _ as never:
523
+ case never:
524
524
  assert_never(never)
525
525
  fields = list(
526
526
  yield_fields(
@@ -1002,7 +1002,7 @@ def _empty_error_str_core(
1002
1002
  return f"any field starting with {key!r}"
1003
1003
  case True, False:
1004
1004
  return f"any field starting with {key!r} (modulo case)"
1005
- case _ as never:
1005
+ case never:
1006
1006
  assert_never(never)
1007
1007
 
1008
1008
 
@@ -1043,7 +1043,7 @@ def _non_unique_error_str_core(
1043
1043
  head_msg = f"exactly one field starting with {key!r}"
1044
1044
  case True, False:
1045
1045
  head_msg = f"exactly one field starting with {key!r} (modulo case)"
1046
- case _ as never:
1046
+ case never:
1047
1047
  assert_never(never)
1048
1048
  return f"{head_msg}; got {first!r}, {second!r} and perhaps more"
1049
1049
 
@@ -95,7 +95,7 @@ def parse_enum[E: Enum](
95
95
  by_name=by_name.name,
96
96
  by_value=by_value.name,
97
97
  )
98
- case _ as never:
98
+ case never:
99
99
  assert_never(never)
100
100
 
101
101
 
@@ -116,7 +116,7 @@ def _parse_enum_one[E: Enum](
116
116
  names = [e.name for e in enum]
117
117
  case "values":
118
118
  names = [ensure_str(e.value) for e in enum]
119
- case _ as never:
119
+ case never:
120
120
  assert_never(never)
121
121
  try:
122
122
  name = one_str(names, value, case_sensitive=case_sensitive)
@@ -46,7 +46,7 @@ def repr_error(error: MaybeType[BaseException], /) -> str:
46
46
  return f"{error_obj.__class__.__name__}({error_obj})"
47
47
  case type() as error_cls:
48
48
  return error_cls.__name__
49
- case _ as never:
49
+ case never:
50
50
  assert_never(never)
51
51
 
52
52
 
@@ -359,9 +359,9 @@ def lift_listener[F1: Callable[..., MaybeCoro[None]], F2: Callable](
359
359
  error_typed(event, exc)
360
360
 
361
361
  lifted = listener_have_error_async
362
- case _ as never:
362
+ case never:
363
363
  assert_never(never)
364
- case _ as never:
364
+ case never:
365
365
  assert_never(never)
366
366
 
367
367
  if decorators is not None:
@@ -960,7 +960,7 @@ def to_bool(
960
960
  return bool_
961
961
  case Callable() as func:
962
962
  return to_bool(bool_=func())
963
- case _ as never:
963
+ case never:
964
964
  assert_never(never)
965
965
 
966
966
 
@@ -15,7 +15,7 @@ def counted_noun(obj: int | Sized, noun: str, /) -> str:
15
15
  ...
16
16
  case Sized() as sized:
17
17
  count = len(sized)
18
- case _ as never:
18
+ case never:
19
19
  assert_never(never)
20
20
  word = cast("Word", noun)
21
21
  sin_or_plu = _ENGINE.plural_noun(word, count=count)
@@ -295,7 +295,7 @@ class CheckIterablesEqualError[T](Exception):
295
295
  yield "right was longer"
296
296
  case None:
297
297
  pass
298
- case _ as never:
298
+ case never:
299
299
  assert_never(never)
300
300
 
301
301
 
@@ -690,7 +690,7 @@ def cmp_nullable[T: SupportsLT](x: T | None, y: T | None, /) -> Sign:
690
690
  return 1
691
691
  case _, _:
692
692
  return cast("Sign", (x > y) - (x < y))
693
- case _ as never:
693
+ case never:
694
694
  assert_never(never)
695
695
 
696
696
 
@@ -1068,7 +1068,7 @@ def one_str(
1068
1068
  it = (t for t in as_list if t.startswith(text))
1069
1069
  case True, False:
1070
1070
  it = (t for t in as_list if t.lower().startswith(text.lower()))
1071
- case _ as never:
1071
+ case never:
1072
1072
  assert_never(never)
1073
1073
  try:
1074
1074
  return one(it)
@@ -1109,7 +1109,7 @@ class OneStrEmptyError(OneStrError):
1109
1109
  tail = f"any string starting with {self.text!r}"
1110
1110
  case True, False:
1111
1111
  tail = f"any string starting with {self.text!r} (modulo case)"
1112
- case _ as never:
1112
+ case never:
1113
1113
  assert_never(never)
1114
1114
  return f"{head} {tail}"
1115
1115
 
@@ -1131,7 +1131,7 @@ class OneStrNonUniqueError(OneStrError):
1131
1131
  mid = f"exactly one string starting with {self.text!r}"
1132
1132
  case True, False:
1133
1133
  mid = f"exactly one string starting with {self.text!r} (modulo case)"
1134
- case _ as never:
1134
+ case never:
1135
1135
  assert_never(never)
1136
1136
  return f"{head} {mid}; got {self.first!r}, {self.second!r} and perhaps more"
1137
1137
 
@@ -1382,7 +1382,7 @@ def _sort_iterable_cmp_floats(x: float, y: float, /) -> Sign:
1382
1382
  return -1
1383
1383
  case False, False:
1384
1384
  return cast("Sign", (x > y) - (x < y))
1385
- case _ as never:
1385
+ case never:
1386
1386
  assert_never(never)
1387
1387
 
1388
1388
 
@@ -36,7 +36,7 @@ def run_prettier(source: bytes | str | Path, /) -> bytes | str | None:
36
36
  with writer(path, overwrite=True) as temp:
37
37
  _ = temp.write_bytes(result)
38
38
  return None
39
- case _ as never:
39
+ case never:
40
40
  assert_never(never)
41
41
 
42
42
 
@@ -54,7 +54,7 @@ def generate_import_from(
54
54
  case _, str():
55
55
  alias = ImportAlias(name=Name(name), asname=AsName(Name(asname)))
56
56
  names = [alias]
57
- case _ as never:
57
+ case never:
58
58
  assert_never(never)
59
59
  return ImportFrom(module=split_dotted_str(module), names=names)
60
60
 
@@ -92,9 +92,9 @@ def parse_import(import_: Import | ImportFrom, /) -> Sequence[_ParseImportOutput
92
92
  return [_parse_import_from_one(module, n) for n in names]
93
93
  case ImportStar():
94
94
  return [_ParseImportOutput(module=module, name="*")]
95
- case _ as never:
95
+ case never:
96
96
  assert_never(never)
97
- case _ as never:
97
+ case never:
98
98
  assert_never(never)
99
99
 
100
100
 
@@ -108,7 +108,7 @@ def _parse_import_from_one(module: str, alias: ImportAlias, /) -> _ParseImportOu
108
108
  return _ParseImportOutput(module=module, name=name)
109
109
  case Attribute() as attr:
110
110
  raise _ParseImportAliasError(module=module, attr=attr)
111
- case _ as never:
111
+ case never:
112
112
  assert_never(never)
113
113
 
114
114
 
@@ -162,7 +162,7 @@ def join_dotted_str(name_or_attr: Name | Attribute, /) -> str:
162
162
  curr = value
163
163
  case BaseExpression(): # pragma: no cover
164
164
  raise ImpossibleCaseError(case=[f"{curr=}"])
165
- case _ as never:
165
+ case never:
166
166
  assert_never(never)
167
167
  return ".".join(reversed(parts))
168
168
 
@@ -180,7 +180,7 @@ def render_module(source: str | Module, /) -> str:
180
180
  return text
181
181
  case Module() as module:
182
182
  return render_module(module.code)
183
- case _ as never:
183
+ case never:
184
184
  assert_never(never)
185
185
 
186
186
 
@@ -731,7 +731,7 @@ def round_(
731
731
  return 0
732
732
  case -1:
733
733
  return floor(x)
734
- case _ as never:
734
+ case never:
735
735
  assert_never(never)
736
736
  case "standard-tie-floor":
737
737
  return _round_tie_standard(x, "floor", rel_tol=rel_tol, abs_tol=abs_tol)
@@ -743,7 +743,7 @@ def round_(
743
743
  )
744
744
  case "standard-tie-away-zero":
745
745
  return _round_tie_standard(x, "away-zero", rel_tol=rel_tol, abs_tol=abs_tol)
746
- case _ as never:
746
+ case never:
747
747
  assert_never(never)
748
748
 
749
749
 
@@ -876,7 +876,7 @@ def sign(
876
876
  if is_negative(x, rel_tol=rel_tol, abs_tol=abs_tol):
877
877
  return -1
878
878
  return 0
879
- case _ as never:
879
+ case never:
880
880
  assert_never(never)
881
881
 
882
882
 
@@ -206,7 +206,7 @@ def bucket_mapping[T, U, UH: Hashable](
206
206
  return {k: frozenset(map(pre, v)) for k, v in mapping.items()}
207
207
  case Callable(), "unique":
208
208
  return _bucket_mapping_unique({k: map(pre, v) for k, v in mapping.items()})
209
- case _ as never:
209
+ case never:
210
210
  assert_never(never)
211
211
 
212
212
 
@@ -374,7 +374,7 @@ def _yield_splits2[T](
374
374
  len_tail = max(len_win - head, 0)
375
375
  if len_tail >= 1:
376
376
  yield window, head, len_tail
377
- case _ as never:
377
+ case never:
378
378
  assert_never(never)
379
379
 
380
380
 
@@ -564,7 +564,7 @@ def _object_hook(
564
564
  )
565
565
  for k, v in mapping.items()
566
566
  }
567
- case _ as never:
567
+ case never:
568
568
  assert_never(never)
569
569
 
570
570
 
@@ -1006,7 +1006,7 @@ class GetLogRecordsOutput:
1006
1006
  for r in records
1007
1007
  if (r.func_name is not None) and search(func_name, r.func_name)
1008
1008
  ]
1009
- case _ as never:
1009
+ case never:
1010
1010
  assert_never(never)
1011
1011
  if extra is not None:
1012
1012
  match extra:
@@ -1019,7 +1019,7 @@ class GetLogRecordsOutput:
1019
1019
  if (r.extra is not None)
1020
1020
  and set(r.extra).issuperset(always_iterable(keys))
1021
1021
  ]
1022
- case _ as never:
1022
+ case never:
1023
1023
  assert_never(never)
1024
1024
  if log_file is not None:
1025
1025
  match log_file:
@@ -1034,7 +1034,7 @@ class GetLogRecordsOutput:
1034
1034
  if (r.log_file is not None)
1035
1035
  and search(str(log_file), str(r.log_file))
1036
1036
  ]
1037
- case _ as never:
1037
+ case never:
1038
1038
  assert_never(never)
1039
1039
  if log_file_line_num is not None:
1040
1040
  match log_file_line_num:
@@ -1048,7 +1048,7 @@ class GetLogRecordsOutput:
1048
1048
  records = [
1049
1049
  r for r in records if r.log_file_line_num == log_file_line_num
1050
1050
  ]
1051
- case _ as never:
1051
+ case never:
1052
1052
  assert_never(never)
1053
1053
  if min_log_file_line_num is not None:
1054
1054
  records = [
@@ -48,7 +48,7 @@ def get_cpu_use(*, n: IntOrAll = "all") -> int:
48
48
  raise GetCPUUseError(n=n)
49
49
  case "all":
50
50
  return CPU_COUNT
51
- case _ as never:
51
+ case never:
52
52
  assert_never(never)
53
53
 
54
54
 
@@ -105,7 +105,7 @@ def get_env_var(
105
105
  return None
106
106
  case str(), _:
107
107
  return default
108
- case _ as never:
108
+ case never:
109
109
  assert_never(never)
110
110
  return environ[key_use]
111
111
 
@@ -69,7 +69,7 @@ def get_path(
69
69
  return Path.cwd()
70
70
  case Callable() as func:
71
71
  return get_path(path=func())
72
- case _ as never:
72
+ case never:
73
73
  assert_never(never)
74
74
 
75
75
 
@@ -164,7 +164,7 @@ def get_root(*, path: MaybeCallablePathLike | None = None) -> Path:
164
164
  raise ImpossibleCaseError( # pragma: no cover
165
165
  case=[f"{repo=}", f"{package=}"]
166
166
  )
167
- case _ as never:
167
+ case never:
168
168
  assert_never(never)
169
169
 
170
170
 
@@ -213,7 +213,7 @@ def get_tail(
213
213
  return _get_tail_core(path, next(iter(matches)))
214
214
  case _, "later":
215
215
  return _get_tail_core(path, next(iter(reversed(matches))))
216
- case _ as never:
216
+ case never:
217
217
  assert_never(never)
218
218
 
219
219
 
@@ -58,7 +58,7 @@ class DatePeriod:
58
58
  start = end = time
59
59
  case Time() as start, Time() as end:
60
60
  ...
61
- case _ as never:
61
+ case never:
62
62
  assert_never(never)
63
63
  tz = ensure_time_zone(time_zone).key
64
64
  return ZonedDateTimePeriod(
@@ -119,7 +119,7 @@ class TimePeriod:
119
119
  start = end = date
120
120
  case Date() as start, Date() as end:
121
121
  ...
122
- case _ as never:
122
+ case never:
123
123
  assert_never(never)
124
124
  return DatePeriod(start, end).at((self.start, self.end), time_zone=time_zone)
125
125
 
@@ -61,7 +61,7 @@ def get_max_pid() -> int | None:
61
61
  return int(path.read_text())
62
62
  except FileNotFoundError: # pragma: no cover
63
63
  return None
64
- case _ as never:
64
+ case never:
65
65
  assert_never(never)
66
66
 
67
67
 
@@ -80,7 +80,7 @@ def get_strftime(text: str, /) -> str:
80
80
  return text
81
81
  case "linux": # skipif-not-linux
82
82
  return sub("%Y", "%4Y", text)
83
- case _ as never:
83
+ case never:
84
84
  assert_never(never)
85
85
 
86
86
 
@@ -96,7 +96,7 @@ def maybe_yield_lower_case(text: Iterable[str], /) -> Iterator[str]:
96
96
  yield from (t.lower() for t in text)
97
97
  case "linux": # skipif-not-linux
98
98
  yield from text
99
- case _ as never:
99
+ case never:
100
100
  assert_never(never)
101
101
 
102
102