dycw-utilities 0.133.1__tar.gz → 0.133.2__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 (218) hide show
  1. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/PKG-INFO +1 -1
  2. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/pyproject.toml +2 -2
  3. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_arq.py +24 -13
  4. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/__init__.py +1 -1
  5. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/arq.py +66 -4
  6. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/.gitignore +0 -0
  7. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/LICENSE +0 -0
  8. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/README.md +0 -0
  9. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/__init__.py +0 -0
  10. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/conftest.py +0 -0
  11. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/__init__.py +0 -0
  12. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_missing/__init__.py +0 -0
  13. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_missing/module.py +0 -0
  14. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_with/__init__.py +0 -0
  15. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_with/outer_1.py +0 -0
  16. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_with/outer_2.py +0 -0
  17. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  18. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  19. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  20. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  21. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_without/__init__.py +0 -0
  22. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_without/module_1.py +0 -0
  23. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/package_without/module_2.py +0 -0
  24. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/standalone.py +0 -0
  25. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/modules/with_imports.py +0 -0
  26. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  27. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  28. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  29. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  30. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  31. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  32. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  33. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  34. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_aiolimiter.py +0 -0
  35. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_altair.py +0 -0
  36. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_asyncio.py +0 -0
  37. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_asyncio_classes/__init__.py +0 -0
  38. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_asyncio_classes/loopers.py +0 -0
  39. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_asyncio_classes/redis.py +0 -0
  40. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_atomicwrites.py +0 -0
  41. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_atools.py +0 -0
  42. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_cachetools.py +0 -0
  43. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_click.py +0 -0
  44. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_concurrent.py +0 -0
  45. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_contextlib.py +0 -0
  46. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_contextvars.py +0 -0
  47. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_cryptography.py +0 -0
  48. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_cvxpy.py +0 -0
  49. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_dataclasses.py +0 -0
  50. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_enum.py +0 -0
  51. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_errors.py +0 -0
  52. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_eventkit.py +0 -0
  53. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_fastapi.py +0 -0
  54. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_fpdf2.py +0 -0
  55. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_functions.py +0 -0
  56. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_functools.py +0 -0
  57. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_getpass.py +0 -0
  58. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_git.py +0 -0
  59. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_hashlib.py +0 -0
  60. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_http.py +0 -0
  61. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_hypothesis.py +0 -0
  62. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_importlib.py +0 -0
  63. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_inflect.py +0 -0
  64. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_ipython.py +0 -0
  65. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_iterables.py +0 -0
  66. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_jupyter.py +0 -0
  67. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_libcst.py +0 -0
  68. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_lightweight_charts.py +0 -0
  69. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_logging.py +0 -0
  70. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_luigi.py +0 -0
  71. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_math.py +0 -0
  72. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_memory_profiler.py +0 -0
  73. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_modules.py +0 -0
  74. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_more_itertools.py +0 -0
  75. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_numpy.py +0 -0
  76. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_objects/__init__.py +0 -0
  77. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_objects/objects.py +0 -0
  78. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_operator.py +0 -0
  79. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_optuna.py +0 -0
  80. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_orjson.py +0 -0
  81. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_os.py +0 -0
  82. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_parse.py +0 -0
  83. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_pathlib.py +0 -0
  84. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_period.py +0 -0
  85. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_pickle.py +0 -0
  86. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_platform.py +0 -0
  87. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_polars.py +0 -0
  88. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_polars_ols.py +0 -0
  89. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_pottery.py +0 -0
  90. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_pqdm.py +0 -0
  91. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_psutil.py +0 -0
  92. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_pydantic.py +0 -0
  93. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_pyinstrument.py +0 -0
  94. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_pytest.py +0 -0
  95. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_pytest_regressions.py +0 -0
  96. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_python_dotenv.py +0 -0
  97. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_random.py +0 -0
  98. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_re.py +0 -0
  99. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_redis.py +0 -0
  100. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_reprlib.py +0 -0
  101. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_scipy.py +0 -0
  102. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_sentinel.py +0 -0
  103. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_shelve.py +0 -0
  104. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_slack_sdk.py +0 -0
  105. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_socket.py +0 -0
  106. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_sqlalchemy.py +0 -0
  107. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_sqlalchemy_polars.py +0 -0
  108. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_statsmodels.py +0 -0
  109. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_streamlit.py +0 -0
  110. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_string.py +0 -0
  111. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_tempfile.py +0 -0
  112. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_text.py +0 -0
  113. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_threading.py +0 -0
  114. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_timer.py +0 -0
  115. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_traceback.py +0 -0
  116. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_typed_settings.py +0 -0
  117. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_types.py +0 -0
  118. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_typing.py +0 -0
  119. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_typing_funcs/__init__.py +0 -0
  120. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_typing_funcs/no_future.py +0 -0
  121. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_typing_funcs/with_future.py +0 -0
  122. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_tzdata.py +0 -0
  123. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_tzlocal.py +0 -0
  124. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_uuid.py +0 -0
  125. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_version.py +0 -0
  126. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_warnings.py +0 -0
  127. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_whenever.py +0 -0
  128. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_zipfile.py +0 -0
  129. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/tests/test_zoneinfo.py +0 -0
  130. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/aiolimiter.py +0 -0
  131. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/altair.py +0 -0
  132. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/asyncio.py +0 -0
  133. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/atomicwrites.py +0 -0
  134. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/atools.py +0 -0
  135. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/cachetools.py +0 -0
  136. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/click.py +0 -0
  137. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/concurrent.py +0 -0
  138. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/contextlib.py +0 -0
  139. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/contextvars.py +0 -0
  140. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/cryptography.py +0 -0
  141. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/cvxpy.py +0 -0
  142. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/dataclasses.py +0 -0
  143. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/enum.py +0 -0
  144. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/errors.py +0 -0
  145. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/eventkit.py +0 -0
  146. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/fastapi.py +0 -0
  147. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/fpdf2.py +0 -0
  148. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/functions.py +0 -0
  149. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/functools.py +0 -0
  150. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/getpass.py +0 -0
  151. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/git.py +0 -0
  152. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/hashlib.py +0 -0
  153. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/http.py +0 -0
  154. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/hypothesis.py +0 -0
  155. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/importlib.py +0 -0
  156. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/inflect.py +0 -0
  157. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/ipython.py +0 -0
  158. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/iterables.py +0 -0
  159. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/jupyter.py +0 -0
  160. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/libcst.py +0 -0
  161. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/lightweight_charts.py +0 -0
  162. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/logging.py +0 -0
  163. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/luigi.py +0 -0
  164. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/math.py +0 -0
  165. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/memory_profiler.py +0 -0
  166. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/modules.py +0 -0
  167. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/more_itertools.py +0 -0
  168. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/numpy.py +0 -0
  169. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/operator.py +0 -0
  170. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/optuna.py +0 -0
  171. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/orjson.py +0 -0
  172. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/os.py +0 -0
  173. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/parse.py +0 -0
  174. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/pathlib.py +0 -0
  175. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/period.py +0 -0
  176. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/pickle.py +0 -0
  177. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/platform.py +0 -0
  178. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/polars.py +0 -0
  179. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/polars_ols.py +0 -0
  180. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/pottery.py +0 -0
  181. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/pqdm.py +0 -0
  182. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/psutil.py +0 -0
  183. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/py.typed +0 -0
  184. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/pydantic.py +0 -0
  185. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/pyinstrument.py +0 -0
  186. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/pytest.py +0 -0
  187. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/pytest_regressions.py +0 -0
  188. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/python_dotenv.py +0 -0
  189. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/random.py +0 -0
  190. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/re.py +0 -0
  191. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/redis.py +0 -0
  192. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/reprlib.py +0 -0
  193. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/scipy.py +0 -0
  194. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/sentinel.py +0 -0
  195. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/shelve.py +0 -0
  196. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/slack_sdk.py +0 -0
  197. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/socket.py +0 -0
  198. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/sqlalchemy.py +0 -0
  199. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/sqlalchemy_polars.py +0 -0
  200. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/statsmodels.py +0 -0
  201. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/streamlit.py +0 -0
  202. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/string.py +0 -0
  203. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/tempfile.py +0 -0
  204. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/text.py +0 -0
  205. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/threading.py +0 -0
  206. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/timer.py +0 -0
  207. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/traceback.py +0 -0
  208. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/typed_settings.py +0 -0
  209. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/types.py +0 -0
  210. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/typing.py +0 -0
  211. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/tzdata.py +0 -0
  212. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/tzlocal.py +0 -0
  213. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/uuid.py +0 -0
  214. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/version.py +0 -0
  215. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/warnings.py +0 -0
  216. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/whenever.py +0 -0
  217. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/zipfile.py +0 -0
  218. {dycw_utilities-0.133.1 → dycw_utilities-0.133.2}/src/utilities/zoneinfo.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.133.1
3
+ Version: 0.133.2
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -104,7 +104,7 @@ dependencies = [
104
104
  name = "dycw-utilities"
105
105
  readme = "README.md"
106
106
  requires-python = ">= 3.12"
107
- version = "0.133.1"
107
+ version = "0.133.2"
108
108
 
109
109
  [project.optional-dependencies]
110
110
  logging = [
@@ -130,7 +130,7 @@ test = [
130
130
  # bump-my-version
131
131
  [tool.bumpversion]
132
132
  allow_dirty = true
133
- current_version = "0.133.1"
133
+ current_version = "0.133.2"
134
134
 
135
135
  [[tool.bumpversion.files]]
136
136
  filename = "src/utilities/__init__.py"
@@ -3,45 +3,56 @@ from __future__ import annotations
3
3
  from asyncio import sleep
4
4
  from typing import TYPE_CHECKING, Any, cast
5
5
 
6
+ from arq.connections import ArqRedis
6
7
  from hypothesis import given
7
8
  from hypothesis.strategies import integers
8
9
 
9
- from utilities.arq import Worker, cron_raw
10
+ from tests.conftest import SKIPIF_CI_AND_NOT_LINUX
11
+ from utilities.arq import Worker, cron_raw, job_enqueuer
10
12
  from utilities.iterables import one
11
13
 
12
14
  if TYPE_CHECKING:
13
15
  from collections.abc import Sequence
14
16
 
15
- from arq.cron import CronJob
16
17
  from arq.typing import WorkerCoroutine
17
18
 
18
19
  from utilities.types import CallableCoroutine1
19
20
 
20
21
 
21
- class TestWorker:
22
+ class TestCronRaw:
22
23
  @given(x=integers(), y=integers())
23
24
  async def test_main(self, *, x: int, y: int) -> None:
24
25
  async def func(x: int, y: int, /) -> int:
25
26
  await sleep(0.01)
26
27
  return x + y
27
28
 
28
- class Example(Worker):
29
- functions_raw: Sequence[CallableCoroutine1[Any]] = [func]
30
-
31
- func_use = cast("WorkerCoroutine", one(Example.functions))
32
- result = await func_use({}, x, y)
29
+ job = cron_raw(func, args=(x, y))
30
+ result = await job.coroutine({})
33
31
  assert result == (x + y)
34
32
 
33
+
34
+ class TestJobEnqueuer:
35
+ @given(x=integers(), y=integers())
36
+ @SKIPIF_CI_AND_NOT_LINUX
37
+ async def test_main(self, *, x: int, y: int) -> None:
38
+ async def func(x: int, y: int, /) -> int:
39
+ await sleep(0.01)
40
+ return x + y
41
+
42
+ redis = ArqRedis(db=15)
43
+ _ = await job_enqueuer.settings(queue_name="test")(redis, func, x, y)
44
+
45
+
46
+ class TestWorker:
35
47
  @given(x=integers(), y=integers())
36
- async def test_cron(self, *, x: int, y: int) -> None:
48
+ async def test_main(self, *, x: int, y: int) -> None:
37
49
  async def func(x: int, y: int, /) -> int:
38
50
  await sleep(0.01)
39
51
  return x + y
40
52
 
41
53
  class Example(Worker):
42
- cron_jobs: Sequence[CronJob] | None = [cron_raw(func, args=(x, y))]
54
+ functions_raw: Sequence[CallableCoroutine1[Any]] = [func]
43
55
 
44
- assert Example.cron_jobs is not None
45
- cron_job = one(Example.cron_jobs)
46
- result = await cron_job.coroutine({})
56
+ func_use = cast("WorkerCoroutine", one(Example.functions))
57
+ result = await func_use({}, x, y)
47
58
  assert result == (x + y)
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.133.1"
3
+ __version__ = "0.133.2"
@@ -3,18 +3,21 @@ from __future__ import annotations
3
3
  from dataclasses import dataclass
4
4
  from functools import wraps
5
5
  from itertools import chain
6
- from typing import TYPE_CHECKING, Any, ParamSpec, TypeVar, cast, override
6
+ from typing import TYPE_CHECKING, Any, ParamSpec, Self, TypeVar, cast, override
7
7
 
8
8
  from arq.constants import default_queue_name, expires_extra_ms
9
9
  from arq.cron import cron
10
10
 
11
+ from utilities.dataclasses import replace_non_sentinel
12
+ from utilities.sentinel import Sentinel, sentinel
13
+
11
14
  if TYPE_CHECKING:
12
15
  from collections.abc import Callable, Iterable, Sequence
13
- from datetime import timezone
16
+ from datetime import datetime, timedelta, timezone
14
17
 
15
18
  from arq.connections import ArqRedis, RedisSettings
16
19
  from arq.cron import CronJob
17
- from arq.jobs import Deserializer, Serializer
20
+ from arq.jobs import Deserializer, Job, Serializer
18
21
  from arq.typing import (
19
22
  OptionType,
20
23
  SecondsTimedelta,
@@ -26,6 +29,7 @@ if TYPE_CHECKING:
26
29
 
27
30
  from utilities.types import CallableCoroutine1, Coroutine1, StrMapping
28
31
 
32
+
29
33
  _P = ParamSpec("_P")
30
34
  _T = TypeVar("_T")
31
35
 
@@ -95,6 +99,64 @@ def _lift_cron(
95
99
  ##
96
100
 
97
101
 
102
+ @dataclass(kw_only=True, slots=True)
103
+ class _JobEnqueuer:
104
+ """Enqueuer of jobs."""
105
+
106
+ job_id: str | None = None
107
+ queue_name: str | None = None
108
+ defer_until: datetime | None = None
109
+ defer_by: int | float | timedelta | None = None
110
+ expires: int | float | timedelta | None = None
111
+ job_try: int | None = None
112
+
113
+ async def __call__(
114
+ self,
115
+ redis: ArqRedis,
116
+ function: Callable[_P, Coroutine1[_T]],
117
+ *args: _P.args,
118
+ **kwargs: _P.kwargs,
119
+ ) -> Job | None:
120
+ return await redis.enqueue_job( # skipif-ci-and-not-linux
121
+ function.__name__,
122
+ *args,
123
+ _job_id=self.job_id,
124
+ _queue_name=self.queue_name,
125
+ _defer_until=self.defer_until,
126
+ _defer_by=self.defer_by,
127
+ _expires=self.expires,
128
+ _job_try=self.job_try,
129
+ **kwargs,
130
+ )
131
+
132
+ def settings(
133
+ self,
134
+ *,
135
+ job_id: str | None | Sentinel = sentinel,
136
+ queue_name: str | None | Sentinel = sentinel,
137
+ defer_until: datetime | None | Sentinel = sentinel,
138
+ defer_by: float | timedelta | None | Sentinel = sentinel,
139
+ expires: float | timedelta | None | Sentinel = sentinel,
140
+ job_try: int | None | Sentinel = sentinel,
141
+ ) -> Self:
142
+ """Replace elements of the enqueuer."""
143
+ return replace_non_sentinel( # skipif-ci-and-not-linux
144
+ self,
145
+ job_id=job_id,
146
+ queue_name=queue_name,
147
+ defer_until=defer_until,
148
+ defer_by=defer_by,
149
+ expires=expires,
150
+ job_try=job_try,
151
+ )
152
+
153
+
154
+ job_enqueuer = _JobEnqueuer()
155
+
156
+
157
+ ##
158
+
159
+
98
160
  class _WorkerMeta(type):
99
161
  @override
100
162
  def __new__(
@@ -158,4 +220,4 @@ class Worker(metaclass=_WorkerMeta):
158
220
  log_results: bool = True
159
221
 
160
222
 
161
- __all__ = ["Worker", "cron"]
223
+ __all__ = ["Worker", "cron", "job_enqueuer"]