dycw-utilities 0.134.2__tar.gz → 0.134.4__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.134.2 → dycw_utilities-0.134.4}/PKG-INFO +1 -1
  2. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/pyproject.toml +2 -2
  3. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_asyncio.py +23 -0
  4. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_parse.py +8 -0
  5. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/__init__.py +1 -1
  6. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/asyncio.py +26 -1
  7. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/parse.py +21 -2
  8. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/.gitignore +0 -0
  9. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/LICENSE +0 -0
  10. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/README.md +0 -0
  11. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/__init__.py +0 -0
  12. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/conftest.py +0 -0
  13. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/__init__.py +0 -0
  14. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_missing/__init__.py +0 -0
  15. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_missing/module.py +0 -0
  16. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_with/__init__.py +0 -0
  17. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_with/outer_1.py +0 -0
  18. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_with/outer_2.py +0 -0
  19. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  20. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  21. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  22. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  23. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_without/__init__.py +0 -0
  24. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_without/module_1.py +0 -0
  25. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/package_without/module_2.py +0 -0
  26. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/standalone.py +0 -0
  27. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/modules/with_imports.py +0 -0
  28. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  29. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  30. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  31. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  32. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  33. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  34. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  35. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  36. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_aiolimiter.py +0 -0
  37. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_altair.py +0 -0
  38. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_arq.py +0 -0
  39. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_asyncio_classes/__init__.py +0 -0
  40. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_asyncio_classes/loopers.py +0 -0
  41. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_asyncio_classes/redis.py +0 -0
  42. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_atomicwrites.py +0 -0
  43. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_atools.py +0 -0
  44. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_cachetools.py +0 -0
  45. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_click.py +0 -0
  46. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_concurrent.py +0 -0
  47. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_contextlib.py +0 -0
  48. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_contextvars.py +0 -0
  49. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_cryptography.py +0 -0
  50. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_cvxpy.py +0 -0
  51. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_dataclasses.py +0 -0
  52. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_enum.py +0 -0
  53. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_errors.py +0 -0
  54. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_eventkit.py +0 -0
  55. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_fastapi.py +0 -0
  56. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_fpdf2.py +0 -0
  57. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_functions.py +0 -0
  58. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_functools.py +0 -0
  59. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_getpass.py +0 -0
  60. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_git.py +0 -0
  61. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_hashlib.py +0 -0
  62. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_http.py +0 -0
  63. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_hypothesis.py +0 -0
  64. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_importlib.py +0 -0
  65. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_inflect.py +0 -0
  66. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_ipython.py +0 -0
  67. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_iterables.py +0 -0
  68. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_jupyter.py +0 -0
  69. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_libcst.py +0 -0
  70. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_lightweight_charts.py +0 -0
  71. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_logging.py +0 -0
  72. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_luigi.py +0 -0
  73. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_math.py +0 -0
  74. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_memory_profiler.py +0 -0
  75. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_modules.py +0 -0
  76. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_more_itertools.py +0 -0
  77. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_numpy.py +0 -0
  78. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_objects/__init__.py +0 -0
  79. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_objects/objects.py +0 -0
  80. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_operator.py +0 -0
  81. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_optuna.py +0 -0
  82. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_orjson.py +0 -0
  83. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_os.py +0 -0
  84. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_pathlib.py +0 -0
  85. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_period.py +0 -0
  86. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_pickle.py +0 -0
  87. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_platform.py +0 -0
  88. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_polars.py +0 -0
  89. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_polars_ols.py +0 -0
  90. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_pottery.py +0 -0
  91. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_pqdm.py +0 -0
  92. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_psutil.py +0 -0
  93. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_pudb.py +0 -0
  94. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_pydantic.py +0 -0
  95. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_pyinstrument.py +0 -0
  96. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_pytest.py +0 -0
  97. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_pytest_regressions.py +0 -0
  98. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_python_dotenv.py +0 -0
  99. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_random.py +0 -0
  100. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_re.py +0 -0
  101. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_redis.py +0 -0
  102. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_reprlib.py +0 -0
  103. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_scipy.py +0 -0
  104. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_sentinel.py +0 -0
  105. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_shelve.py +0 -0
  106. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_slack_sdk.py +0 -0
  107. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_socket.py +0 -0
  108. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_sqlalchemy.py +0 -0
  109. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_sqlalchemy_polars.py +0 -0
  110. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_statsmodels.py +0 -0
  111. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_streamlit.py +0 -0
  112. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_string.py +0 -0
  113. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_tempfile.py +0 -0
  114. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_text.py +0 -0
  115. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_threading.py +0 -0
  116. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_timer.py +0 -0
  117. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_traceback.py +0 -0
  118. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_typed_settings.py +0 -0
  119. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_types.py +0 -0
  120. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_typing.py +0 -0
  121. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_typing_funcs/__init__.py +0 -0
  122. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_typing_funcs/no_future.py +0 -0
  123. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_typing_funcs/with_future.py +0 -0
  124. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_tzdata.py +0 -0
  125. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_tzlocal.py +0 -0
  126. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_uuid.py +0 -0
  127. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_version.py +0 -0
  128. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_warnings.py +0 -0
  129. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_whenever.py +0 -0
  130. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_zipfile.py +0 -0
  131. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/tests/test_zoneinfo.py +0 -0
  132. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/aiolimiter.py +0 -0
  133. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/altair.py +0 -0
  134. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/arq.py +0 -0
  135. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/atomicwrites.py +0 -0
  136. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/atools.py +0 -0
  137. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/cachetools.py +0 -0
  138. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/click.py +0 -0
  139. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/concurrent.py +0 -0
  140. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/contextlib.py +0 -0
  141. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/contextvars.py +0 -0
  142. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/cryptography.py +0 -0
  143. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/cvxpy.py +0 -0
  144. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/dataclasses.py +0 -0
  145. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/enum.py +0 -0
  146. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/errors.py +0 -0
  147. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/eventkit.py +0 -0
  148. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/fastapi.py +0 -0
  149. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/fpdf2.py +0 -0
  150. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/functions.py +0 -0
  151. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/functools.py +0 -0
  152. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/getpass.py +0 -0
  153. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/git.py +0 -0
  154. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/hashlib.py +0 -0
  155. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/http.py +0 -0
  156. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/hypothesis.py +0 -0
  157. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/importlib.py +0 -0
  158. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/inflect.py +0 -0
  159. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/ipython.py +0 -0
  160. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/iterables.py +0 -0
  161. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/jupyter.py +0 -0
  162. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/libcst.py +0 -0
  163. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/lightweight_charts.py +0 -0
  164. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/logging.py +0 -0
  165. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/luigi.py +0 -0
  166. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/math.py +0 -0
  167. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/memory_profiler.py +0 -0
  168. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/modules.py +0 -0
  169. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/more_itertools.py +0 -0
  170. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/numpy.py +0 -0
  171. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/operator.py +0 -0
  172. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/optuna.py +0 -0
  173. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/orjson.py +0 -0
  174. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/os.py +0 -0
  175. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/pathlib.py +0 -0
  176. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/period.py +0 -0
  177. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/pickle.py +0 -0
  178. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/platform.py +0 -0
  179. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/polars.py +0 -0
  180. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/polars_ols.py +0 -0
  181. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/pottery.py +0 -0
  182. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/pqdm.py +0 -0
  183. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/psutil.py +0 -0
  184. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/pudb.py +0 -0
  185. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/py.typed +0 -0
  186. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/pydantic.py +0 -0
  187. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/pyinstrument.py +0 -0
  188. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/pytest.py +0 -0
  189. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/pytest_regressions.py +0 -0
  190. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/python_dotenv.py +0 -0
  191. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/random.py +0 -0
  192. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/re.py +0 -0
  193. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/redis.py +0 -0
  194. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/reprlib.py +0 -0
  195. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/scipy.py +0 -0
  196. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/sentinel.py +0 -0
  197. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/shelve.py +0 -0
  198. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/slack_sdk.py +0 -0
  199. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/socket.py +0 -0
  200. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/sqlalchemy.py +0 -0
  201. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/sqlalchemy_polars.py +0 -0
  202. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/statsmodels.py +0 -0
  203. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/streamlit.py +0 -0
  204. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/string.py +0 -0
  205. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/tempfile.py +0 -0
  206. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/text.py +0 -0
  207. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/threading.py +0 -0
  208. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/timer.py +0 -0
  209. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/traceback.py +0 -0
  210. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/typed_settings.py +0 -0
  211. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/types.py +0 -0
  212. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/typing.py +0 -0
  213. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/tzdata.py +0 -0
  214. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/tzlocal.py +0 -0
  215. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/uuid.py +0 -0
  216. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/version.py +0 -0
  217. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/warnings.py +0 -0
  218. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/whenever.py +0 -0
  219. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/zipfile.py +0 -0
  220. {dycw_utilities-0.134.2 → dycw_utilities-0.134.4}/src/utilities/zoneinfo.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.134.2
3
+ Version: 0.134.4
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -105,7 +105,7 @@ dependencies = [
105
105
  name = "dycw-utilities"
106
106
  readme = "README.md"
107
107
  requires-python = ">= 3.12"
108
- version = "0.134.2"
108
+ version = "0.134.4"
109
109
 
110
110
  [project.optional-dependencies]
111
111
  logging = [
@@ -132,7 +132,7 @@ test = [
132
132
  # bump-my-version
133
133
  [tool.bumpversion]
134
134
  allow_dirty = true
135
- current_version = "0.134.2"
135
+ current_version = "0.134.4"
136
136
 
137
137
  [[tool.bumpversion.files]]
138
138
  filename = "src/utilities/__init__.py"
@@ -175,6 +175,29 @@ class TestEnhancedTaskGroup:
175
175
  await sleep_td(self.delta)
176
176
  assert looper._core_attempts >= 1
177
177
 
178
+ async def test_debug_true(self) -> None:
179
+ class CustomError(Exception): ...
180
+
181
+ async def func() -> None:
182
+ await sleep_td(self.delta)
183
+ raise CustomError
184
+
185
+ with raises(CustomError):
186
+ async with EnhancedTaskGroup(debug=True) as tg:
187
+ _ = await tg.run_or_create_task(func())
188
+
189
+ async def test_debug_false(self) -> None:
190
+ class CustomError(Exception): ...
191
+
192
+ async def func() -> None:
193
+ await sleep_td(self.delta)
194
+ raise CustomError
195
+
196
+ with raises(ExceptionGroup) as exc_info:
197
+ async with EnhancedTaskGroup(debug=False) as tg:
198
+ _ = await tg.run_or_create_task(func())
199
+ assert isinstance(one(exc_info.value.exceptions), CustomError)
200
+
178
201
  async def test_max_tasks_disabled(self) -> None:
179
202
  with Timer() as timer:
180
203
  async with EnhancedTaskGroup() as tg:
@@ -45,6 +45,7 @@ from utilities.functions import ensure_path
45
45
  from utilities.hypothesis import (
46
46
  dates,
47
47
  int64s,
48
+ months,
48
49
  numbers,
49
50
  paths,
50
51
  plain_datetimes,
@@ -67,6 +68,7 @@ from utilities.sentinel import Sentinel, sentinel
67
68
  from utilities.text import parse_bool
68
69
  from utilities.types import Number
69
70
  from utilities.version import Version
71
+ from utilities.whenever import Month
70
72
 
71
73
 
72
74
  class TestSerializeAndParseObject:
@@ -141,6 +143,12 @@ class TestSerializeAndParseObject:
141
143
  result = parse_object(TrueOrFalseFutureLit, truth)
142
144
  assert result == truth
143
145
 
146
+ @given(month=months())
147
+ def test_month(self, *, month: Month) -> None:
148
+ serialized = serialize_object(month)
149
+ result = parse_object(Month, serialized)
150
+ assert result == month
151
+
144
152
  def test_none(self) -> None:
145
153
  serialized = serialize_object(None)
146
154
  result = parse_object(None, serialized)
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.134.2"
3
+ __version__ = "0.134.4"
@@ -223,6 +223,7 @@ class EnhancedTaskGroup(TaskGroup):
223
223
  _semaphore: Semaphore | None
224
224
  _timeout: TimeDelta | None
225
225
  _error: MaybeType[BaseException]
226
+ _debug: bool
226
227
  _stack: AsyncExitStack
227
228
  _timeout_cm: _AsyncGeneratorContextManager[None] | None
228
229
 
@@ -233,11 +234,13 @@ class EnhancedTaskGroup(TaskGroup):
233
234
  max_tasks: int | None = None,
234
235
  timeout: TimeDelta | None = None,
235
236
  error: MaybeType[BaseException] = TimeoutError,
237
+ debug: bool = False,
236
238
  ) -> None:
237
239
  super().__init__()
238
240
  self._semaphore = None if max_tasks is None else Semaphore(max_tasks)
239
241
  self._timeout = timeout
240
242
  self._error = error
243
+ self._debug = debug
241
244
  self._stack = AsyncExitStack()
242
245
  self._timeout_cm = None
243
246
 
@@ -254,7 +257,14 @@ class EnhancedTaskGroup(TaskGroup):
254
257
  tb: TracebackType | None,
255
258
  ) -> None:
256
259
  _ = await self._stack.__aexit__(et, exc, tb)
257
- _ = await super().__aexit__(et, exc, tb)
260
+ match self._debug:
261
+ case True:
262
+ with suppress(Exception):
263
+ _ = await super().__aexit__(et, exc, tb)
264
+ case False:
265
+ _ = await super().__aexit__(et, exc, tb)
266
+ case _ as never:
267
+ assert_never(never)
258
268
 
259
269
  @override
260
270
  def create_task[T](
@@ -276,6 +286,21 @@ class EnhancedTaskGroup(TaskGroup):
276
286
  _ = self._stack.push_async_callback(cm.__aexit__, None, None, None)
277
287
  return self.create_task(cm.__aenter__())
278
288
 
289
+ async def run_or_create_task[T](
290
+ self,
291
+ coro: _CoroutineLike[T],
292
+ *,
293
+ name: str | None = None,
294
+ context: Context | None = None,
295
+ ) -> T | Task[T]:
296
+ match self._debug:
297
+ case True:
298
+ return await coro
299
+ case False:
300
+ return self.create_task(coro, name=name, context=context)
301
+ case _ as never:
302
+ assert_never(never)
303
+
279
304
  async def _wrap_with_semaphore[T](
280
305
  self, semaphore: Semaphore, coroutine: _CoroutineLike[T], /
281
306
  ) -> T:
@@ -51,6 +51,7 @@ from utilities.typing import (
51
51
  is_union_type,
52
52
  )
53
53
  from utilities.version import ParseVersionError, Version, parse_version
54
+ from utilities.whenever import Month
54
55
 
55
56
  if TYPE_CHECKING:
56
57
  from collections.abc import Iterable, Mapping, Sequence
@@ -189,7 +190,16 @@ def _parse_object_type(
189
190
  raise _ParseObjectParseError(type_=cls, text=text) from None
190
191
  if issubclass(
191
192
  cls,
192
- (Date, DateDelta, DateTimeDelta, PlainDateTime, Time, TimeDelta, ZonedDateTime),
193
+ (
194
+ Date,
195
+ DateDelta,
196
+ DateTimeDelta,
197
+ Month,
198
+ PlainDateTime,
199
+ Time,
200
+ TimeDelta,
201
+ ZonedDateTime,
202
+ ),
193
203
  ):
194
204
  try:
195
205
  return cls.parse_common_iso(text)
@@ -453,7 +463,16 @@ def serialize_object(
453
463
  return str(obj)
454
464
  if isinstance(
455
465
  obj,
456
- (Date, DateDelta, DateTimeDelta, PlainDateTime, Time, TimeDelta, ZonedDateTime),
466
+ (
467
+ Date,
468
+ DateDelta,
469
+ DateTimeDelta,
470
+ Month,
471
+ PlainDateTime,
472
+ Time,
473
+ TimeDelta,
474
+ ZonedDateTime,
475
+ ),
457
476
  ):
458
477
  return obj.format_common_iso()
459
478
  if isinstance(obj, Enum):