dycw-utilities 0.131.6__tar.gz → 0.131.7__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 (220) hide show
  1. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/PKG-INFO +1 -1
  2. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/pyproject.toml +2 -2
  3. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_hypothesis.py +35 -1
  4. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/__init__.py +1 -1
  5. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/hypothesis.py +89 -15
  6. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/.gitignore +0 -0
  7. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/LICENSE +0 -0
  8. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/README.md +0 -0
  9. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/__init__.py +0 -0
  10. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/conftest.py +0 -0
  11. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/__init__.py +0 -0
  12. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_missing/__init__.py +0 -0
  13. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_missing/module.py +0 -0
  14. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_with/__init__.py +0 -0
  15. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_with/outer_1.py +0 -0
  16. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_with/outer_2.py +0 -0
  17. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  18. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  19. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  20. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  21. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_without/__init__.py +0 -0
  22. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_without/module_1.py +0 -0
  23. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/package_without/module_2.py +0 -0
  24. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/standalone.py +0 -0
  25. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/modules/with_imports.py +0 -0
  26. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  27. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  28. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  29. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  30. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  31. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  32. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  33. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  34. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_aiolimiter.py +0 -0
  35. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_altair.py +0 -0
  36. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_asyncio.py +0 -0
  37. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_asyncio_classes/__init__.py +0 -0
  38. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_asyncio_classes/loopers.py +0 -0
  39. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_asyncio_classes/redis.py +0 -0
  40. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_atomicwrites.py +0 -0
  41. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_atools.py +0 -0
  42. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_cachetools.py +0 -0
  43. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_click.py +0 -0
  44. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_concurrent.py +0 -0
  45. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_contextlib.py +0 -0
  46. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_contextvars.py +0 -0
  47. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_cryptography.py +0 -0
  48. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_cvxpy.py +0 -0
  49. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_dataclasses.py +0 -0
  50. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_datetime.py +0 -0
  51. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_enum.py +0 -0
  52. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_errors.py +0 -0
  53. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_eventkit.py +0 -0
  54. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_fastapi.py +0 -0
  55. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_fpdf2.py +0 -0
  56. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_functions.py +0 -0
  57. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_functools.py +0 -0
  58. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_getpass.py +0 -0
  59. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_git.py +0 -0
  60. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_hashlib.py +0 -0
  61. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_http.py +0 -0
  62. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_importlib.py +0 -0
  63. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_inflect.py +0 -0
  64. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_ipython.py +0 -0
  65. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_iterables.py +0 -0
  66. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_jupyter.py +0 -0
  67. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_libcst.py +0 -0
  68. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_lightweight_charts.py +0 -0
  69. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_logging.py +0 -0
  70. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_luigi.py +0 -0
  71. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_math.py +0 -0
  72. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_memory_profiler.py +0 -0
  73. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_modules.py +0 -0
  74. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_more_itertools.py +0 -0
  75. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_numpy.py +0 -0
  76. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_operator.py +0 -0
  77. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_optuna.py +0 -0
  78. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_orjson.py +0 -0
  79. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_os.py +0 -0
  80. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_parse.py +0 -0
  81. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_pathlib.py +0 -0
  82. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_period.py +0 -0
  83. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_pickle.py +0 -0
  84. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_platform.py +0 -0
  85. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_polars.py +0 -0
  86. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_polars_ols.py +0 -0
  87. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_pottery.py +0 -0
  88. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_pqdm.py +0 -0
  89. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_psutil.py +0 -0
  90. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_pydantic.py +0 -0
  91. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_pyinstrument.py +0 -0
  92. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_pyrsistent.py +0 -0
  93. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_pytest.py +0 -0
  94. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_pytest_regressions.py +0 -0
  95. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_python_dotenv.py +0 -0
  96. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_random.py +0 -0
  97. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_re.py +0 -0
  98. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_redis.py +0 -0
  99. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_reprlib.py +0 -0
  100. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_scipy.py +0 -0
  101. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_sentinel.py +0 -0
  102. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_shelve.py +0 -0
  103. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_slack_sdk.py +0 -0
  104. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_socket.py +0 -0
  105. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_sqlalchemy.py +0 -0
  106. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_sqlalchemy_polars.py +0 -0
  107. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_statsmodel.py +0 -0
  108. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_streamlit.py +0 -0
  109. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_string.py +0 -0
  110. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_tempfile.py +0 -0
  111. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_tenacity.py +0 -0
  112. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_text.py +0 -0
  113. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_threading.py +0 -0
  114. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_timer.py +0 -0
  115. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_traceback.py +0 -0
  116. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_types.py +0 -0
  117. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_typing.py +0 -0
  118. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_typing_funcs/__init__.py +0 -0
  119. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_typing_funcs/no_future.py +0 -0
  120. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_typing_funcs/with_future.py +0 -0
  121. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_tzdata.py +0 -0
  122. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_tzlocal.py +0 -0
  123. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_uuid.py +0 -0
  124. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_version.py +0 -0
  125. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_warnings.py +0 -0
  126. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_whenever.py +0 -0
  127. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_whenever2.py +0 -0
  128. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_zipfile.py +0 -0
  129. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/tests/test_zoneinfo.py +0 -0
  130. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/aiolimiter.py +0 -0
  131. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/altair.py +0 -0
  132. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/asyncio.py +0 -0
  133. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/atomicwrites.py +0 -0
  134. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/atools.py +0 -0
  135. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/cachetools.py +0 -0
  136. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/click.py +0 -0
  137. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/concurrent.py +0 -0
  138. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/contextlib.py +0 -0
  139. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/contextvars.py +0 -0
  140. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/cryptography.py +0 -0
  141. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/cvxpy.py +0 -0
  142. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/dataclasses.py +0 -0
  143. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/datetime.py +0 -0
  144. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/enum.py +0 -0
  145. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/errors.py +0 -0
  146. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/eventkit.py +0 -0
  147. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/fastapi.py +0 -0
  148. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/fpdf2.py +0 -0
  149. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/functions.py +0 -0
  150. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/functools.py +0 -0
  151. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/getpass.py +0 -0
  152. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/git.py +0 -0
  153. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/hashlib.py +0 -0
  154. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/http.py +0 -0
  155. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/importlib.py +0 -0
  156. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/inflect.py +0 -0
  157. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/ipython.py +0 -0
  158. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/iterables.py +0 -0
  159. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/jupyter.py +0 -0
  160. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/libcst.py +0 -0
  161. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/lightweight_charts.py +0 -0
  162. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/logging.py +0 -0
  163. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/luigi.py +0 -0
  164. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/math.py +0 -0
  165. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/memory_profiler.py +0 -0
  166. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/modules.py +0 -0
  167. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/more_itertools.py +0 -0
  168. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/numpy.py +0 -0
  169. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/operator.py +0 -0
  170. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/optuna.py +0 -0
  171. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/orjson.py +0 -0
  172. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/os.py +0 -0
  173. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/parse.py +0 -0
  174. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/pathlib.py +0 -0
  175. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/period.py +0 -0
  176. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/pickle.py +0 -0
  177. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/platform.py +0 -0
  178. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/polars.py +0 -0
  179. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/polars_ols.py +0 -0
  180. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/pottery.py +0 -0
  181. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/pqdm.py +0 -0
  182. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/psutil.py +0 -0
  183. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/py.typed +0 -0
  184. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/pydantic.py +0 -0
  185. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/pyinstrument.py +0 -0
  186. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/pyrsistent.py +0 -0
  187. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/pytest.py +0 -0
  188. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/pytest_regressions.py +0 -0
  189. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/python_dotenv.py +0 -0
  190. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/random.py +0 -0
  191. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/re.py +0 -0
  192. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/redis.py +0 -0
  193. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/reprlib.py +0 -0
  194. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/scipy.py +0 -0
  195. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/sentinel.py +0 -0
  196. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/shelve.py +0 -0
  197. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/slack_sdk.py +0 -0
  198. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/socket.py +0 -0
  199. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/sqlalchemy.py +0 -0
  200. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/sqlalchemy_polars.py +0 -0
  201. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/statsmodels.py +0 -0
  202. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/streamlit.py +0 -0
  203. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/string.py +0 -0
  204. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/tempfile.py +0 -0
  205. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/tenacity.py +0 -0
  206. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/text.py +0 -0
  207. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/threading.py +0 -0
  208. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/timer.py +0 -0
  209. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/traceback.py +0 -0
  210. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/types.py +0 -0
  211. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/typing.py +0 -0
  212. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/tzdata.py +0 -0
  213. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/tzlocal.py +0 -0
  214. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/uuid.py +0 -0
  215. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/version.py +0 -0
  216. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/warnings.py +0 -0
  217. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/whenever.py +0 -0
  218. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/whenever2.py +0 -0
  219. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/zipfile.py +0 -0
  220. {dycw_utilities-0.131.6 → dycw_utilities-0.131.7}/src/utilities/zoneinfo.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.131.6
3
+ Version: 0.131.7
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -94,7 +94,7 @@ dependencies = [
94
94
  name = "dycw-utilities"
95
95
  readme = "README.md"
96
96
  requires-python = ">= 3.12"
97
- version = "0.131.6"
97
+ version = "0.131.7"
98
98
 
99
99
  [project.optional-dependencies]
100
100
  logging = [
@@ -121,7 +121,7 @@ test = [
121
121
  # bump-my-version
122
122
  [tool.bumpversion]
123
123
  allow_dirty = true
124
- current_version = "0.131.6"
124
+ current_version = "0.131.7"
125
125
 
126
126
  [[tool.bumpversion.files]]
127
127
  filename = "src/utilities/__init__.py"
@@ -28,7 +28,7 @@ from luigi import Task
28
28
  from numpy import inf, int64, isfinite, isinf, isnan, ravel, rint
29
29
  from pathvalidate import validate_filepath
30
30
  from pytest import mark, raises
31
- from whenever import Date, DateDelta, PlainDateTime, ZonedDateTime
31
+ from whenever import Date, DateDelta, PlainDateTime, Time, TimeDelta, ZonedDateTime
32
32
 
33
33
  from tests.conftest import SKIPIF_CI_AND_WINDOWS
34
34
  from utilities.datetime import (
@@ -92,7 +92,9 @@ from utilities.hypothesis import (
92
92
  text_clean,
93
93
  text_digits,
94
94
  text_printable,
95
+ time_deltas_whenever,
95
96
  timedeltas_2w,
97
+ times_whenever,
96
98
  triples,
97
99
  uint32s,
98
100
  uint64s,
@@ -1153,6 +1155,38 @@ class TestTimeDeltas2W:
1153
1155
  assert min_value <= timedelta <= max_value
1154
1156
 
1155
1157
 
1158
+ class TestTimeDeltas:
1159
+ @given(data=data())
1160
+ def test_main(self, *, data: DataObject) -> None:
1161
+ min_value = data.draw(time_deltas_whenever() | none())
1162
+ max_value = data.draw(time_deltas_whenever() | none())
1163
+ with assume_does_not_raise(InvalidArgument):
1164
+ delta = data.draw(
1165
+ time_deltas_whenever(min_value=min_value, max_value=max_value)
1166
+ )
1167
+ assert isinstance(delta, TimeDelta)
1168
+ assert TimeDelta.parse_common_iso(delta.format_common_iso()) == delta
1169
+ if min_value is not None:
1170
+ assert delta >= min_value
1171
+ if max_value is not None:
1172
+ assert delta <= max_value
1173
+
1174
+
1175
+ class TestTimes:
1176
+ @given(data=data())
1177
+ def test_main(self, *, data: DataObject) -> None:
1178
+ min_value = data.draw(times_whenever() | none())
1179
+ max_value = data.draw(times_whenever() | none())
1180
+ with assume_does_not_raise(InvalidArgument):
1181
+ time = data.draw(times_whenever(min_value=min_value, max_value=max_value))
1182
+ assert isinstance(time, Time)
1183
+ assert Time.parse_common_iso(time.format_common_iso()) == time
1184
+ if min_value is not None:
1185
+ assert time >= min_value
1186
+ if max_value is not None:
1187
+ assert time <= max_value
1188
+
1189
+
1156
1190
  class TestTriples:
1157
1191
  @given(data=data(), unique=booleans(), sorted_=booleans())
1158
1192
  def test_main(self, *, data: DataObject, unique: bool, sorted_: bool) -> None:
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.131.6"
3
+ __version__ = "0.131.7"
@@ -24,6 +24,7 @@ from typing import (
24
24
  override,
25
25
  )
26
26
 
27
+ import hypothesis.strategies
27
28
  from hypothesis import HealthCheck, Phase, Verbosity, assume, settings
28
29
  from hypothesis.errors import InvalidArgument
29
30
  from hypothesis.strategies import (
@@ -47,7 +48,7 @@ from hypothesis.strategies import (
47
48
  uuids,
48
49
  )
49
50
  from hypothesis.utils.conventions import not_set
50
- from whenever import Date, DateDelta
51
+ from whenever import Date, DateDelta, PlainDateTime, Time, TimeDelta
51
52
 
52
53
  from utilities.datetime import (
53
54
  DATETIME_MAX_NAIVE,
@@ -89,6 +90,20 @@ from utilities.platform import IS_WINDOWS
89
90
  from utilities.sentinel import Sentinel, sentinel
90
91
  from utilities.tempfile import TEMP_DIR, TemporaryDirectory
91
92
  from utilities.version import Version
93
+ from utilities.whenever2 import (
94
+ DATE_DELTA_MAX,
95
+ DATE_DELTA_MIN,
96
+ DATE_DELTA_PARSABLE_MAX,
97
+ DATE_DELTA_PARSABLE_MIN,
98
+ DATE_MAX,
99
+ DATE_MIN,
100
+ PLAIN_DATE_TIME_MAX,
101
+ PLAIN_DATE_TIME_MIN,
102
+ TIME_DELTA_MAX,
103
+ TIME_DELTA_MIN,
104
+ TIME_MAX,
105
+ TIME_MIN,
106
+ )
92
107
  from utilities.zoneinfo import UTC, ensure_time_zone
93
108
 
94
109
  if TYPE_CHECKING:
@@ -97,7 +112,7 @@ if TYPE_CHECKING:
97
112
 
98
113
  from hypothesis.database import ExampleDatabase
99
114
  from numpy.random import RandomState
100
- from whenever import PlainDateTime, ZonedDateTime
115
+ from whenever import ZonedDateTime
101
116
 
102
117
  from utilities.numpy import NDArrayB, NDArrayF, NDArrayI, NDArrayO
103
118
  from utilities.types import Duration, Number, RoundMode, TimeZoneLike
@@ -170,13 +185,6 @@ def date_deltas_whenever(
170
185
  parsable: MaybeSearchStrategy[bool] = False,
171
186
  ) -> DateDelta:
172
187
  """Strategy for generating date deltas."""
173
- from utilities.whenever2 import (
174
- DATE_DELTA_MAX,
175
- DATE_DELTA_MIN,
176
- DATE_DELTA_PARSABLE_MAX,
177
- DATE_DELTA_PARSABLE_MIN,
178
- )
179
-
180
188
  min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
181
189
  match min_value_:
182
190
  case None:
@@ -307,8 +315,6 @@ def dates_whenever(
307
315
  max_value: MaybeSearchStrategy[Date | None] = None,
308
316
  ) -> Date:
309
317
  """Strategy for generating dates."""
310
- from utilities.whenever2 import DATE_MAX, DATE_MIN
311
-
312
318
  min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
313
319
  match min_value_:
314
320
  case None:
@@ -1069,10 +1075,6 @@ def plain_datetimes_whenever(
1069
1075
  max_value: MaybeSearchStrategy[PlainDateTime | None] = None,
1070
1076
  ) -> PlainDateTime:
1071
1077
  """Strategy for generating plain datetimes."""
1072
- from whenever import PlainDateTime
1073
-
1074
- from utilities.whenever2 import PLAIN_DATE_TIME_MAX, PLAIN_DATE_TIME_MIN
1075
-
1076
1078
  min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
1077
1079
  match min_value_:
1078
1080
  case None:
@@ -1405,6 +1407,41 @@ def text_printable(
1405
1407
  ##
1406
1408
 
1407
1409
 
1410
+ @composite
1411
+ def time_deltas_whenever(
1412
+ draw: DrawFn,
1413
+ /,
1414
+ *,
1415
+ min_value: MaybeSearchStrategy[TimeDelta | None] = None,
1416
+ max_value: MaybeSearchStrategy[TimeDelta | None] = None,
1417
+ ) -> TimeDelta:
1418
+ """Strategy for generating time deltas."""
1419
+ min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
1420
+ match min_value_:
1421
+ case None:
1422
+ min_value_ = TIME_DELTA_MIN
1423
+ case TimeDelta():
1424
+ ...
1425
+ case _ as never:
1426
+ assert_never(never)
1427
+ match max_value_:
1428
+ case None:
1429
+ max_value_ = TIME_DELTA_MAX
1430
+ case TimeDelta():
1431
+ ...
1432
+ case _ as never:
1433
+ assert_never(never)
1434
+ py_time = draw(
1435
+ hypothesis.strategies.timedeltas(
1436
+ min_value=min_value_.py_timedelta(), max_value=max_value_.py_timedelta()
1437
+ )
1438
+ )
1439
+ return TimeDelta.from_py_timedelta(py_time)
1440
+
1441
+
1442
+ ##
1443
+
1444
+
1408
1445
  @composite
1409
1446
  def timedeltas_2w(
1410
1447
  draw: DrawFn,
@@ -1431,6 +1468,41 @@ def timedeltas_2w(
1431
1468
  ##
1432
1469
 
1433
1470
 
1471
+ @composite
1472
+ def times_whenever(
1473
+ draw: DrawFn,
1474
+ /,
1475
+ *,
1476
+ min_value: MaybeSearchStrategy[Time | None] = None,
1477
+ max_value: MaybeSearchStrategy[Time | None] = None,
1478
+ ) -> Time:
1479
+ """Strategy for generating times."""
1480
+ min_value_, max_value_ = [draw2(draw, v) for v in [min_value, max_value]]
1481
+ match min_value_:
1482
+ case None:
1483
+ min_value_ = TIME_MIN
1484
+ case Time():
1485
+ ...
1486
+ case _ as never:
1487
+ assert_never(never)
1488
+ match max_value_:
1489
+ case None:
1490
+ max_value_ = TIME_MAX
1491
+ case Time():
1492
+ ...
1493
+ case _ as never:
1494
+ assert_never(never)
1495
+ py_time = draw(
1496
+ hypothesis.strategies.times(
1497
+ min_value=min_value_.py_time(), max_value=max_value_.py_time()
1498
+ )
1499
+ )
1500
+ return Time.from_py_time(py_time)
1501
+
1502
+
1503
+ ##
1504
+
1505
+
1434
1506
  def triples(
1435
1507
  strategy: SearchStrategy[_T],
1436
1508
  /,
@@ -1651,7 +1723,9 @@ __all__ = [
1651
1723
  "text_clean",
1652
1724
  "text_digits",
1653
1725
  "text_printable",
1726
+ "time_deltas_whenever",
1654
1727
  "timedeltas_2w",
1728
+ "times_whenever",
1655
1729
  "triples",
1656
1730
  "uint32s",
1657
1731
  "uint64s",