dycw-utilities 0.118.0__tar.gz → 0.119.0__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 (223) hide show
  1. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/PKG-INFO +27 -27
  2. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/pyproject.toml +31 -31
  3. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_click.py +6 -6
  4. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_datetime.py +4 -4
  5. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_hypothesis.py +38 -38
  6. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_parse.py +2 -2
  7. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_period.py +5 -2
  8. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_whenever.py +31 -34
  9. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_zoneinfo.py +2 -2
  10. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/__init__.py +1 -1
  11. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/click.py +19 -19
  12. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/datetime.py +5 -5
  13. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/hypothesis.py +44 -44
  14. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/orjson.py +2 -2
  15. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/period.py +2 -2
  16. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/whenever.py +66 -104
  17. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/zoneinfo.py +3 -3
  18. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/.gitignore +0 -0
  19. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/LICENSE +0 -0
  20. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/README.md +0 -0
  21. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/__init__.py +0 -0
  22. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/conftest.py +0 -0
  23. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/__init__.py +0 -0
  24. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_missing/__init__.py +0 -0
  25. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_missing/module.py +0 -0
  26. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_with/__init__.py +0 -0
  27. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_with/outer_1.py +0 -0
  28. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_with/outer_2.py +0 -0
  29. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  30. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  31. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  32. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  33. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_without/__init__.py +0 -0
  34. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_without/module_1.py +0 -0
  35. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/package_without/module_2.py +0 -0
  36. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/standalone.py +0 -0
  37. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/modules/with_imports.py +0 -0
  38. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  39. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  40. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  41. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  42. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  43. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  44. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  45. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  46. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_altair.py +0 -0
  47. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_astor.py +0 -0
  48. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_asyncio.py +0 -0
  49. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_atomicwrites.py +0 -0
  50. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_atools.py +0 -0
  51. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_cachetools.py +0 -0
  52. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_concurrent.py +0 -0
  53. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_contextlib.py +0 -0
  54. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_contextvars.py +0 -0
  55. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_cryptography.py +0 -0
  56. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_cvxpy.py +0 -0
  57. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_dataclasses.py +0 -0
  58. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_enum.py +0 -0
  59. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_errors.py +0 -0
  60. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_eventkit.py +0 -0
  61. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_fastapi.py +0 -0
  62. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_fpdf2.py +0 -0
  63. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_functions.py +0 -0
  64. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_functools.py +0 -0
  65. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_getpass.py +0 -0
  66. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_git.py +0 -0
  67. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_hashlib.py +0 -0
  68. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_http.py +0 -0
  69. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_importlib.py +0 -0
  70. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_ipython.py +0 -0
  71. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_iterables.py +0 -0
  72. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_jupyter.py +0 -0
  73. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_lightweight_charts.py +0 -0
  74. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_logging.py +0 -0
  75. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_loguru.py +0 -0
  76. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_luigi.py +0 -0
  77. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_math.py +0 -0
  78. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_memory_profiler.py +0 -0
  79. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_modules.py +0 -0
  80. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_more_itertools.py +0 -0
  81. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_numpy.py +0 -0
  82. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_operator.py +0 -0
  83. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_optuna.py +0 -0
  84. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_orjson.py +0 -0
  85. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_os.py +0 -0
  86. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_pathlib.py +0 -0
  87. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_pickle.py +0 -0
  88. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_platform.py +0 -0
  89. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_polars.py +0 -0
  90. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_polars_ols.py +0 -0
  91. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_pqdm.py +0 -0
  92. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_pydantic.py +0 -0
  93. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_pyinstrument.py +0 -0
  94. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_pyrsistent.py +0 -0
  95. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_pytest.py +0 -0
  96. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_pytest_regressions.py +0 -0
  97. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_python_dotenv.py +0 -0
  98. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_random.py +0 -0
  99. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_re.py +0 -0
  100. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_redis.py +0 -0
  101. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_reprlib.py +0 -0
  102. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_rich.py +0 -0
  103. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_scipy.py +0 -0
  104. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_sentinel.py +0 -0
  105. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_shelve.py +0 -0
  106. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_slack_sdk.py +0 -0
  107. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_socket.py +0 -0
  108. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_sqlalchemy.py +0 -0
  109. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_sqlalchemy_polars.py +0 -0
  110. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_statsmodel.py +0 -0
  111. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_streamlit.py +0 -0
  112. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_sys.py +0 -0
  113. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_tempfile.py +0 -0
  114. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_tenacity.py +0 -0
  115. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_text.py +0 -0
  116. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_threading.py +0 -0
  117. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_timer.py +0 -0
  118. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback.py +0 -0
  119. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/__init__.py +0 -0
  120. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/chain.py +0 -0
  121. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/decorated_async.py +0 -0
  122. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/decorated_sync.py +0 -0
  123. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/error_bind.py +0 -0
  124. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/many.py +0 -0
  125. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/one.py +0 -0
  126. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/recursive.py +0 -0
  127. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/task_group_one.py +0 -0
  128. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/task_group_two.py +0 -0
  129. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/two.py +0 -0
  130. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_traceback_funcs/untraced.py +0 -0
  131. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_types.py +0 -0
  132. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_typing.py +0 -0
  133. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_typing_funcs/__init__.py +0 -0
  134. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_typing_funcs/no_future.py +0 -0
  135. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_typing_funcs/with_future.py +0 -0
  136. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_tzdata.py +0 -0
  137. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_tzlocal.py +0 -0
  138. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_uuid.py +0 -0
  139. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_version.py +0 -0
  140. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_warnings.py +0 -0
  141. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/tests/test_zipfile.py +0 -0
  142. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/altair.py +0 -0
  143. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/astor.py +0 -0
  144. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/asyncio.py +0 -0
  145. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/atomicwrites.py +0 -0
  146. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/atools.py +0 -0
  147. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/cachetools.py +0 -0
  148. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/concurrent.py +0 -0
  149. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/contextlib.py +0 -0
  150. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/contextvars.py +0 -0
  151. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/cryptography.py +0 -0
  152. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/cvxpy.py +0 -0
  153. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/dataclasses.py +0 -0
  154. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/enum.py +0 -0
  155. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/errors.py +0 -0
  156. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/eventkit.py +0 -0
  157. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/fastapi.py +0 -0
  158. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/fpdf2.py +0 -0
  159. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/functions.py +0 -0
  160. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/functools.py +0 -0
  161. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/getpass.py +0 -0
  162. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/git.py +0 -0
  163. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/hashlib.py +0 -0
  164. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/http.py +0 -0
  165. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/importlib.py +0 -0
  166. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/ipython.py +0 -0
  167. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/iterables.py +0 -0
  168. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/jupyter.py +0 -0
  169. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/lightweight_charts.py +0 -0
  170. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/logging.py +0 -0
  171. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/loguru.py +0 -0
  172. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/luigi.py +0 -0
  173. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/math.py +0 -0
  174. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/memory_profiler.py +0 -0
  175. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/modules.py +0 -0
  176. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/more_itertools.py +0 -0
  177. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/numpy.py +0 -0
  178. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/operator.py +0 -0
  179. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/optuna.py +0 -0
  180. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/os.py +0 -0
  181. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/parse.py +0 -0
  182. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/pathlib.py +0 -0
  183. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/pickle.py +0 -0
  184. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/platform.py +0 -0
  185. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/polars.py +0 -0
  186. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/polars_ols.py +0 -0
  187. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/pqdm.py +0 -0
  188. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/py.typed +0 -0
  189. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/pydantic.py +0 -0
  190. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/pyinstrument.py +0 -0
  191. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/pyrsistent.py +0 -0
  192. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/pytest.py +0 -0
  193. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/pytest_regressions.py +0 -0
  194. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/python_dotenv.py +0 -0
  195. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/random.py +0 -0
  196. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/re.py +0 -0
  197. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/redis.py +0 -0
  198. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/reprlib.py +0 -0
  199. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/rich.py +0 -0
  200. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/scipy.py +0 -0
  201. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/sentinel.py +0 -0
  202. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/shelve.py +0 -0
  203. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/slack_sdk.py +0 -0
  204. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/socket.py +0 -0
  205. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/sqlalchemy.py +0 -0
  206. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/sqlalchemy_polars.py +0 -0
  207. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/statsmodels.py +0 -0
  208. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/streamlit.py +0 -0
  209. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/sys.py +0 -0
  210. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/tempfile.py +0 -0
  211. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/tenacity.py +0 -0
  212. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/text.py +0 -0
  213. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/threading.py +0 -0
  214. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/timer.py +0 -0
  215. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/traceback.py +0 -0
  216. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/types.py +0 -0
  217. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/typing.py +0 -0
  218. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/tzdata.py +0 -0
  219. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/tzlocal.py +0 -0
  220. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/uuid.py +0 -0
  221. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/version.py +0 -0
  222. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/warnings.py +0 -0
  223. {dycw_utilities-0.118.0 → dycw_utilities-0.119.0}/src/utilities/zipfile.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.118.0
3
+ Version: 0.119.0
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -26,7 +26,7 @@ Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-altair'
26
26
  Requires-Dist: img2pdf<0.7,>=0.6.0; extra == 'zzz-test-altair'
27
27
  Requires-Dist: polars-lts-cpu<1.30,>=1.29.0; extra == 'zzz-test-altair'
28
28
  Requires-Dist: vl-convert-python<1.8,>=1.7.0; extra == 'zzz-test-altair'
29
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-altair'
29
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-altair'
30
30
  Provides-Extra: zzz-test-astor
31
31
  Requires-Dist: astor<0.9,>=0.8.1; extra == 'zzz-test-astor'
32
32
  Provides-Extra: zzz-test-asyncio
@@ -39,20 +39,20 @@ Requires-Dist: cachetools<5.6,>=5.5.2; extra == 'zzz-test-cachetools'
39
39
  Provides-Extra: zzz-test-click
40
40
  Requires-Dist: click<8.3,>=8.2.0; extra == 'zzz-test-click'
41
41
  Requires-Dist: sqlalchemy<2.1,>=2.0.41; extra == 'zzz-test-click'
42
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-click'
42
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-click'
43
43
  Provides-Extra: zzz-test-contextlib
44
44
  Provides-Extra: zzz-test-contextvars
45
45
  Provides-Extra: zzz-test-cryptography
46
- Requires-Dist: cryptography<46.0,>=45.0.2; extra == 'zzz-test-cryptography'
46
+ Requires-Dist: cryptography<45.1,>=45.0.2; extra == 'zzz-test-cryptography'
47
47
  Provides-Extra: zzz-test-cvxpy
48
48
  Requires-Dist: cvxpy<1.7,>=1.6.5; extra == 'zzz-test-cvxpy'
49
49
  Provides-Extra: zzz-test-dataclasses
50
50
  Requires-Dist: orjson<3.11,>=3.10.15; extra == 'zzz-test-dataclasses'
51
51
  Requires-Dist: polars-lts-cpu<1.30,>=1.29.0; extra == 'zzz-test-dataclasses'
52
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-dataclasses'
52
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-dataclasses'
53
53
  Provides-Extra: zzz-test-datetime
54
54
  Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-datetime'
55
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-datetime'
55
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-datetime'
56
56
  Provides-Extra: zzz-test-enum
57
57
  Provides-Extra: zzz-test-errors
58
58
  Provides-Extra: zzz-test-eventkit
@@ -71,29 +71,29 @@ Provides-Extra: zzz-test-git
71
71
  Provides-Extra: zzz-test-hashlib
72
72
  Requires-Dist: orjson<3.11,>=3.10.15; extra == 'zzz-test-hashlib'
73
73
  Requires-Dist: polars-lts-cpu<1.30,>=1.29.0; extra == 'zzz-test-hashlib'
74
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-hashlib'
74
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-hashlib'
75
75
  Provides-Extra: zzz-test-http
76
76
  Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-http'
77
77
  Requires-Dist: orjson<3.11,>=3.10.18; extra == 'zzz-test-http'
78
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-http'
78
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-http'
79
79
  Provides-Extra: zzz-test-hypothesis
80
80
  Requires-Dist: aiosqlite<0.22,>=0.21.0; extra == 'zzz-test-hypothesis'
81
81
  Requires-Dist: asyncpg<0.31,>=0.30.0; extra == 'zzz-test-hypothesis'
82
82
  Requires-Dist: greenlet<3.3,>=3.2.0; extra == 'zzz-test-hypothesis'
83
83
  Requires-Dist: hypothesis<6.132,>=6.131.19; extra == 'zzz-test-hypothesis'
84
84
  Requires-Dist: luigi<3.7,>=3.6.0; extra == 'zzz-test-hypothesis'
85
- Requires-Dist: numpy<2.3,>=2.2.5; extra == 'zzz-test-hypothesis'
85
+ Requires-Dist: numpy<2.3,>=2.2.6; extra == 'zzz-test-hypothesis'
86
86
  Requires-Dist: pathvalidate<3.3,>=3.2.3; extra == 'zzz-test-hypothesis'
87
87
  Requires-Dist: redis<6.2,>=6.1.0; extra == 'zzz-test-hypothesis'
88
88
  Requires-Dist: sqlalchemy<2.1,>=2.0.41; extra == 'zzz-test-hypothesis'
89
89
  Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-hypothesis'
90
90
  Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-hypothesis'
91
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-hypothesis'
91
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-hypothesis'
92
92
  Provides-Extra: zzz-test-ipython
93
93
  Requires-Dist: ipython<9.1,>=9.0.1; extra == 'zzz-test-ipython'
94
94
  Provides-Extra: zzz-test-iterables
95
95
  Requires-Dist: polars-lts-cpu<1.30,>=1.29.0; extra == 'zzz-test-iterables'
96
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-iterables'
96
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-iterables'
97
97
  Provides-Extra: zzz-test-jupyter
98
98
  Requires-Dist: jupyterlab<4.3,>=4.2.0; extra == 'zzz-test-jupyter'
99
99
  Requires-Dist: pandas<2.3,>=2.2.2; extra == 'zzz-test-jupyter'
@@ -105,24 +105,24 @@ Requires-Dist: concurrent-log-handler<0.10,>=0.9.26; extra == 'zzz-test-logging'
105
105
  Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-logging'
106
106
  Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-logging'
107
107
  Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-logging'
108
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-logging'
108
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-logging'
109
109
  Provides-Extra: zzz-test-loguru
110
110
  Requires-Dist: loguru<0.8,>=0.7.3; extra == 'zzz-test-loguru'
111
111
  Provides-Extra: zzz-test-luigi
112
112
  Requires-Dist: luigi<3.7,>=3.6.0; extra == 'zzz-test-luigi'
113
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-luigi'
113
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-luigi'
114
114
  Provides-Extra: zzz-test-math
115
- Requires-Dist: numpy<2.3,>=2.2.5; extra == 'zzz-test-math'
115
+ Requires-Dist: numpy<2.3,>=2.2.6; extra == 'zzz-test-math'
116
116
  Provides-Extra: zzz-test-memory-profiler
117
117
  Requires-Dist: memory-profiler<0.62,>=0.61.0; extra == 'zzz-test-memory-profiler'
118
118
  Provides-Extra: zzz-test-modules
119
119
  Provides-Extra: zzz-test-more-itertools
120
120
  Requires-Dist: more-itertools<10.8,>=10.7.0; extra == 'zzz-test-more-itertools'
121
121
  Provides-Extra: zzz-test-numpy
122
- Requires-Dist: numpy<2.3,>=2.2.5; extra == 'zzz-test-numpy'
122
+ Requires-Dist: numpy<2.3,>=2.2.6; extra == 'zzz-test-numpy'
123
123
  Provides-Extra: zzz-test-operator
124
124
  Requires-Dist: polars-lts-cpu<1.30,>=1.29.0; extra == 'zzz-test-operator'
125
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-operator'
125
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-operator'
126
126
  Provides-Extra: zzz-test-optuna
127
127
  Requires-Dist: optuna<4.4,>=4.3.0; extra == 'zzz-test-optuna'
128
128
  Provides-Extra: zzz-test-orjson
@@ -130,7 +130,7 @@ Requires-Dist: orjson<3.11,>=3.10.15; extra == 'zzz-test-orjson'
130
130
  Requires-Dist: polars-lts-cpu<1.30,>=1.29.0; extra == 'zzz-test-orjson'
131
131
  Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-orjson'
132
132
  Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-orjson'
133
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-orjson'
133
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-orjson'
134
134
  Provides-Extra: zzz-test-os
135
135
  Provides-Extra: zzz-test-pathlib
136
136
  Provides-Extra: zzz-test-pickle
@@ -138,7 +138,7 @@ Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pickle'
138
138
  Provides-Extra: zzz-test-platform
139
139
  Provides-Extra: zzz-test-polars
140
140
  Requires-Dist: polars-lts-cpu<1.30,>=1.29.0; extra == 'zzz-test-polars'
141
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-polars'
141
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-polars'
142
142
  Provides-Extra: zzz-test-pqdm
143
143
  Requires-Dist: pqdm<0.3,>=0.2.0; extra == 'zzz-test-pqdm'
144
144
  Provides-Extra: zzz-test-pydantic
@@ -153,12 +153,12 @@ Requires-Dist: pyrsistent<0.21,>=0.20.0; extra == 'zzz-test-pyrsistent'
153
153
  Provides-Extra: zzz-test-pytest
154
154
  Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-pytest'
155
155
  Requires-Dist: orjson<3.11,>=3.10.18; extra == 'zzz-test-pytest'
156
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-pytest'
156
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-pytest'
157
157
  Provides-Extra: zzz-test-pytest-regressions
158
158
  Requires-Dist: pytest-regressions<2.8,>=2.7.0; extra == 'zzz-test-pytest-regressions'
159
159
  Provides-Extra: zzz-test-python-dotenv
160
160
  Requires-Dist: python-dotenv<1.2,>=1.1.0; extra == 'zzz-test-python-dotenv'
161
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-python-dotenv'
161
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-python-dotenv'
162
162
  Provides-Extra: zzz-test-random
163
163
  Provides-Extra: zzz-test-re
164
164
  Provides-Extra: zzz-test-redis
@@ -168,7 +168,7 @@ Requires-Dist: redis<6.2,>=6.1.0; extra == 'zzz-test-redis'
168
168
  Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-redis'
169
169
  Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-redis'
170
170
  Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-redis'
171
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-redis'
171
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-redis'
172
172
  Provides-Extra: zzz-test-rich
173
173
  Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-rich'
174
174
  Provides-Extra: zzz-test-scipy
@@ -194,7 +194,7 @@ Requires-Dist: nest-asyncio<1.7,>=1.6.0; extra == 'zzz-test-sqlalchemy-polars'
194
194
  Requires-Dist: polars-lts-cpu<1.30,>=1.29.0; extra == 'zzz-test-sqlalchemy-polars'
195
195
  Requires-Dist: sqlalchemy<2.1,>=2.0.41; extra == 'zzz-test-sqlalchemy-polars'
196
196
  Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-sqlalchemy-polars'
197
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-sqlalchemy-polars'
197
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-sqlalchemy-polars'
198
198
  Provides-Extra: zzz-test-streamlit
199
199
  Requires-Dist: streamlit<1.46,>=1.45.0; extra == 'zzz-test-streamlit'
200
200
  Provides-Extra: zzz-test-sys
@@ -202,7 +202,7 @@ Requires-Dist: atomicwrites<1.5,>=1.4.1; extra == 'zzz-test-sys'
202
202
  Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-sys'
203
203
  Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-sys'
204
204
  Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-sys'
205
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-sys'
205
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-sys'
206
206
  Provides-Extra: zzz-test-tempfile
207
207
  Provides-Extra: zzz-test-tenacity
208
208
  Requires-Dist: tenacity<9.0,>=8.5.0; extra == 'zzz-test-tenacity'
@@ -213,11 +213,11 @@ Provides-Extra: zzz-test-traceback
213
213
  Requires-Dist: rich<14.1,>=14.0.0; extra == 'zzz-test-traceback'
214
214
  Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-traceback'
215
215
  Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-traceback'
216
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-traceback'
216
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-traceback'
217
217
  Provides-Extra: zzz-test-types
218
218
  Provides-Extra: zzz-test-typing
219
219
  Requires-Dist: polars-lts-cpu<1.30,>=1.29.0; extra == 'zzz-test-typing'
220
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-typing'
220
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-typing'
221
221
  Provides-Extra: zzz-test-tzlocal
222
222
  Requires-Dist: tzlocal<5.4,>=5.3.1; extra == 'zzz-test-tzlocal'
223
223
  Provides-Extra: zzz-test-uuid
@@ -225,11 +225,11 @@ Provides-Extra: zzz-test-version
225
225
  Requires-Dist: tomlkit<0.14,>=0.13.2; extra == 'zzz-test-version'
226
226
  Provides-Extra: zzz-test-warnings
227
227
  Provides-Extra: zzz-test-whenever
228
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-whenever'
228
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-whenever'
229
229
  Provides-Extra: zzz-test-zipfile
230
230
  Provides-Extra: zzz-test-zoneinfo
231
231
  Requires-Dist: tzdata<2025.3,>=2025.2; extra == 'zzz-test-zoneinfo'
232
- Requires-Dist: whenever<0.8,>=0.7.3; extra == 'zzz-test-zoneinfo'
232
+ Requires-Dist: whenever<0.9,>=0.8.0; extra == 'zzz-test-zoneinfo'
233
233
  Description-Content-Type: text/markdown
234
234
 
235
235
  [![PyPI version](https://badge.fury.io/py/dycw-utilities.svg)](https://badge.fury.io/py/dycw-utilities)
@@ -19,7 +19,7 @@ dev = [
19
19
  "click >= 8.2.0, < 8.3",
20
20
  "coloredlogs >= 15.0.1, < 15.1",
21
21
  "concurrent-log-handler >= 0.9.26, < 0.10",
22
- "cryptography >= 45.0.2, < 46.0",
22
+ "cryptography >= 45.0.2, < 45.1",
23
23
  "cvxpy >= 1.6.5, < 1.7",
24
24
  "eventkit >= 1.0.3, < 1.1",
25
25
  "fastapi >= 0.115.11, < 0.116",
@@ -35,7 +35,7 @@ dev = [
35
35
  "more-itertools >= 10.7.0, < 10.8",
36
36
  "nest-asyncio >= 1.6.0, < 1.7", # for sqlalchemy async
37
37
  "nox >= 2025.2.9, < 2025.3",
38
- "numpy >= 2.2.5, < 2.3",
38
+ "numpy >= 2.2.6, < 2.3",
39
39
  "optuna >= 4.3.0, < 4.4",
40
40
  "orjson >= 3.10.18, < 3.11",
41
41
  "pathvalidate >= 3.2.3, < 3.3",
@@ -65,7 +65,7 @@ dev = [
65
65
  "vegafusion >= 2.0.2, < 2.1",
66
66
  "vegafusion-python-embed >= 1.6.9, < 1.7",
67
67
  "vl-convert-python >= 1.7.0, < 1.8",
68
- "whenever >= 0.7.3, < 0.8",
68
+ "whenever >= 0.8.0, < 0.9",
69
69
  # test
70
70
  "coverage-conditional-plugin >= 0.9.0, < 0.10",
71
71
  "pytest-asyncio >= 0.26.0, < 0.27",
@@ -92,7 +92,7 @@ dependencies = [
92
92
  name = "dycw-utilities"
93
93
  readme = "README.md"
94
94
  requires-python = ">= 3.12"
95
- version = "0.118.0"
95
+ version = "0.119.0"
96
96
 
97
97
  [project.optional-dependencies]
98
98
  test = [
@@ -117,7 +117,7 @@ zzz-test-altair = [
117
117
  "img2pdf >= 0.6.0, < 0.7",
118
118
  "polars-lts-cpu >= 1.29.0, < 1.30",
119
119
  "vl-convert-python >= 1.7.0, < 1.8",
120
- "whenever >= 0.7.3, < 0.8",
120
+ "whenever >= 0.8.0, < 0.9",
121
121
  ]
122
122
  zzz-test-astor = ["astor >= 0.8.1, < 0.9"]
123
123
  zzz-test-asyncio = []
@@ -129,20 +129,20 @@ zzz-test-cachetools = ["cachetools >= 5.5.2, < 5.6"]
129
129
  zzz-test-click = [
130
130
  "click >= 8.2.0, < 8.3",
131
131
  "sqlalchemy >= 2.0.41, < 2.1",
132
- "whenever >= 0.7.3, < 0.8",
132
+ "whenever >= 0.8.0, < 0.9",
133
133
  ]
134
134
  zzz-test-contextlib = []
135
135
  zzz-test-contextvars = []
136
- zzz-test-cryptography = ["cryptography >= 45.0.2, < 46.0"]
136
+ zzz-test-cryptography = ["cryptography >= 45.0.2, < 45.1"]
137
137
  zzz-test-cvxpy = ["cvxpy >= 1.6.5, < 1.7"]
138
138
  zzz-test-dataclasses = [
139
139
  "orjson >= 3.10.15, < 3.11",
140
140
  "polars-lts-cpu >= 1.29.0, < 1.30",
141
- "whenever >= 0.7.3, < 0.8",
141
+ "whenever >= 0.8.0, < 0.9",
142
142
  ]
143
143
  zzz-test-datetime = [
144
144
  "tzlocal >= 5.3.1, < 5.4",
145
- "whenever >= 0.7.3, < 0.8",
145
+ "whenever >= 0.8.0, < 0.9",
146
146
  ]
147
147
  zzz-test-enum = []
148
148
  zzz-test-errors = []
@@ -163,12 +163,12 @@ zzz-test-git = []
163
163
  zzz-test-hashlib = [
164
164
  "polars-lts-cpu >= 1.29.0, < 1.30",
165
165
  "orjson >= 3.10.15, < 3.11",
166
- "whenever >= 0.7.3, < 0.8",
166
+ "whenever >= 0.8.0, < 0.9",
167
167
  ]
168
168
  zzz-test-http = [
169
169
  "atomicwrites >= 1.4.1, < 1.5",
170
170
  "orjson >= 3.10.18, < 3.11",
171
- "whenever >= 0.7.3, < 0.8",
171
+ "whenever >= 0.8.0, < 0.9",
172
172
  ]
173
173
  zzz-test-hypothesis = [
174
174
  "aiosqlite >= 0.21.0, < 0.22",
@@ -176,18 +176,18 @@ zzz-test-hypothesis = [
176
176
  "greenlet >= 3.2.0, < 3.3", # for sqlalchemy async
177
177
  "hypothesis >= 6.131.19, < 6.132",
178
178
  "luigi >= 3.6.0, < 3.7",
179
- "numpy >= 2.2.5, < 2.3",
179
+ "numpy >= 2.2.6, < 2.3",
180
180
  "pathvalidate >= 3.2.3, < 3.3",
181
181
  "redis >= 6.1.0, < 6.2",
182
182
  "sqlalchemy >= 2.0.41, < 2.1",
183
183
  "tenacity >= 8.5.0, < 9.0", # limited by luigi
184
184
  "tzlocal >= 5.3.1, < 5.4",
185
- "whenever >= 0.7.3, < 0.8",
185
+ "whenever >= 0.8.0, < 0.9",
186
186
  ]
187
187
  zzz-test-ipython = ["ipython >= 9.0.1, < 9.1"]
188
188
  zzz-test-iterables = [
189
189
  "polars-lts-cpu >= 1.29.0, < 1.30",
190
- "whenever >= 0.7.3, < 0.8",
190
+ "whenever >= 0.8.0, < 0.9",
191
191
  ]
192
192
  zzz-test-jupyter = [
193
193
  "jupyterlab >= 4.2.0, < 4.3",
@@ -201,21 +201,21 @@ zzz-test-logging = [
201
201
  "rich >= 14.0.0, < 14.1",
202
202
  "tomlkit >= 0.13.2, < 0.14",
203
203
  "tzlocal >= 5.3.1, < 5.4",
204
- "whenever >= 0.7.3, < 0.8",
204
+ "whenever >= 0.8.0, < 0.9",
205
205
  ]
206
206
  zzz-test-loguru = ["loguru >= 0.7.3, < 0.8"]
207
207
  zzz-test-luigi = [
208
208
  "luigi >= 3.6.0, < 3.7",
209
- "whenever >= 0.7.3, < 0.8",
209
+ "whenever >= 0.8.0, < 0.9",
210
210
  ]
211
- zzz-test-math = ["numpy >= 2.2.5, < 2.3"]
211
+ zzz-test-math = ["numpy >= 2.2.6, < 2.3"]
212
212
  zzz-test-memory-profiler = ["memory-profiler >= 0.61.0, < 0.62"]
213
213
  zzz-test-modules = []
214
214
  zzz-test-more-itertools = ["more-itertools >= 10.7.0, < 10.8"]
215
- zzz-test-numpy = ["numpy >= 2.2.5, < 2.3"]
215
+ zzz-test-numpy = ["numpy >= 2.2.6, < 2.3"]
216
216
  zzz-test-operator = [
217
217
  "polars-lts-cpu >= 1.29.0, < 1.30",
218
- "whenever >= 0.7.3, < 0.8",
218
+ "whenever >= 0.8.0, < 0.9",
219
219
  ]
220
220
  zzz-test-optuna = ["optuna >= 4.3.0, < 4.4"]
221
221
  zzz-test-orjson = [
@@ -223,7 +223,7 @@ zzz-test-orjson = [
223
223
  "polars-lts-cpu >= 1.29.0, < 1.30",
224
224
  "rich >= 14.0.0, < 14.1",
225
225
  "tzlocal >= 5.3.1, < 5.4",
226
- "whenever >= 0.7.3, < 0.8",
226
+ "whenever >= 0.8.0, < 0.9",
227
227
  ]
228
228
  zzz-test-os = []
229
229
  zzz-test-pathlib = []
@@ -231,7 +231,7 @@ zzz-test-pickle = ["atomicwrites >= 1.4.1, < 1.5"]
231
231
  zzz-test-platform = []
232
232
  zzz-test-polars = [
233
233
  "polars-lts-cpu >= 1.29.0, < 1.30",
234
- "whenever >= 0.7.3, < 0.8",
234
+ "whenever >= 0.8.0, < 0.9",
235
235
  ]
236
236
  zzz-test-pqdm = ["pqdm >= 0.2.0, < 0.3"]
237
237
  zzz-test-pydantic = [
@@ -247,12 +247,12 @@ zzz-test-pyrsistent = ["pyrsistent >= 0.20.0, < 0.21"]
247
247
  zzz-test-pytest = [
248
248
  "atomicwrites >= 1.4.1, < 1.5",
249
249
  "orjson >= 3.10.18, < 3.11",
250
- "whenever >= 0.7.3, < 0.8",
250
+ "whenever >= 0.8.0, < 0.9",
251
251
  ]
252
252
  zzz-test-pytest-regressions = ["pytest-regressions >= 2.7.0, < 2.8"]
253
253
  zzz-test-python-dotenv = [
254
254
  "python-dotenv >= 1.1.0, < 1.2",
255
- "whenever >= 0.7.3, < 0.8",
255
+ "whenever >= 0.8.0, < 0.9",
256
256
  ]
257
257
  zzz-test-random = []
258
258
  zzz-test-re = []
@@ -263,7 +263,7 @@ zzz-test-redis = [
263
263
  "rich >= 14.0.0, < 14.1",
264
264
  "tenacity >= 8.5.0, < 9.0", # limited by luigi
265
265
  "tzlocal >= 5.3.1, < 5.4",
266
- "whenever >= 0.7.3, < 0.8",
266
+ "whenever >= 0.8.0, < 0.9",
267
267
  ]
268
268
  zzz-test-rich = ["rich >= 14.0.0, < 14.1"]
269
269
  zzz-test-scipy = ["scipy >= 1.15.3, < 1.16"]
@@ -290,7 +290,7 @@ zzz-test-sqlalchemy-polars = [
290
290
  "polars-lts-cpu >= 1.29.0, < 1.30",
291
291
  "sqlalchemy >= 2.0.41, < 2.1",
292
292
  "tenacity >= 8.5.0, < 9.0", # limited by luigi
293
- "whenever >= 0.7.3, < 0.8",
293
+ "whenever >= 0.8.0, < 0.9",
294
294
  ]
295
295
  zzz-test-streamlit = ["streamlit >= 1.45.0, < 1.46"]
296
296
  zzz-test-sys = [
@@ -298,7 +298,7 @@ zzz-test-sys = [
298
298
  "rich >= 14.0.0, < 14.1",
299
299
  "tomlkit >= 0.13.2, < 0.14",
300
300
  "tzlocal >= 5.3.1, < 5.4",
301
- "whenever >= 0.7.3, < 0.8",
301
+ "whenever >= 0.8.0, < 0.9",
302
302
  ]
303
303
  zzz-test-tempfile = []
304
304
  zzz-test-tenacity = [
@@ -311,22 +311,22 @@ zzz-test-traceback = [
311
311
  "rich >= 14.0.0, < 14.1",
312
312
  "tomlkit >= 0.13.2, < 0.14",
313
313
  "tzlocal >= 5.3.1, < 5.4",
314
- "whenever >= 0.7.3, < 0.8",
314
+ "whenever >= 0.8.0, < 0.9",
315
315
  ]
316
316
  zzz-test-types = []
317
317
  zzz-test-typing = [
318
318
  "polars-lts-cpu >= 1.29.0, < 1.30",
319
- "whenever >= 0.7.3, < 0.8",
319
+ "whenever >= 0.8.0, < 0.9",
320
320
  ]
321
321
  zzz-test-tzlocal = ["tzlocal >= 5.3.1, < 5.4"]
322
322
  zzz-test-uuid = []
323
323
  zzz-test-version = ["tomlkit >= 0.13.2, < 0.14"]
324
324
  zzz-test-warnings = []
325
- zzz-test-whenever = ["whenever >= 0.7.3, < 0.8"]
325
+ zzz-test-whenever = ["whenever >= 0.8.0, < 0.9"]
326
326
  zzz-test-zipfile = []
327
327
  zzz-test-zoneinfo = [
328
328
  "tzdata >= 2025.2, < 2025.3",
329
- "whenever >= 0.7.3, < 0.8",
329
+ "whenever >= 0.8.0, < 0.9",
330
330
  ]
331
331
 
332
332
  [project.scripts]
@@ -334,7 +334,7 @@ zzz-test-zoneinfo = [
334
334
  # bump-my-version
335
335
  [tool.bumpversion]
336
336
  allow_dirty = true
337
- current_version = "0.118.0"
337
+ current_version = "0.119.0"
338
338
 
339
339
  [[tool.bumpversion.files]]
340
340
  filename = "src/utilities/__init__.py"
@@ -54,7 +54,7 @@ from utilities.click import (
54
54
  ListMonths,
55
55
  ListStrs,
56
56
  ListUUIDs,
57
- LocalDateTime,
57
+ PlainDateTime,
58
58
  Time,
59
59
  Timedelta,
60
60
  ZonedDateTime,
@@ -71,7 +71,7 @@ from utilities.text import join_strs, strip_and_dedent
71
71
  from utilities.whenever import (
72
72
  serialize_date,
73
73
  serialize_duration,
74
- serialize_local_datetime,
74
+ serialize_plain_datetime,
75
75
  serialize_time,
76
76
  serialize_timedelta,
77
77
  serialize_zoned_datetime,
@@ -324,14 +324,14 @@ class TestParameters:
324
324
  param(
325
325
  ListUUIDs(), "LIST[UUID]", lists(uuids()), _lift_serializer(str), True
326
326
  ),
327
+ param(utilities.click.Month(), "MONTH", months(), serialize_month, True),
327
328
  param(
328
- LocalDateTime(),
329
- "LOCAL DATETIME",
329
+ PlainDateTime(),
330
+ "PLAIN DATETIME",
330
331
  datetimes(),
331
- serialize_local_datetime,
332
+ serialize_plain_datetime,
332
333
  True,
333
334
  ),
334
- param(utilities.click.Month(), "MONTH", months(), serialize_month, True),
335
335
  param(Time(), "TIME", times(), serialize_time, True),
336
336
  param(
337
337
  Timedelta(),
@@ -106,7 +106,7 @@ from utilities.datetime import (
106
106
  get_today,
107
107
  get_years,
108
108
  is_integral_timedelta,
109
- is_local_datetime,
109
+ is_plain_datetime,
110
110
  is_weekday,
111
111
  is_zero_time,
112
112
  is_zoned_datetime,
@@ -873,7 +873,7 @@ class TestIsIntegralTimeDelta:
873
873
  assert not is_integral_timedelta(timedelta)
874
874
 
875
875
 
876
- class TestIsLocalDateTime:
876
+ class TestIsPlainDateTime:
877
877
  @mark.parametrize(
878
878
  ("obj", "expected"),
879
879
  [
@@ -883,7 +883,7 @@ class TestIsLocalDateTime:
883
883
  ],
884
884
  )
885
885
  def test_main(self, *, obj: Any, expected: bool) -> None:
886
- result = is_local_datetime(obj)
886
+ result = is_plain_datetime(obj)
887
887
  assert result is expected
888
888
 
889
889
 
@@ -1188,7 +1188,7 @@ class TestSerializeAndParseCompact:
1188
1188
  @given(datetime=datetimes())
1189
1189
  def test_error_serialize(self, *, datetime: dt.datetime) -> None:
1190
1190
  with raises(
1191
- SerializeCompactError, match="Unable to serialize local datetime .*"
1191
+ SerializeCompactError, match="Unable to serialize plain datetime .*"
1192
1192
  ):
1193
1193
  _ = serialize_compact(datetime)
1194
1194
 
@@ -48,8 +48,8 @@ from utilities.functions import ensure_int
48
48
  from utilities.git import _GIT_REMOTE_GET_URL_ORIGIN, _GIT_REV_PARSE_ABBREV_REV_HEAD
49
49
  from utilities.hypothesis import (
50
50
  _SQLALCHEMY_ENGINE_DIALECTS,
51
- LocalDateTimesError,
52
51
  MaybeSearchStrategy,
52
+ PlainDateTimesError,
53
53
  Shape,
54
54
  ZonedDateTimesError,
55
55
  _Draw2DefaultGeneratedSentinelError,
@@ -70,7 +70,6 @@ from utilities.hypothesis import (
70
70
  int64s,
71
71
  int_arrays,
72
72
  lists_fixed_length,
73
- local_datetimes,
74
73
  min_and_max_datetimes,
75
74
  min_and_maybe_max_datetimes,
76
75
  min_and_maybe_max_sizes,
@@ -79,6 +78,7 @@ from utilities.hypothesis import (
79
78
  numbers,
80
79
  pairs,
81
80
  paths,
81
+ plain_datetimes,
82
82
  random_states,
83
83
  sentinels,
84
84
  sets_fixed_length,
@@ -677,42 +677,6 @@ class TestListsFixedLength:
677
677
  assert sorted(result) == result
678
678
 
679
679
 
680
- class TestLocalDateTimes:
681
- @given(data=data(), min_value=datetimes(), max_value=datetimes())
682
- @settings(suppress_health_check={HealthCheck.filter_too_much})
683
- def test_main(
684
- self, *, data: DataObject, min_value: dt.datetime, max_value: dt.datetime
685
- ) -> None:
686
- with assume_does_not_raise(InvalidArgument):
687
- datetime = data.draw(
688
- local_datetimes(min_value=min_value, max_value=max_value)
689
- )
690
- assert datetime.tzinfo is None
691
- assert min_value <= datetime <= max_value
692
-
693
- @given(data=data())
694
- def test_rounding(self, *, data: DataObject) -> None:
695
- min_value, max_value = data.draw(pairs(local_datetimes(), sorted=True))
696
- datetime = data.draw(
697
- local_datetimes(
698
- min_value=min_value,
699
- max_value=max_value,
700
- round_="standard",
701
- timedelta=MINUTE,
702
- )
703
- )
704
- assert isinstance(datetime, dt.datetime)
705
- assert datetime.second == datetime.microsecond == 0
706
- assert min_value <= datetime <= max_value
707
-
708
- @given(data=data())
709
- def test_error_rounding(self, *, data: DataObject) -> None:
710
- with raises(
711
- LocalDateTimesError, match="Rounding requires a timedelta; got None"
712
- ):
713
- _ = data.draw(local_datetimes(round_="standard"))
714
-
715
-
716
680
  class TestMinAndMaxDateTimes:
717
681
  @given(
718
682
  data=data(),
@@ -862,6 +826,42 @@ class TestPaths:
862
826
  validate_filepath(str(path))
863
827
 
864
828
 
829
+ class TestPlainDateTimes:
830
+ @given(data=data(), min_value=datetimes(), max_value=datetimes())
831
+ @settings(suppress_health_check={HealthCheck.filter_too_much})
832
+ def test_main(
833
+ self, *, data: DataObject, min_value: dt.datetime, max_value: dt.datetime
834
+ ) -> None:
835
+ with assume_does_not_raise(InvalidArgument):
836
+ datetime = data.draw(
837
+ plain_datetimes(min_value=min_value, max_value=max_value)
838
+ )
839
+ assert datetime.tzinfo is None
840
+ assert min_value <= datetime <= max_value
841
+
842
+ @given(data=data())
843
+ def test_rounding(self, *, data: DataObject) -> None:
844
+ min_value, max_value = data.draw(pairs(plain_datetimes(), sorted=True))
845
+ datetime = data.draw(
846
+ plain_datetimes(
847
+ min_value=min_value,
848
+ max_value=max_value,
849
+ round_="standard",
850
+ timedelta=MINUTE,
851
+ )
852
+ )
853
+ assert isinstance(datetime, dt.datetime)
854
+ assert datetime.second == datetime.microsecond == 0
855
+ assert min_value <= datetime <= max_value
856
+
857
+ @given(data=data())
858
+ def test_error_rounding(self, *, data: DataObject) -> None:
859
+ with raises(
860
+ PlainDateTimesError, match="Rounding requires a timedelta; got None"
861
+ ):
862
+ _ = data.draw(plain_datetimes(round_="standard"))
863
+
864
+
865
865
  class TestRandomStates:
866
866
  @given(data=data())
867
867
  def test_main(self, *, data: DataObject) -> None:
@@ -36,9 +36,9 @@ from utilities.errors import ImpossibleCaseError
36
36
  from utilities.functions import ensure_path
37
37
  from utilities.hypothesis import (
38
38
  datetime_durations,
39
- local_datetimes,
40
39
  numbers,
41
40
  paths,
41
+ plain_datetimes,
42
42
  text_ascii,
43
43
  timedeltas_2w,
44
44
  versions,
@@ -72,7 +72,7 @@ class TestSerializeAndParseObject:
72
72
  result = parse_object(dt.date, serialized)
73
73
  assert result == date
74
74
 
75
- @given(datetime=local_datetimes() | zoned_datetimes())
75
+ @given(datetime=plain_datetimes() | zoned_datetimes())
76
76
  def test_datetime(self, *, datetime: dt.datetime) -> None:
77
77
  serialized = serialize_object(datetime)
78
78
  result = parse_object(dt.datetime, serialized)
@@ -38,6 +38,7 @@ from utilities.period import (
38
38
  _PeriodTimeZoneNonUniqueError,
39
39
  _TPeriod,
40
40
  )
41
+ from utilities.whenever import SerializeZonedDateTimeError
41
42
 
42
43
  if TYPE_CHECKING:
43
44
  import datetime as dt
@@ -149,7 +150,8 @@ class TestPeriod:
149
150
  datetimes = data.draw(pairs(zoned_datetimes(time_zone=time_zone), sorted=True))
150
151
  start, end = datetimes
151
152
  period = Period(start, end)
152
- result = func(period)
153
+ with assume_does_not_raise(SerializeZonedDateTimeError):
154
+ result = func(period)
153
155
  assert search(
154
156
  r"^Period\(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,6})?, \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,6})?, .+\)$",
155
157
  result,
@@ -171,7 +173,8 @@ class TestPeriod:
171
173
  time_zone1, time_zone2 = time_zones
172
174
  with assume_does_not_raise(OverflowError, match="date value out of range"):
173
175
  period = Period(start.astimezone(time_zone1), end.astimezone(time_zone2))
174
- result = func(period)
176
+ with assume_does_not_raise(SerializeZonedDateTimeError):
177
+ result = func(period)
175
178
  assert search(
176
179
  r"^Period\(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,6})?[\+-]\d{2}:\d{2}(:\d{2})?\[.+\], \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,6})?[\+-]\d{2}:\d{2}(:\d{2})?\[.+\]\)$",
177
180
  result,