dycw-utilities 0.114.7__tar.gz → 0.115.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.
Files changed (228) hide show
  1. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/PKG-INFO +1 -1
  2. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/pyproject.toml +2 -2
  3. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_asyncio.py +7 -7
  4. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/__init__.py +1 -1
  5. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/asyncio.py +10 -9
  6. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/redis.py +4 -4
  7. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/.gitignore +0 -0
  8. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/LICENSE +0 -0
  9. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/README.md +0 -0
  10. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/__init__.py +0 -0
  11. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/conftest.py +0 -0
  12. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/__init__.py +0 -0
  13. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_missing/__init__.py +0 -0
  14. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_missing/module.py +0 -0
  15. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_with/__init__.py +0 -0
  16. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_with/outer_1.py +0 -0
  17. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_with/outer_2.py +0 -0
  18. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  19. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  20. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  21. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  22. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_without/__init__.py +0 -0
  23. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_without/module_1.py +0 -0
  24. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/package_without/module_2.py +0 -0
  25. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/standalone.py +0 -0
  26. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/modules/with_imports.py +0 -0
  27. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  28. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  29. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  30. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  31. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  32. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  33. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  34. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  35. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/scripts/__init__.py +0 -0
  36. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/scripts/test_async_service/__init__.py +0 -0
  37. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/scripts/test_async_service/__main__.py +0 -0
  38. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/scripts/test_async_service/run.sh +0 -0
  39. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/scripts/test_queue_processor/__init__.py +0 -0
  40. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/scripts/test_queue_processor/__main__.py +0 -0
  41. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/scripts/test_queue_processor/run.sh +0 -0
  42. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_altair.py +0 -0
  43. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_astor.py +0 -0
  44. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_atomicwrites.py +0 -0
  45. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_atools.py +0 -0
  46. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_cachetools.py +0 -0
  47. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_click.py +0 -0
  48. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_concurrent.py +0 -0
  49. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_contextlib.py +0 -0
  50. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_contextvars.py +0 -0
  51. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_cryptography.py +0 -0
  52. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_cvxpy.py +0 -0
  53. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_dataclasses.py +0 -0
  54. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_datetime.py +0 -0
  55. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_enum.py +0 -0
  56. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_errors.py +0 -0
  57. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_eventkit.py +0 -0
  58. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_fastapi.py +0 -0
  59. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_fpdf2.py +0 -0
  60. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_functions.py +0 -0
  61. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_functools.py +0 -0
  62. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_getpass.py +0 -0
  63. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_git.py +0 -0
  64. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_hashlib.py +0 -0
  65. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_http.py +0 -0
  66. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_hypothesis.py +0 -0
  67. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_ipython.py +0 -0
  68. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_iterables.py +0 -0
  69. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_jupyter.py +0 -0
  70. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_lightweight_charts.py +0 -0
  71. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_logging.py +0 -0
  72. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_loguru.py +0 -0
  73. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_luigi.py +0 -0
  74. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_math.py +0 -0
  75. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_memory_profiler.py +0 -0
  76. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_modules.py +0 -0
  77. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_more_itertools.py +0 -0
  78. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_numpy.py +0 -0
  79. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_operator.py +0 -0
  80. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_optuna.py +0 -0
  81. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_orjson.py +0 -0
  82. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_os.py +0 -0
  83. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_parse.py +0 -0
  84. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_pathlib.py +0 -0
  85. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_period.py +0 -0
  86. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_pickle.py +0 -0
  87. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_platform.py +0 -0
  88. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_polars.py +0 -0
  89. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_polars_ols.py +0 -0
  90. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_pqdm.py +0 -0
  91. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_pydantic.py +0 -0
  92. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_pyinstrument.py +0 -0
  93. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_pyrsistent.py +0 -0
  94. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_pytest.py +0 -0
  95. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_pytest_regressions.py +0 -0
  96. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_python_dotenv.py +0 -0
  97. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_random.py +0 -0
  98. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_re.py +0 -0
  99. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_redis.py +0 -0
  100. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_reprlib.py +0 -0
  101. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_rich.py +0 -0
  102. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_scipy.py +0 -0
  103. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_sentinel.py +0 -0
  104. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_shelve.py +0 -0
  105. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_slack_sdk.py +0 -0
  106. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_socket.py +0 -0
  107. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_sqlalchemy.py +0 -0
  108. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_sqlalchemy_polars.py +0 -0
  109. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_statsmodel.py +0 -0
  110. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_streamlit.py +0 -0
  111. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_sys.py +0 -0
  112. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_tempfile.py +0 -0
  113. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_tenacity.py +0 -0
  114. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_text.py +0 -0
  115. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_threading.py +0 -0
  116. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_timer.py +0 -0
  117. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback.py +0 -0
  118. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/__init__.py +0 -0
  119. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/chain.py +0 -0
  120. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/decorated_async.py +0 -0
  121. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/decorated_sync.py +0 -0
  122. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/error_bind.py +0 -0
  123. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/many.py +0 -0
  124. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/one.py +0 -0
  125. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/recursive.py +0 -0
  126. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/task_group_one.py +0 -0
  127. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/task_group_two.py +0 -0
  128. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/two.py +0 -0
  129. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_traceback_funcs/untraced.py +0 -0
  130. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_types.py +0 -0
  131. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_typing.py +0 -0
  132. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_typing_funcs/__init__.py +0 -0
  133. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_typing_funcs/no_future.py +0 -0
  134. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_typing_funcs/with_future.py +0 -0
  135. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_tzdata.py +0 -0
  136. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_tzlocal.py +0 -0
  137. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_uuid.py +0 -0
  138. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_version.py +0 -0
  139. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_warnings.py +0 -0
  140. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_whenever.py +0 -0
  141. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_zipfile.py +0 -0
  142. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/tests/test_zoneinfo.py +0 -0
  143. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/altair.py +0 -0
  144. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/astor.py +0 -0
  145. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/atomicwrites.py +0 -0
  146. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/atools.py +0 -0
  147. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/cachetools.py +0 -0
  148. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/click.py +0 -0
  149. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/concurrent.py +0 -0
  150. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/contextlib.py +0 -0
  151. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/contextvars.py +0 -0
  152. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/cryptography.py +0 -0
  153. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/cvxpy.py +0 -0
  154. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/dataclasses.py +0 -0
  155. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/datetime.py +0 -0
  156. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/enum.py +0 -0
  157. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/errors.py +0 -0
  158. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/eventkit.py +0 -0
  159. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/fastapi.py +0 -0
  160. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/fpdf2.py +0 -0
  161. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/functions.py +0 -0
  162. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/functools.py +0 -0
  163. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/getpass.py +0 -0
  164. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/git.py +0 -0
  165. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/hashlib.py +0 -0
  166. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/http.py +0 -0
  167. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/hypothesis.py +0 -0
  168. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/ipython.py +0 -0
  169. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/iterables.py +0 -0
  170. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/jupyter.py +0 -0
  171. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/lightweight_charts.py +0 -0
  172. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/logging.py +0 -0
  173. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/loguru.py +0 -0
  174. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/luigi.py +0 -0
  175. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/math.py +0 -0
  176. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/memory_profiler.py +0 -0
  177. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/modules.py +0 -0
  178. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/more_itertools.py +0 -0
  179. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/numpy.py +0 -0
  180. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/operator.py +0 -0
  181. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/optuna.py +0 -0
  182. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/orjson.py +0 -0
  183. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/os.py +0 -0
  184. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/parse.py +0 -0
  185. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/pathlib.py +0 -0
  186. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/period.py +0 -0
  187. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/pickle.py +0 -0
  188. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/platform.py +0 -0
  189. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/polars.py +0 -0
  190. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/polars_ols.py +0 -0
  191. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/pqdm.py +0 -0
  192. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/py.typed +0 -0
  193. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/pydantic.py +0 -0
  194. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/pyinstrument.py +0 -0
  195. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/pyrsistent.py +0 -0
  196. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/pytest.py +0 -0
  197. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/pytest_regressions.py +0 -0
  198. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/python_dotenv.py +0 -0
  199. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/random.py +0 -0
  200. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/re.py +0 -0
  201. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/reprlib.py +0 -0
  202. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/rich.py +0 -0
  203. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/scipy.py +0 -0
  204. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/sentinel.py +0 -0
  205. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/shelve.py +0 -0
  206. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/slack_sdk.py +0 -0
  207. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/socket.py +0 -0
  208. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/sqlalchemy.py +0 -0
  209. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/sqlalchemy_polars.py +0 -0
  210. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/statsmodels.py +0 -0
  211. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/streamlit.py +0 -0
  212. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/sys.py +0 -0
  213. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/tempfile.py +0 -0
  214. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/tenacity.py +0 -0
  215. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/text.py +0 -0
  216. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/threading.py +0 -0
  217. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/timer.py +0 -0
  218. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/traceback.py +0 -0
  219. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/types.py +0 -0
  220. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/typing.py +0 -0
  221. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/tzdata.py +0 -0
  222. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/tzlocal.py +0 -0
  223. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/uuid.py +0 -0
  224. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/version.py +0 -0
  225. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/warnings.py +0 -0
  226. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/whenever.py +0 -0
  227. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/zipfile.py +0 -0
  228. {dycw_utilities-0.114.7 → dycw_utilities-0.115.1}/src/utilities/zoneinfo.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.114.7
3
+ Version: 0.115.1
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -92,7 +92,7 @@ dependencies = [
92
92
  name = "dycw-utilities"
93
93
  readme = "README.md"
94
94
  requires-python = ">= 3.12"
95
- version = "0.114.7"
95
+ version = "0.115.1"
96
96
 
97
97
  [project.optional-dependencies]
98
98
  test = [
@@ -334,7 +334,7 @@ zzz-test-zoneinfo = [
334
334
  # bump-my-version
335
335
  [tool.bumpversion]
336
336
  allow_dirty = true
337
- current_version = "0.114.7"
337
+ current_version = "0.115.1"
338
338
 
339
339
  [[tool.bumpversion.files]]
340
340
  filename = "src/utilities/__init__.py"
@@ -60,7 +60,7 @@ from utilities.timer import Timer
60
60
  if TYPE_CHECKING:
61
61
  from collections.abc import Iterator
62
62
 
63
- from utilities.types import Duration, MaybeCallableEvent, MaybeType
63
+ from utilities.types import Coroutine1, Duration, MaybeCallableEvent, MaybeType
64
64
 
65
65
 
66
66
  class TestAsyncLoopingService:
@@ -393,13 +393,13 @@ class TestInfiniteLooper:
393
393
  @override
394
394
  def _yield_events_and_exceptions(
395
395
  self,
396
- ) -> Iterator[tuple[bool, MaybeType[BaseException]]]:
396
+ ) -> Iterator[tuple[None, MaybeType[BaseException]]]:
397
397
  yield (None, CustomError)
398
398
 
399
399
  looper = Example(sleep_core=0.1)
400
400
  _ = hash(looper)
401
401
 
402
- async def test_multiple(self) -> None:
402
+ async def test_with_coroutines(self) -> None:
403
403
  class ChildError(BaseException): ...
404
404
 
405
405
  @dataclass(kw_only=True)
@@ -440,16 +440,16 @@ class TestInfiniteLooper:
440
440
  if self.counter >= 10:
441
441
  self._set_event(None)
442
442
 
443
+ @override
444
+ def _yield_coroutines(self) -> Iterator[Coroutine1[None]]:
445
+ yield self.child()
446
+
443
447
  @override
444
448
  def _yield_events_and_exceptions(
445
449
  self,
446
450
  ) -> Iterator[tuple[None, MaybeType[BaseException]]]:
447
451
  yield (None, ParentError)
448
452
 
449
- @override
450
- def _yield_loopers(self) -> Iterator[InfiniteLooper]:
451
- yield self.child
452
-
453
453
  parent = Parent(sleep_core=0.1, child=Child(sleep_core=0.1))
454
454
  with raises(BaseExceptionGroup) as error:
455
455
  async with timeout_dur(duration=1.5):
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.114.7"
3
+ __version__ = "0.115.1"
@@ -45,6 +45,7 @@ from utilities.errors import ImpossibleCaseError
45
45
  from utilities.functions import ensure_int, ensure_not_none, get_class_name
46
46
  from utilities.sentinel import Sentinel, sentinel
47
47
  from utilities.types import (
48
+ Coroutine1,
48
49
  MaybeCallableEvent,
49
50
  MaybeType,
50
51
  THashable,
@@ -344,10 +345,10 @@ class InfiniteLooper(ABC, Generic[THashable]):
344
345
 
345
346
  async def __call__(self) -> None:
346
347
  """Create a coroutine to run the looper."""
347
- loopers = list(self._yield_loopers())
348
- if len(loopers) == 0:
348
+ coroutines = list(self._yield_coroutines())
349
+ if len(coroutines) == 0:
349
350
  return await self._run_looper()
350
- return await self._run_multiple_loopers(*loopers)
351
+ return await self._run_looper_with_coroutines(*coroutines)
351
352
 
352
353
  async def _run_looper(self) -> None:
353
354
  """Run the looper by itself."""
@@ -378,14 +379,14 @@ class InfiniteLooper(ABC, Generic[THashable]):
378
379
  self._error_upon_core(error)
379
380
  await sleep_dur(duration=self.sleep_restart)
380
381
 
381
- async def _run_multiple_loopers(self, *loopers: InfiniteLooper) -> None:
382
+ async def _run_looper_with_coroutines(self, *coroutines: Coroutine1) -> None:
382
383
  """Run multiple loopers."""
383
384
  while True:
384
385
  self._reset_events()
385
386
  try:
386
387
  async with TaskGroup() as tg:
387
388
  _ = tg.create_task(self._run_looper())
388
- _ = [tg.create_task(looper()) for looper in loopers]
389
+ _ = list(map(tg.create_task, coroutines))
389
390
  except Exception as error: # noqa: BLE001
390
391
  self._error_upon_core(error) # pragma: no cover
391
392
  await sleep_dur(duration=self.sleep_restart) # pragma: no cover
@@ -436,16 +437,16 @@ class InfiniteLooper(ABC, Generic[THashable]):
436
437
  raise InfiniteLooperError(event=event) from None
437
438
  event_obj.set()
438
439
 
440
+ def _yield_coroutines(self) -> Iterator[Coroutine1[None]]:
441
+ """Yield any other coroutines which must also be run."""
442
+ yield from []
443
+
439
444
  def _yield_events_and_exceptions(
440
445
  self,
441
446
  ) -> Iterator[tuple[THashable, MaybeType[BaseException]]]:
442
447
  """Yield the events & exceptions."""
443
448
  yield from []
444
449
 
445
- def _yield_loopers(self) -> Iterator[InfiniteLooper]:
446
- """Yield any other infinite loopers which must also be run."""
447
- yield from []
448
-
449
450
 
450
451
  @dataclass(kw_only=True, slots=True)
451
452
  class InfiniteLooperError(Exception):
@@ -648,7 +648,7 @@ _SUBSCRIBE_SLEEP: Duration = MILLISECOND
648
648
 
649
649
 
650
650
  @overload
651
- async def subscribe(
651
+ def subscribe(
652
652
  pubsub: PubSub,
653
653
  channels: MaybeIterable[str],
654
654
  /,
@@ -658,7 +658,7 @@ async def subscribe(
658
658
  sleep: Duration = _SUBSCRIBE_SLEEP,
659
659
  ) -> AsyncIterator[_T]: ...
660
660
  @overload
661
- async def subscribe(
661
+ def subscribe(
662
662
  pubsub: PubSub,
663
663
  channels: MaybeIterable[str],
664
664
  /,
@@ -667,7 +667,7 @@ async def subscribe(
667
667
  timeout: Duration | None = _SUBSCRIBE_TIMEOUT,
668
668
  sleep: Duration = _SUBSCRIBE_SLEEP,
669
669
  ) -> AsyncIterator[bytes]: ...
670
- async def subscribe(
670
+ async def subscribe( # pyright: ignore[reportInconsistentOverload]
671
671
  pubsub: PubSub,
672
672
  channels: MaybeIterable[str],
673
673
  /,
@@ -675,7 +675,7 @@ async def subscribe(
675
675
  deserializer: Callable[[bytes], _T] | None = None,
676
676
  timeout: Duration | None = _SUBSCRIBE_TIMEOUT,
677
677
  sleep: Duration = _SUBSCRIBE_SLEEP,
678
- ) -> AsyncIterator[Any]:
678
+ ) -> AsyncIterator[_T] | AsyncIterator[bytes]:
679
679
  """Subscribe to the data of a given channel(s)."""
680
680
  channels = list(always_iterable(channels)) # skipif-ci-and-not-linux
681
681
  messages = subscribe_messages( # skipif-ci-and-not-linux