dycw-utilities 0.167.3__tar.gz → 0.168.1__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.

Potentially problematic release.


This version of dycw-utilities might be problematic. Click here for more details.

Files changed (221) hide show
  1. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/PKG-INFO +2 -2
  2. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/pyproject.toml +5 -5
  3. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/conftest.py +1 -1
  4. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_click.py +9 -9
  5. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_hypothesis.py +9 -9
  6. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_pydantic_settings.py +7 -0
  7. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_whenever.py +9 -9
  8. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/__init__.py +1 -1
  9. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/aeventkit.py +2 -1
  10. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/click.py +9 -9
  11. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/hypothesis.py +1 -1
  12. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/orjson.py +17 -17
  13. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/parse.py +2 -2
  14. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pydantic_settings.py +1 -1
  15. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pytest.py +2 -2
  16. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/timer.py +2 -2
  17. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/traceback.py +1 -1
  18. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/typed_settings.py +9 -9
  19. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/whenever.py +5 -5
  20. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/.gitignore +0 -0
  21. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/LICENSE +0 -0
  22. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/README.md +0 -0
  23. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/__init__.py +0 -0
  24. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/__init__.py +0 -0
  25. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_missing/__init__.py +0 -0
  26. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_missing/module.py +0 -0
  27. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_with/__init__.py +0 -0
  28. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_with/outer_1.py +0 -0
  29. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_with/outer_2.py +0 -0
  30. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  31. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  32. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  33. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  34. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_without/__init__.py +0 -0
  35. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_without/module_1.py +0 -0
  36. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/package_without/module_2.py +0 -0
  37. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/standalone.py +0 -0
  38. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/modules/with_imports.py +0 -0
  39. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  40. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  41. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  42. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  43. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  44. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  45. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  46. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  47. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_aeventkit.py +0 -0
  48. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_altair.py +0 -0
  49. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_asyncio.py +0 -0
  50. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_atomicwrites.py +0 -0
  51. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_atools.py +0 -0
  52. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_cachetools.py +0 -0
  53. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_concurrent.py +0 -0
  54. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_contextlib.py +0 -0
  55. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_contextvars.py +0 -0
  56. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_cryptography.py +0 -0
  57. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_cvxpy.py +0 -0
  58. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_dataclasses.py +0 -0
  59. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_docker.py +0 -0
  60. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_enum.py +0 -0
  61. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_errors.py +0 -0
  62. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_fastapi.py +0 -0
  63. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_fpdf2.py +0 -0
  64. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_functions.py +0 -0
  65. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_functools.py +0 -0
  66. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_getpass.py +0 -0
  67. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_git.py +0 -0
  68. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_gzip.py +0 -0
  69. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_hashlib.py +0 -0
  70. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_http.py +0 -0
  71. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_importlib.py +0 -0
  72. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_inflect.py +0 -0
  73. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_ipython.py +0 -0
  74. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_iterables.py +0 -0
  75. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_jinja2.py +0 -0
  76. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_json.py +0 -0
  77. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_jupyter.py +0 -0
  78. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_libcst.py +0 -0
  79. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_lightweight_charts.py +0 -0
  80. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_logging.py +0 -0
  81. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_math.py +0 -0
  82. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_memory_profiler.py +0 -0
  83. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_modules.py +0 -0
  84. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_more_itertools.py +0 -0
  85. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_numpy.py +0 -0
  86. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_objects/__init__.py +0 -0
  87. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_objects/objects.py +0 -0
  88. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_operator.py +0 -0
  89. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_optuna.py +0 -0
  90. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_orjson.py +0 -0
  91. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_os.py +0 -0
  92. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_parse.py +0 -0
  93. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_pathlib.py +0 -0
  94. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_pickle.py +0 -0
  95. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_platform.py +0 -0
  96. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_polars.py +0 -0
  97. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_polars_ols.py +0 -0
  98. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_postgres.py +0 -0
  99. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_pottery.py +0 -0
  100. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_pqdm.py +0 -0
  101. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_psutil.py +0 -0
  102. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_pydantic_settings_sops.py +0 -0
  103. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_pyinstrument.py +0 -0
  104. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_pytest.py +0 -0
  105. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_pytest_randomly.py +0 -0
  106. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_pytest_regressions.py +0 -0
  107. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_random.py +0 -0
  108. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_re.py +0 -0
  109. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_redis.py +0 -0
  110. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_reprlib.py +0 -0
  111. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_scipy.py +0 -0
  112. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_sentinel.py +0 -0
  113. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_shelve.py +0 -0
  114. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_slack_sdk.py +0 -0
  115. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_socket.py +0 -0
  116. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_sqlalchemy.py +0 -0
  117. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_sqlalchemy_polars.py +0 -0
  118. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_statsmodels.py +0 -0
  119. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_string.py +0 -0
  120. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_tempfile.py +0 -0
  121. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_testbook.py +0 -0
  122. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_text.py +0 -0
  123. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_threading.py +0 -0
  124. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_timer.py +0 -0
  125. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_traceback.py +0 -0
  126. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_typed_settings.py +0 -0
  127. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_types.py +0 -0
  128. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_typing.py +0 -0
  129. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_typing_funcs/__init__.py +0 -0
  130. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_typing_funcs/no_future.py +0 -0
  131. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_typing_funcs/with_future.py +0 -0
  132. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_tzdata.py +0 -0
  133. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_tzlocal.py +0 -0
  134. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_uuid.py +0 -0
  135. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_version.py +0 -0
  136. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_warnings.py +0 -0
  137. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_zipfile.py +0 -0
  138. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/tests/test_zoneinfo.py +0 -0
  139. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/altair.py +0 -0
  140. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/asyncio.py +0 -0
  141. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/atomicwrites.py +0 -0
  142. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/atools.py +0 -0
  143. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/cachetools.py +0 -0
  144. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/concurrent.py +0 -0
  145. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/contextlib.py +0 -0
  146. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/contextvars.py +0 -0
  147. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/cryptography.py +0 -0
  148. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/cvxpy.py +0 -0
  149. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/dataclasses.py +0 -0
  150. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/docker.py +0 -0
  151. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/enum.py +0 -0
  152. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/errors.py +0 -0
  153. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/fastapi.py +0 -0
  154. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/fpdf2.py +0 -0
  155. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/functions.py +0 -0
  156. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/functools.py +0 -0
  157. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/getpass.py +0 -0
  158. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/git.py +0 -0
  159. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/gzip.py +0 -0
  160. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/hashlib.py +0 -0
  161. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/http.py +0 -0
  162. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/importlib.py +0 -0
  163. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/inflect.py +0 -0
  164. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/ipython.py +0 -0
  165. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/iterables.py +0 -0
  166. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/jinja2.py +0 -0
  167. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/json.py +0 -0
  168. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/jupyter.py +0 -0
  169. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/libcst.py +0 -0
  170. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/lightweight_charts.py +0 -0
  171. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/logging.py +0 -0
  172. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/math.py +0 -0
  173. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/memory_profiler.py +0 -0
  174. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/modules.py +0 -0
  175. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/more_itertools.py +0 -0
  176. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/numpy.py +0 -0
  177. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/operator.py +0 -0
  178. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/optuna.py +0 -0
  179. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/os.py +0 -0
  180. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pathlib.py +0 -0
  181. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pickle.py +0 -0
  182. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/platform.py +0 -0
  183. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/polars.py +0 -0
  184. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/polars_ols.py +0 -0
  185. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/postgres.py +0 -0
  186. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pottery.py +0 -0
  187. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pqdm.py +0 -0
  188. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/psutil.py +0 -0
  189. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/py.typed +0 -0
  190. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pydantic_settings_sops.py +0 -0
  191. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pyinstrument.py +0 -0
  192. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pytest_plugins/__init__.py +0 -0
  193. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
  194. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
  195. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/pytest_regressions.py +0 -0
  196. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/random.py +0 -0
  197. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/re.py +0 -0
  198. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/redis.py +0 -0
  199. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/reprlib.py +0 -0
  200. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/scipy.py +0 -0
  201. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/sentinel.py +0 -0
  202. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/shelve.py +0 -0
  203. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/slack_sdk.py +0 -0
  204. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/socket.py +0 -0
  205. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/sqlalchemy.py +0 -0
  206. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/sqlalchemy_polars.py +0 -0
  207. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/statsmodels.py +0 -0
  208. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/string.py +0 -0
  209. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/tempfile.py +0 -0
  210. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/testbook.py +0 -0
  211. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/text.py +0 -0
  212. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/threading.py +0 -0
  213. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/types.py +0 -0
  214. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/typing.py +0 -0
  215. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/tzdata.py +0 -0
  216. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/tzlocal.py +0 -0
  217. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/uuid.py +0 -0
  218. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/version.py +0 -0
  219. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/warnings.py +0 -0
  220. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/zipfile.py +0 -0
  221. {dycw_utilities-0.167.3 → dycw_utilities-0.168.1}/src/utilities/zoneinfo.py +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.167.3
3
+ Version: 0.168.1
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
7
7
  Requires-Dist: atomicwrites<1.5,>=1.4.1
8
8
  Requires-Dist: typing-extensions<4.16,>=4.15.0
9
9
  Requires-Dist: tzlocal<5.4,>=5.3.1
10
- Requires-Dist: whenever<0.9,>=0.8.9
10
+ Requires-Dist: whenever<0.10,>=0.9.0
11
11
  Provides-Extra: logging
12
12
  Requires-Dist: coloredlogs<15.1,>=15.0.1; extra == 'logging'
13
13
  Provides-Extra: test
@@ -31,7 +31,7 @@ core = [
31
31
  "atomicwrites >=1.4.1, <1.5",
32
32
  "typing-extensions >=4.15.0, <4.16",
33
33
  "tzlocal >=5.3.1, <5.4",
34
- "whenever >=0.8.9, <0.9",
34
+ "whenever >=0.9.0, <0.10",
35
35
  ]
36
36
  cryptography = [
37
37
  "cryptography >=46.0.1, <46.1",
@@ -90,7 +90,7 @@ jupyter-test = [
90
90
  "polars",
91
91
  ]
92
92
  libcst = [
93
- "libcst >=1.8.2, <1.9",
93
+ "libcst >=1.8.5, <1.9",
94
94
  ]
95
95
  lightweight-charts = [
96
96
  "lightweight-charts >=2.1, <2.2",
@@ -244,12 +244,12 @@ dependencies = [
244
244
  "atomicwrites >=1.4.1, <1.5",
245
245
  "typing-extensions >=4.15.0, <4.16",
246
246
  "tzlocal >=5.3.1, <5.4",
247
- "whenever >=0.8.9, <0.9",
247
+ "whenever >=0.9.0, <0.10",
248
248
  ]
249
249
  name = "dycw-utilities"
250
250
  readme = "README.md"
251
251
  requires-python = ">= 3.12"
252
- version = "0.167.3"
252
+ version = "0.168.1"
253
253
 
254
254
  [project.entry-points.pytest11]
255
255
  pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
@@ -282,7 +282,7 @@ test = [
282
282
  # bump-my-version
283
283
  [tool.bumpversion]
284
284
  allow_dirty = true
285
- current_version = "0.167.3"
285
+ current_version = "0.168.1"
286
286
 
287
287
  [[tool.bumpversion.files]]
288
288
  filename = "src/utilities/__init__.py"
@@ -176,7 +176,7 @@ def _is_to_drop(table: str, /) -> bool:
176
176
  text = extract_group(r"^(\d{8}T\d{2,})_", table)
177
177
  except ExtractGroupError:
178
178
  return True
179
- date_time = PlainDateTime.parse_common_iso(text)
179
+ date_time = PlainDateTime.parse_iso(text)
180
180
  age = now.difference(date_time, ignore_dst=True)
181
181
  return age >= MINUTE
182
182
 
@@ -124,21 +124,21 @@ class TestParameters:
124
124
  param=Date(),
125
125
  name="date",
126
126
  strategy=dates(),
127
- serialize=whenever.Date.format_common_iso,
127
+ serialize=whenever.Date.format_iso,
128
128
  failable=True,
129
129
  ),
130
130
  _Case(
131
131
  param=DateDelta(),
132
132
  name="date delta",
133
133
  strategy=date_deltas(parsable=True),
134
- serialize=whenever.DateDelta.format_common_iso,
134
+ serialize=whenever.DateDelta.format_iso,
135
135
  failable=True,
136
136
  ),
137
137
  _Case(
138
138
  param=DateTimeDelta(),
139
139
  name="date-time delta",
140
140
  strategy=date_time_deltas(parsable=True),
141
- serialize=whenever.DateTimeDelta.format_common_iso,
141
+ serialize=whenever.DateTimeDelta.format_iso,
142
142
  failable=True,
143
143
  ),
144
144
  _Case(
@@ -222,7 +222,7 @@ class TestParameters:
222
222
  param=MonthDay(),
223
223
  name="month-day",
224
224
  strategy=month_days(),
225
- serialize=whenever.MonthDay.format_common_iso,
225
+ serialize=whenever.MonthDay.format_iso,
226
226
  failable=True,
227
227
  ),
228
228
  _Case(
@@ -232,21 +232,21 @@ class TestParameters:
232
232
  param=PlainDateTime(),
233
233
  name="plain date-time",
234
234
  strategy=plain_date_times(),
235
- serialize=whenever.PlainDateTime.format_common_iso,
235
+ serialize=whenever.PlainDateTime.format_iso,
236
236
  failable=True,
237
237
  ),
238
238
  _Case(
239
239
  param=Time(),
240
240
  name="time",
241
241
  strategy=times(),
242
- serialize=whenever.Time.format_common_iso,
242
+ serialize=whenever.Time.format_iso,
243
243
  failable=True,
244
244
  ),
245
245
  _Case(
246
246
  param=TimeDelta(),
247
247
  name="time-delta",
248
248
  strategy=time_deltas(),
249
- serialize=whenever.TimeDelta.format_common_iso,
249
+ serialize=whenever.TimeDelta.format_iso,
250
250
  failable=True,
251
251
  ),
252
252
  _Case(
@@ -256,14 +256,14 @@ class TestParameters:
256
256
  param=YearMonth(),
257
257
  name="year-month",
258
258
  strategy=year_months(),
259
- serialize=whenever.YearMonth.format_common_iso,
259
+ serialize=whenever.YearMonth.format_iso,
260
260
  failable=True,
261
261
  ),
262
262
  _Case(
263
263
  param=ZonedDateTime(),
264
264
  name="zoned date-time",
265
265
  strategy=zoned_date_times(),
266
- serialize=whenever.ZonedDateTime.format_common_iso,
266
+ serialize=whenever.ZonedDateTime.format_iso,
267
267
  failable=True,
268
268
  ),
269
269
  ]
@@ -209,7 +209,7 @@ class TestDateDeltas:
209
209
  if max_value is not None:
210
210
  assert days <= to_days(max_value)
211
211
  if parsable:
212
- assert DateDelta.parse_common_iso(delta.format_common_iso()) == delta
212
+ assert DateDelta.parse_iso(delta.format_iso()) == delta
213
213
 
214
214
 
215
215
  class TestDatePeriods:
@@ -247,7 +247,7 @@ class TestDateTimeDeltas:
247
247
  if max_value is not None:
248
248
  assert nanos <= to_nanoseconds(max_value)
249
249
  if parsable:
250
- assert DateTimeDelta.parse_common_iso(delta.format_common_iso()) == delta
250
+ assert DateTimeDelta.parse_iso(delta.format_iso()) == delta
251
251
  if nativable:
252
252
  assert isinstance(to_py_time_delta(delta), dt.timedelta)
253
253
 
@@ -262,7 +262,7 @@ class TestDates:
262
262
  dates(min_value=min_value, max_value=max_value, two_digit=two_digit)
263
263
  )
264
264
  assert isinstance(date, Date)
265
- assert Date.parse_common_iso(date.format_common_iso()) == date
265
+ assert Date.parse_iso(date.format_iso()) == date
266
266
  if min_value is not None:
267
267
  assert date >= min_value
268
268
  if max_value is not None:
@@ -722,7 +722,7 @@ class TestMonthDays:
722
722
  with assume_does_not_raise(InvalidArgument):
723
723
  month_day = data.draw(month_days(min_value=min_value, max_value=max_value))
724
724
  assert isinstance(month_day, MonthDay)
725
- assert MonthDay.parse_common_iso(month_day.format_common_iso()) == month_day
725
+ assert MonthDay.parse_iso(month_day.format_iso()) == month_day
726
726
  if min_value is not None:
727
727
  assert month_day >= min_value
728
728
  if max_value is not None:
@@ -786,7 +786,7 @@ class TestPlainDateTimes:
786
786
  plain_date_times(min_value=min_value, max_value=max_value)
787
787
  )
788
788
  assert isinstance(datetime, PlainDateTime)
789
- assert PlainDateTime.parse_common_iso(datetime.format_common_iso()) == datetime
789
+ assert PlainDateTime.parse_iso(datetime.format_iso()) == datetime
790
790
  if min_value is not None:
791
791
  assert datetime >= min_value
792
792
  if max_value is not None:
@@ -1037,7 +1037,7 @@ class TestTimeDeltas:
1037
1037
  with assume_does_not_raise(InvalidArgument):
1038
1038
  delta = data.draw(time_deltas(min_value=min_value, max_value=max_value))
1039
1039
  assert isinstance(delta, TimeDelta)
1040
- assert TimeDelta.parse_common_iso(delta.format_common_iso()) == delta
1040
+ assert TimeDelta.parse_iso(delta.format_iso()) == delta
1041
1041
  assert isinstance(to_py_time_delta(delta), dt.timedelta)
1042
1042
  if min_value is not None:
1043
1043
  assert delta >= min_value
@@ -1067,7 +1067,7 @@ class TestTimes:
1067
1067
  with assume_does_not_raise(InvalidArgument):
1068
1068
  time = data.draw(times(min_value=min_value, max_value=max_value))
1069
1069
  assert isinstance(time, Time)
1070
- assert Time.parse_common_iso(time.format_common_iso()) == time
1070
+ assert Time.parse_iso(time.format_iso()) == time
1071
1071
  if min_value is not None:
1072
1072
  assert time >= min_value
1073
1073
  if max_value is not None:
@@ -1204,7 +1204,7 @@ class TestYearMonths:
1204
1204
  )
1205
1205
  )
1206
1206
  assert isinstance(year_month, YearMonth)
1207
- assert YearMonth.parse_common_iso(year_month.format_common_iso()) == year_month
1207
+ assert YearMonth.parse_iso(year_month.format_iso()) == year_month
1208
1208
  if min_value is not None:
1209
1209
  assert year_month >= min_value
1210
1210
  if max_value is not None:
@@ -1258,7 +1258,7 @@ class TestZonedDateTimes:
1258
1258
  )
1259
1259
  assert isinstance(datetime, ZonedDateTime)
1260
1260
  _ = datetime.py_datetime()
1261
- assert ZonedDateTime.parse_common_iso(datetime.format_common_iso()) == datetime
1261
+ assert ZonedDateTime.parse_iso(datetime.format_iso()) == datetime
1262
1262
  assert datetime.tz == time_zone.key
1263
1263
  if min_value is not None:
1264
1264
  assert datetime >= min_value
@@ -20,6 +20,13 @@ if TYPE_CHECKING:
20
20
 
21
21
 
22
22
  class TestCustomBaseSettings:
23
+ def test_hashable(self) -> None:
24
+ class Settings(CustomBaseSettings):
25
+ x: int = 1
26
+
27
+ settings = load_settings(Settings)
28
+ _ = hash(settings)
29
+
23
30
  def test_json(self, *, tmp_path: Path) -> None:
24
31
  file = tmp_path.joinpath("settings.json")
25
32
  _ = file.write_text(json.dumps({"x": 1}))
@@ -345,14 +345,14 @@ class TestFormatCompact:
345
345
  def test_date(self, *, date: Date) -> None:
346
346
  result = format_compact(date)
347
347
  assert isinstance(result, str)
348
- parsed = Date.parse_common_iso(result)
348
+ parsed = Date.parse_iso(result)
349
349
  assert parsed == date
350
350
 
351
351
  @given(time=times())
352
352
  def test_time(self, *, time: Time) -> None:
353
353
  result = format_compact(time)
354
354
  assert isinstance(result, str)
355
- parsed = Time.parse_common_iso(result)
355
+ parsed = Time.parse_iso(result)
356
356
  assert parsed.nanosecond == 0
357
357
  expected = time.round()
358
358
  assert parsed == expected
@@ -361,7 +361,7 @@ class TestFormatCompact:
361
361
  def test_plain_date_time(self, *, date_time: PlainDateTime) -> None:
362
362
  result = format_compact(date_time)
363
363
  assert isinstance(result, str)
364
- parsed = PlainDateTime.parse_common_iso(result)
364
+ parsed = PlainDateTime.parse_iso(result)
365
365
  assert parsed.nanosecond == 0
366
366
  expected = date_time.round()
367
367
  assert parsed == expected
@@ -736,10 +736,10 @@ class TestMinMax:
736
736
  _ = ZONED_DATE_TIME_MAX.add(microseconds=1)
737
737
 
738
738
  def _format_parse_date_delta(self, delta: DateDelta, /) -> None:
739
- _ = DateDelta.parse_common_iso(delta.format_common_iso())
739
+ _ = DateDelta.parse_iso(delta.format_iso())
740
740
 
741
741
  def _format_parse_date_time_delta(self, delta: DateTimeDelta, /) -> None:
742
- _ = DateTimeDelta.parse_common_iso(delta.format_common_iso())
742
+ _ = DateTimeDelta.parse_iso(delta.format_iso())
743
743
 
744
744
 
745
745
  class TestMinMaxDate:
@@ -1025,7 +1025,7 @@ class TestToDate:
1025
1025
 
1026
1026
  @given(date=dates())
1027
1027
  def test_str(self, *, date: Date) -> None:
1028
- assert to_date(date.format_common_iso()) == date
1028
+ assert to_date(date.format_iso()) == date
1029
1029
 
1030
1030
  @given(date=dates())
1031
1031
  def test_py_date(self, *, date: Date) -> None:
@@ -1482,7 +1482,7 @@ class TestToTime:
1482
1482
 
1483
1483
  @given(time=times())
1484
1484
  def test_str(self, *, time: Time) -> None:
1485
- assert to_time(time.format_common_iso()) == time
1485
+ assert to_time(time.format_iso()) == time
1486
1486
 
1487
1487
  @given(time=times())
1488
1488
  def test_py_time(self, *, time: Time) -> None:
@@ -1628,7 +1628,7 @@ class TestToZonedDateTime:
1628
1628
  def test_str(
1629
1629
  self, *, data: DataObject, date_time: ZonedDateTime, time_zone: ZoneInfo
1630
1630
  ) -> None:
1631
- text = date_time.format_common_iso()
1631
+ text = date_time.format_iso()
1632
1632
  text_use = data.draw(sampled_from([text, text.replace("/", "_")]))
1633
1633
  result = to_zoned_date_time(text_use, time_zone=time_zone)
1634
1634
  expected = date_time.to_tz(time_zone.key)
@@ -1699,7 +1699,7 @@ class TestToZonedDateTime:
1699
1699
 
1700
1700
 
1701
1701
  class TestTwoDigitYearMonth:
1702
- def test_parse_common_iso(self) -> None:
1702
+ def test_parse_iso(self) -> None:
1703
1703
  result = two_digit_year_month(0, 1)
1704
1704
  expected = YearMonth(2000, 1)
1705
1705
  assert result == expected
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.167.3"
3
+ __version__ = "0.168.1"
@@ -169,7 +169,8 @@ class LiftedEvent[F: Callable[..., MaybeCoro[None]]]:
169
169
  def __await__(self) -> Any:
170
170
  return self.event.__await__() # pragma: no cover
171
171
 
172
- __aiter__ = aiter
172
+ def __aiter__(self) -> Any:
173
+ return self.event.aiter() # pragma: no cover
173
174
 
174
175
  def __contains__(self, c: Any, /) -> bool:
175
176
  return self.event.__contains__(c) # pragma: no cover
@@ -72,7 +72,7 @@ class Date(ParamType):
72
72
  return value
73
73
  case str():
74
74
  try:
75
- return whenever.Date.parse_common_iso(value)
75
+ return whenever.Date.parse_iso(value)
76
76
  except ValueError as error:
77
77
  self.fail(str(error), param, ctx)
78
78
  case never:
@@ -98,7 +98,7 @@ class DateDelta(ParamType):
98
98
  return value
99
99
  case str():
100
100
  try:
101
- return whenever.DateDelta.parse_common_iso(value)
101
+ return whenever.DateDelta.parse_iso(value)
102
102
  except ValueError as error:
103
103
  self.fail(str(error), param, ctx)
104
104
  case never:
@@ -124,7 +124,7 @@ class DateTimeDelta(ParamType):
124
124
  return value
125
125
  case str():
126
126
  try:
127
- return whenever.DateTimeDelta.parse_common_iso(value)
127
+ return whenever.DateTimeDelta.parse_iso(value)
128
128
  except ValueError as error:
129
129
  self.fail(str(error), param, ctx)
130
130
  case never:
@@ -235,7 +235,7 @@ class MonthDay(ParamType):
235
235
  return value
236
236
  case str():
237
237
  try:
238
- return whenever.MonthDay.parse_common_iso(value)
238
+ return whenever.MonthDay.parse_iso(value)
239
239
  except ValueError as error:
240
240
  self.fail(str(error), param, ctx)
241
241
  case never:
@@ -284,7 +284,7 @@ class PlainDateTime(ParamType):
284
284
  return value
285
285
  case str():
286
286
  try:
287
- return whenever.PlainDateTime.parse_common_iso(value)
287
+ return whenever.PlainDateTime.parse_iso(value)
288
288
  except ValueError as error:
289
289
  self.fail(str(error), param, ctx)
290
290
  case never:
@@ -310,7 +310,7 @@ class Time(ParamType):
310
310
  return value
311
311
  case str():
312
312
  try:
313
- return whenever.Time.parse_common_iso(value)
313
+ return whenever.Time.parse_iso(value)
314
314
  except ValueError as error:
315
315
  self.fail(str(error), param, ctx)
316
316
  case never:
@@ -336,7 +336,7 @@ class TimeDelta(ParamType):
336
336
  return value
337
337
  case str():
338
338
  try:
339
- return whenever.TimeDelta.parse_common_iso(value)
339
+ return whenever.TimeDelta.parse_iso(value)
340
340
  except ValueError as error:
341
341
  self.fail(str(error), param, ctx)
342
342
  case never:
@@ -388,7 +388,7 @@ class YearMonth(ParamType):
388
388
  return value
389
389
  case str():
390
390
  try:
391
- return whenever.YearMonth.parse_common_iso(value)
391
+ return whenever.YearMonth.parse_iso(value)
392
392
  except ValueError as error:
393
393
  self.fail(str(error), param, ctx)
394
394
  case never:
@@ -414,7 +414,7 @@ class ZonedDateTime(ParamType):
414
414
  return value
415
415
  case str():
416
416
  try:
417
- return whenever.ZonedDateTime.parse_common_iso(value)
417
+ return whenever.ZonedDateTime.parse_iso(value)
418
418
  except ValueError as error:
419
419
  self.fail(str(error), param, ctx)
420
420
  case never:
@@ -1570,7 +1570,7 @@ def zoned_date_times(
1570
1570
  with (
1571
1571
  assume_does_not_raise(RepeatedTime),
1572
1572
  assume_does_not_raise(SkippedTime),
1573
- assume_does_not_raise(ValueError, match=r"Resulting datetime is out of range"),
1573
+ assume_does_not_raise(ValueError, match=r"Resulting time is out of range"),
1574
1574
  ):
1575
1575
  zoned = plain.assume_tz(time_zone_.key, disambiguate="raise")
1576
1576
  with assume_does_not_raise(OverflowError, match=r"date value out of range"):
@@ -481,49 +481,49 @@ def _object_hook(
481
481
  if match := _NONE_PATTERN.search(text):
482
482
  return None
483
483
  if match := _DATE_PATTERN.search(text):
484
- return Date.parse_common_iso(match.group(1))
484
+ return Date.parse_iso(match.group(1))
485
485
  if match := _DATE_DELTA_PATTERN.search(text):
486
- return DateDelta.parse_common_iso(match.group(1))
486
+ return DateDelta.parse_iso(match.group(1))
487
487
  if match := _DATE_PERIOD_PATTERN.search(text):
488
- start, end = map(Date.parse_common_iso, match.group(1).split(","))
488
+ start, end = map(Date.parse_iso, match.group(1).split(","))
489
489
  return DatePeriod(start, end)
490
490
  if match := _DATE_TIME_DELTA_PATTERN.search(text):
491
- return DateTimeDelta.parse_common_iso(match.group(1))
491
+ return DateTimeDelta.parse_iso(match.group(1))
492
492
  if match := _FLOAT_PATTERN.search(text):
493
493
  return float(match.group(1))
494
494
  if match := _MONTH_DAY_PATTERN.search(text):
495
- return MonthDay.parse_common_iso(match.group(1))
495
+ return MonthDay.parse_iso(match.group(1))
496
496
  if match := _PATH_PATTERN.search(text):
497
497
  return Path(match.group(1))
498
498
  if match := _PLAIN_DATE_TIME_PATTERN.search(text):
499
- return PlainDateTime.parse_common_iso(match.group(1))
499
+ return PlainDateTime.parse_iso(match.group(1))
500
500
  if match := _PY_DATE_PATTERN.search(text):
501
- return Date.parse_common_iso(match.group(1)).py_date()
501
+ return Date.parse_iso(match.group(1)).py_date()
502
502
  if match := _PY_PLAIN_DATE_TIME_PATTERN.search(text):
503
- return PlainDateTime.parse_common_iso(match.group(1)).py_datetime()
503
+ return PlainDateTime.parse_iso(match.group(1)).py_datetime()
504
504
  if match := _PY_TIME_PATTERN.search(text):
505
- return Time.parse_common_iso(match.group(1)).py_time()
505
+ return Time.parse_iso(match.group(1)).py_time()
506
506
  if match := _PY_ZONED_DATE_TIME_PATTERN.search(text):
507
- return ZonedDateTime.parse_common_iso(match.group(1)).py_datetime()
507
+ return ZonedDateTime.parse_iso(match.group(1)).py_datetime()
508
508
  if match := _TIME_PATTERN.search(text):
509
- return Time.parse_common_iso(match.group(1))
509
+ return Time.parse_iso(match.group(1))
510
510
  if match := _TIME_DELTA_PATTERN.search(text):
511
- return TimeDelta.parse_common_iso(match.group(1))
511
+ return TimeDelta.parse_iso(match.group(1))
512
512
  if match := _TIME_PERIOD_PATTERN.search(text):
513
- start, end = map(Time.parse_common_iso, match.group(1).split(","))
513
+ start, end = map(Time.parse_iso, match.group(1).split(","))
514
514
  return TimePeriod(start, end)
515
515
  if match := _UUID_PATTERN.search(text):
516
516
  return UUID(match.group(1))
517
517
  if match := _VERSION_PATTERN.search(text):
518
518
  return parse_version(match.group(1))
519
519
  if match := _YEAR_MONTH_PATTERN.search(text):
520
- return YearMonth.parse_common_iso(match.group(1))
520
+ return YearMonth.parse_iso(match.group(1))
521
521
  if match := _ZONED_DATE_TIME_PATTERN.search(text):
522
- return ZonedDateTime.parse_common_iso(match.group(1))
522
+ return ZonedDateTime.parse_iso(match.group(1))
523
523
  if match := _ZONED_DATE_TIME_PERIOD_PATTERN.search(text):
524
524
  start, end = match.group(1).split(",")
525
- end = ZonedDateTime.parse_common_iso(end)
526
- start = PlainDateTime.parse_common_iso(start).assume_tz(end.tz)
525
+ end = ZonedDateTime.parse_iso(end)
526
+ start = PlainDateTime.parse_iso(start).assume_tz(end.tz)
527
527
  return ZonedDateTimePeriod(start, end)
528
528
  if (
529
529
  exc_class := _object_hook_exception_class(
@@ -204,7 +204,7 @@ def _parse_object_type(
204
204
  ),
205
205
  ):
206
206
  try:
207
- return cls.parse_common_iso(text)
207
+ return cls.parse_iso(text)
208
208
  except ValueError:
209
209
  raise _ParseObjectParseError(type_=cls, text=text) from None
210
210
  if issubclass(cls, Path):
@@ -477,7 +477,7 @@ def serialize_object(
477
477
  ZonedDateTime,
478
478
  ),
479
479
  ):
480
- return obj.format_common_iso()
480
+ return obj.format_iso()
481
481
  if isinstance(obj, Enum):
482
482
  return obj.name
483
483
  if isinstance(obj, dict):
@@ -38,7 +38,7 @@ class CustomBaseSettings(BaseSettings):
38
38
 
39
39
  # config
40
40
  model_config: ClassVar[SettingsConfigDict] = SettingsConfigDict(
41
- env_nested_delimiter="__"
41
+ frozen=True, env_nested_delimiter="__"
42
42
  )
43
43
 
44
44
  @classmethod
@@ -299,7 +299,7 @@ def _skipif_recent(*, root: PathLike | None = None, delta: Delta = SECOND) -> No
299
299
  except FileNotFoundError:
300
300
  return
301
301
  try:
302
- last = ZonedDateTime.parse_common_iso(contents)
302
+ last = ZonedDateTime.parse_iso(contents)
303
303
  except ValueError:
304
304
  return
305
305
  now = get_now_local()
@@ -328,7 +328,7 @@ def _get_name() -> str:
328
328
  def _write(root: PathLike | None = None, /) -> None:
329
329
  path = _get_path(root)
330
330
  with writer(path, overwrite=True) as temp:
331
- _ = temp.write_text(get_now_local().format_common_iso())
331
+ _ = temp.write_text(get_now_local().format_iso())
332
332
 
333
333
 
334
334
  __all__ = [
@@ -56,11 +56,11 @@ class Timer:
56
56
 
57
57
  @override
58
58
  def __repr__(self) -> str:
59
- return self.timedelta.format_common_iso()
59
+ return self.timedelta.format_iso()
60
60
 
61
61
  @override
62
62
  def __str__(self) -> str:
63
- return self.timedelta.format_common_iso()
63
+ return self.timedelta.format_iso()
64
64
 
65
65
  # comparison
66
66
 
@@ -98,7 +98,7 @@ def _yield_header_lines(
98
98
  yield f"Date/time | {format_compact(now)}"
99
99
  start_use = to_zoned_date_time(start).to_tz(LOCAL_TIME_ZONE_NAME)
100
100
  yield f"Started | {format_compact(start_use)}"
101
- yield f"Duration | {(now - start_use).format_common_iso()}"
101
+ yield f"Duration | {(now - start_use).format_iso()}"
102
102
  yield f"User | {getuser()}"
103
103
  yield f"Host | {gethostname()}"
104
104
  yield f"Process ID | {getpid()}"
@@ -57,19 +57,19 @@ class ExtendedTSConverter(TSConverter):
57
57
  ) -> None:
58
58
  super().__init__(resolve_paths=resolve_paths, strlist_sep=strlist_sep)
59
59
  cases: list[_ConverterItem] = [
60
- (Date, Date.parse_common_iso),
61
- (DateDelta, DateDelta.parse_common_iso),
62
- (DateTimeDelta, DateTimeDelta.parse_common_iso),
60
+ (Date, Date.parse_iso),
61
+ (DateDelta, DateDelta.parse_iso),
62
+ (DateTimeDelta, DateTimeDelta.parse_iso),
63
63
  (IPv4Address, IPv4Address),
64
64
  (IPv6Address, IPv6Address),
65
- (MonthDay, MonthDay.parse_common_iso),
65
+ (MonthDay, MonthDay.parse_iso),
66
66
  (Path, partial(_parse_path, resolve=resolve_paths, pwd=Path.cwd())),
67
- (PlainDateTime, PlainDateTime.parse_common_iso),
68
- (Time, Time.parse_common_iso),
69
- (TimeDelta, TimeDelta.parse_common_iso),
67
+ (PlainDateTime, PlainDateTime.parse_iso),
68
+ (Time, Time.parse_iso),
69
+ (TimeDelta, TimeDelta.parse_iso),
70
70
  (UUID, UUID),
71
- (YearMonth, YearMonth.parse_common_iso),
72
- (ZonedDateTime, ZonedDateTime.parse_common_iso),
71
+ (YearMonth, YearMonth.parse_iso),
72
+ (ZonedDateTime, ZonedDateTime.parse_iso),
73
73
  *extra,
74
74
  ]
75
75
  extras = {cls: _make_converter(cls, func) for cls, func in cases}
@@ -922,7 +922,7 @@ def to_date(
922
922
  case None:
923
923
  return get_today(time_zone)
924
924
  case str():
925
- return Date.parse_common_iso(date)
925
+ return Date.parse_iso(date)
926
926
  case dt.date():
927
927
  return Date.from_py_date(date)
928
928
  case Callable() as func:
@@ -1505,7 +1505,7 @@ def to_time(
1505
1505
  case None:
1506
1506
  return get_time(time_zone)
1507
1507
  case str():
1508
- return Time.parse_common_iso(time)
1508
+ return Time.parse_iso(time)
1509
1509
  case dt.time():
1510
1510
  return Time.from_py_time(time)
1511
1511
  case Callable() as func:
@@ -1733,7 +1733,7 @@ def to_zoned_date_time(
1733
1733
  case None:
1734
1734
  return get_now(UTC if time_zone is None else time_zone)
1735
1735
  case str() as text:
1736
- date_time_use = ZonedDateTime.parse_common_iso(text.replace("~", "/"))
1736
+ date_time_use = ZonedDateTime.parse_iso(text.replace("~", "/"))
1737
1737
  case dt.datetime() as py_date_time:
1738
1738
  if isinstance(date_time.tzinfo, ZoneInfo):
1739
1739
  py_date_time_use = py_date_time
@@ -1797,7 +1797,7 @@ class WheneverLogRecord(LogRecord):
1797
1797
  name, level, pathname, lineno, msg, args, exc_info, func, sinfo
1798
1798
  )
1799
1799
  length = self._get_length()
1800
- plain = format(get_now_local().to_plain().format_common_iso(), f"{length}s")
1800
+ plain = format(get_now_local().to_plain().format_iso(), f"{length}s")
1801
1801
  self.zoned_datetime = f"{plain}[{LOCAL_TIME_ZONE_NAME}]"
1802
1802
 
1803
1803
  @classmethod
@@ -1805,7 +1805,7 @@ class WheneverLogRecord(LogRecord):
1805
1805
  def _get_length(cls) -> int:
1806
1806
  """Get maximum length of a formatted string."""
1807
1807
  now = get_now_local().replace(nanosecond=1000).to_plain()
1808
- return len(now.format_common_iso())
1808
+ return len(now.format_iso())
1809
1809
 
1810
1810
 
1811
1811
  ##