dycw-utilities 0.151.7__tar.gz → 0.151.9__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.9}/PKG-INFO +1 -1
  2. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/pyproject.toml +4 -3
  3. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_period.py +38 -16
  4. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_platform.py +3 -3
  5. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_typed_settings.py +1 -1
  6. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_whenever.py +1 -6
  7. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/__init__.py +1 -1
  8. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/atomicwrites.py +1 -1
  9. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/click.py +12 -12
  10. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/concurrent.py +1 -1
  11. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/contextlib.py +1 -1
  12. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/dataclasses.py +4 -4
  13. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/enum.py +2 -2
  14. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/errors.py +1 -1
  15. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/eventkit.py +2 -2
  16. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/functions.py +1 -1
  17. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/hypothesis.py +6 -0
  18. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/inflect.py +1 -1
  19. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/iterables.py +6 -6
  20. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/json.py +1 -1
  21. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/libcst.py +6 -6
  22. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/math.py +3 -3
  23. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/more_itertools.py +2 -2
  24. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/orjson.py +5 -5
  25. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/os.py +2 -2
  26. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/pathlib.py +3 -3
  27. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/period.py +70 -10
  28. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/platform.py +3 -3
  29. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/polars.py +14 -14
  30. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/postgres.py +3 -3
  31. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/pqdm.py +1 -1
  32. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/pytest.py +1 -1
  33. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/pytest_regressions.py +1 -1
  34. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/re.py +1 -1
  35. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/sqlalchemy_polars.py +1 -1
  36. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/string.py +1 -1
  37. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/typed_settings.py +1 -1
  38. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/version.py +1 -1
  39. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/whenever.py +19 -19
  40. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/zoneinfo.py +1 -1
  41. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/.gitignore +0 -0
  42. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/LICENSE +0 -0
  43. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/README.md +0 -0
  44. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/__init__.py +0 -0
  45. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/conftest.py +0 -0
  46. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/__init__.py +0 -0
  47. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_missing/__init__.py +0 -0
  48. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_missing/module.py +0 -0
  49. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_with/__init__.py +0 -0
  50. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_with/outer_1.py +0 -0
  51. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_with/outer_2.py +0 -0
  52. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  53. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  54. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  55. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  56. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_without/__init__.py +0 -0
  57. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_without/module_1.py +0 -0
  58. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/package_without/module_2.py +0 -0
  59. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/standalone.py +0 -0
  60. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/modules/with_imports.py +0 -0
  61. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  62. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  63. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  64. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  65. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  66. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  67. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  68. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  69. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_altair.py +0 -0
  70. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_asyncio.py +0 -0
  71. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_atomicwrites.py +0 -0
  72. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_atools.py +0 -0
  73. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_cachetools.py +0 -0
  74. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_click.py +0 -0
  75. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_concurrent.py +0 -0
  76. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_contextlib.py +0 -0
  77. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_contextvars.py +0 -0
  78. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_cryptography.py +0 -0
  79. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_cvxpy.py +0 -0
  80. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_dataclasses.py +0 -0
  81. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_dnspython.py +0 -0
  82. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_enum.py +0 -0
  83. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_errors.py +0 -0
  84. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_eventkit.py +0 -0
  85. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_fastapi.py +0 -0
  86. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_fpdf2.py +0 -0
  87. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_functions.py +0 -0
  88. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_functools.py +0 -0
  89. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_getpass.py +0 -0
  90. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_gzip.py +0 -0
  91. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_hashlib.py +0 -0
  92. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_http.py +0 -0
  93. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_hypothesis.py +0 -0
  94. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_importlib.py +0 -0
  95. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_inflect.py +0 -0
  96. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_ipython.py +0 -0
  97. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_iterables.py +0 -0
  98. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_json.py +0 -0
  99. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_jupyter.py +0 -0
  100. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_libcst.py +0 -0
  101. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_lightweight_charts.py +0 -0
  102. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_logging.py +0 -0
  103. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_math.py +0 -0
  104. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_memory_profiler.py +0 -0
  105. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_modules.py +0 -0
  106. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_more_itertools.py +0 -0
  107. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_numpy.py +0 -0
  108. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_objects/__init__.py +0 -0
  109. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_objects/objects.py +0 -0
  110. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_operator.py +0 -0
  111. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_optuna.py +0 -0
  112. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_orjson.py +0 -0
  113. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_os.py +0 -0
  114. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_parse.py +0 -0
  115. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_pathlib.py +0 -0
  116. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_pickle.py +0 -0
  117. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_polars.py +0 -0
  118. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_polars_ols.py +0 -0
  119. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_postgres.py +0 -0
  120. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_pottery.py +0 -0
  121. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_pqdm.py +0 -0
  122. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_psutil.py +0 -0
  123. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_pyinstrument.py +0 -0
  124. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_pytest.py +0 -0
  125. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_pytest_randomly.py +0 -0
  126. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_pytest_regressions.py +0 -0
  127. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_random.py +0 -0
  128. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_re.py +0 -0
  129. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_redis.py +0 -0
  130. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_reprlib.py +0 -0
  131. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_scipy.py +0 -0
  132. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_sentinel.py +0 -0
  133. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_shelve.py +0 -0
  134. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_slack_sdk.py +0 -0
  135. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_socket.py +0 -0
  136. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_sqlalchemy.py +0 -0
  137. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_sqlalchemy_polars.py +0 -0
  138. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_statsmodels.py +0 -0
  139. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_string.py +0 -0
  140. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_tempfile.py +0 -0
  141. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_text.py +0 -0
  142. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_threading.py +0 -0
  143. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_timer.py +0 -0
  144. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_traceback.py +0 -0
  145. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_types.py +0 -0
  146. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_typing.py +0 -0
  147. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_typing_funcs/__init__.py +0 -0
  148. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_typing_funcs/no_future.py +0 -0
  149. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_typing_funcs/with_future.py +0 -0
  150. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_tzdata.py +0 -0
  151. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_tzlocal.py +0 -0
  152. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_uuid.py +0 -0
  153. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_version.py +0 -0
  154. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_warnings.py +0 -0
  155. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_yield_access/__init__.py +0 -0
  156. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_yield_access/script.py +0 -0
  157. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_yield_access/script.sh +0 -0
  158. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_zipfile.py +0 -0
  159. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/tests/test_zoneinfo.py +0 -0
  160. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/altair.py +0 -0
  161. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/asyncio.py +0 -0
  162. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/atools.py +0 -0
  163. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/cachetools.py +0 -0
  164. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/contextvars.py +0 -0
  165. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/cryptography.py +0 -0
  166. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/cvxpy.py +0 -0
  167. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/dnspython.py +0 -0
  168. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/fastapi.py +0 -0
  169. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/fpdf2.py +0 -0
  170. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/functools.py +0 -0
  171. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/getpass.py +0 -0
  172. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/gzip.py +0 -0
  173. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/hashlib.py +0 -0
  174. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/http.py +0 -0
  175. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/importlib.py +0 -0
  176. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/ipython.py +0 -0
  177. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/jupyter.py +0 -0
  178. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/lightweight_charts.py +0 -0
  179. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/logging.py +0 -0
  180. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/memory_profiler.py +0 -0
  181. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/modules.py +0 -0
  182. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/numpy.py +0 -0
  183. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/operator.py +0 -0
  184. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/optuna.py +0 -0
  185. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/parse.py +0 -0
  186. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/pickle.py +0 -0
  187. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/polars_ols.py +0 -0
  188. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/pottery.py +0 -0
  189. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/psutil.py +0 -0
  190. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/py.typed +0 -0
  191. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/pyinstrument.py +0 -0
  192. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/pytest_plugins/__init__.py +0 -0
  193. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
  194. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
  195. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/random.py +0 -0
  196. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/redis.py +0 -0
  197. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/reprlib.py +0 -0
  198. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/scipy.py +0 -0
  199. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/sentinel.py +0 -0
  200. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/shelve.py +0 -0
  201. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/slack_sdk.py +0 -0
  202. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/socket.py +0 -0
  203. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/sqlalchemy.py +0 -0
  204. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/statsmodels.py +0 -0
  205. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/tempfile.py +0 -0
  206. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/text.py +0 -0
  207. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/threading.py +0 -0
  208. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/timer.py +0 -0
  209. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/traceback.py +0 -0
  210. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/types.py +0 -0
  211. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/typing.py +0 -0
  212. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/tzdata.py +0 -0
  213. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/tzlocal.py +0 -0
  214. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/uuid.py +0 -0
  215. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/src/utilities/warnings.py +0 -0
  216. {dycw_utilities-0.151.7 → dycw_utilities-0.151.9}/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.9
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.9"
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.9"
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
@@ -4,7 +4,7 @@ from re import search
4
4
  from typing import TYPE_CHECKING, Any, cast
5
5
 
6
6
  from hypothesis import HealthCheck, given, settings
7
- from hypothesis.strategies import DataObject, data
7
+ from hypothesis.strategies import DataObject, data, sampled_from
8
8
  from pytest import mark, param, raises
9
9
  from whenever import Date, Time, ZonedDateTime
10
10
 
@@ -17,6 +17,7 @@ from utilities.hypothesis import (
17
17
  time_deltas,
18
18
  times,
19
19
  zoned_datetimes,
20
+ zoned_datetimes_2000,
20
21
  )
21
22
  from utilities.period import (
22
23
  DatePeriod,
@@ -145,13 +146,20 @@ class TestDatePeriod:
145
146
  expected = DatePeriod(start - delta, end - delta)
146
147
  assert result == expected
147
148
 
148
- @given(dates=pairs(dates(), sorted=True))
149
- def test_to_dict(self, *, dates: tuple[Date, Date]) -> None:
149
+ @given(data=data(), dates=pairs(dates(), sorted=True))
150
+ def test_to_and_from_dict(
151
+ self, *, data: DataObject, dates: tuple[Date, Date]
152
+ ) -> None:
150
153
  start, end = dates
151
154
  period = DatePeriod(start, end)
152
- result = period.to_dict()
153
- expected = _PeriodAsDict(start=start, end=end)
154
- assert result == expected
155
+ dict1 = period.to_dict()
156
+ dstart, dend = dict1["start"], dict1["end"]
157
+ dict2 = _PeriodAsDict(
158
+ start=data.draw(sampled_from([dstart, dstart.py_date()])),
159
+ end=data.draw(sampled_from([dend, dend.py_date()])),
160
+ )
161
+ result = DatePeriod.from_dict(dict2)
162
+ assert result == period
155
163
 
156
164
  @given(dates=pairs(dates(), unique=True, sorted=True))
157
165
  def test_error_period_invalid(self, *, dates: tuple[Date, Date]) -> None:
@@ -224,13 +232,20 @@ class TestTimePeriod:
224
232
  result,
225
233
  )
226
234
 
227
- @given(times=pairs(times()))
228
- def test_to_dict(self, *, times: tuple[Time, Time]) -> None:
235
+ @given(data=data(), times=pairs(times()))
236
+ def test_to_and_from_dict(
237
+ self, *, data: DataObject, times: tuple[Time, Time]
238
+ ) -> None:
229
239
  start, end = times
230
240
  period = TimePeriod(start, end)
231
- result = period.to_dict()
232
- expected = _PeriodAsDict(start=start, end=end)
233
- assert result == expected
241
+ dict1 = period.to_dict()
242
+ dstart, dend = dict1["start"], dict1["end"]
243
+ dict2 = _PeriodAsDict(
244
+ start=data.draw(sampled_from([dstart, dstart.py_time()])),
245
+ end=data.draw(sampled_from([dend, dend.py_time()])),
246
+ )
247
+ result = TimePeriod.from_dict(dict2)
248
+ assert result == period
234
249
 
235
250
 
236
251
  class TestZonedDateTimePeriod:
@@ -455,13 +470,20 @@ class TestZonedDateTimePeriod:
455
470
  expected = ZonedDateTimePeriod(start - delta, end - delta)
456
471
  assert result == expected
457
472
 
458
- @given(datetimes=pairs(zoned_datetimes(), sorted=True))
459
- def test_to_dict(self, *, datetimes: tuple[ZonedDateTime, ZonedDateTime]) -> None:
473
+ @given(data=data(), datetimes=pairs(zoned_datetimes_2000, sorted=True))
474
+ def test_to_and_from_dict(
475
+ self, data: DataObject, *, datetimes: tuple[ZonedDateTime, ZonedDateTime]
476
+ ) -> None:
460
477
  start, end = datetimes
461
478
  period = ZonedDateTimePeriod(start, end)
462
- result = period.to_dict()
463
- expected = _PeriodAsDict(start=start, end=end)
464
- assert result == expected
479
+ dict1 = period.to_dict()
480
+ dstart, dend = dict1["start"], dict1["end"]
481
+ dict2 = _PeriodAsDict(
482
+ start=data.draw(sampled_from([dstart, dstart.py_datetime()])),
483
+ end=data.draw(sampled_from([dend, dend.py_datetime()])),
484
+ )
485
+ result = ZonedDateTimePeriod.from_dict(dict2)
486
+ assert result == period
465
487
 
466
488
  @given(datetimes=pairs(zoned_datetimes(), sorted=True))
467
489
  def test_to_tz(self, *, datetimes: tuple[ZonedDateTime, ZonedDateTime]) -> None:
@@ -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
 
@@ -32,6 +32,7 @@ from utilities.hypothesis import (
32
32
  sentinels,
33
33
  times,
34
34
  zoned_datetimes,
35
+ zoned_datetimes_2000,
35
36
  )
36
37
  from utilities.sentinel import Sentinel, sentinel
37
38
  from utilities.tzdata import HongKong, Tokyo
@@ -1184,12 +1185,6 @@ class TestToYears:
1184
1185
  _ = to_years(delta)
1185
1186
 
1186
1187
 
1187
- zoned_datetimes_2000 = zoned_datetimes(
1188
- min_value=ZonedDateTime(2000, 1, 1, tz=UTC.key),
1189
- max_value=ZonedDateTime(2000, 12, 31, tz=UTC.key),
1190
- )
1191
-
1192
-
1193
1188
  class TestToZonedDateTime:
1194
1189
  @given(date_time=zoned_datetimes())
1195
1190
  def test_date_time(self, *, date_time: ZonedDateTime) -> None:
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.151.7"
3
+ __version__ = "0.151.9"
@@ -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
 
@@ -1415,6 +1415,11 @@ def zoned_datetimes(
1415
1415
  return zoned
1416
1416
 
1417
1417
 
1418
+ zoned_datetimes_2000 = zoned_datetimes(
1419
+ min_value=ZonedDateTime(2000, 1, 1, tz=UTC.key),
1420
+ max_value=ZonedDateTime(2000, 12, 31, tz=UTC.key),
1421
+ )
1422
+
1418
1423
  __all__ = [
1419
1424
  "Draw2Error",
1420
1425
  "MaybeSearchStrategy",
@@ -1468,4 +1473,5 @@ __all__ = [
1468
1473
  "versions",
1469
1474
  "year_months",
1470
1475
  "zoned_datetimes",
1476
+ "zoned_datetimes_2000",
1471
1477
  ]
@@ -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