dycw-utilities 0.150.15__tar.gz → 0.151.0__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 (216) hide show
  1. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/PKG-INFO +1 -1
  2. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/pyproject.toml +2 -2
  3. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_altair.py +5 -2
  4. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_orjson.py +2 -2
  5. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_polars.py +19 -15
  6. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/__init__.py +1 -1
  7. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/polars.py +22 -4
  8. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/sqlalchemy_polars.py +2 -2
  9. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/.gitignore +0 -0
  10. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/LICENSE +0 -0
  11. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/README.md +0 -0
  12. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/__init__.py +0 -0
  13. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/conftest.py +0 -0
  14. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/__init__.py +0 -0
  15. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_missing/__init__.py +0 -0
  16. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_missing/module.py +0 -0
  17. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_with/__init__.py +0 -0
  18. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_with/outer_1.py +0 -0
  19. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_with/outer_2.py +0 -0
  20. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  21. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  22. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  23. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  24. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_without/__init__.py +0 -0
  25. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_without/module_1.py +0 -0
  26. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/package_without/module_2.py +0 -0
  27. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/standalone.py +0 -0
  28. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/modules/with_imports.py +0 -0
  29. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  30. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  31. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  32. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  33. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  34. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  35. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  36. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  37. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_asyncio.py +0 -0
  38. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_atomicwrites.py +0 -0
  39. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_atools.py +0 -0
  40. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_cachetools.py +0 -0
  41. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_click.py +0 -0
  42. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_concurrent.py +0 -0
  43. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_contextlib.py +0 -0
  44. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_contextvars.py +0 -0
  45. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_cryptography.py +0 -0
  46. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_cvxpy.py +0 -0
  47. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_dataclasses.py +0 -0
  48. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_dnspython.py +0 -0
  49. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_enum.py +0 -0
  50. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_errors.py +0 -0
  51. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_eventkit.py +0 -0
  52. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_fastapi.py +0 -0
  53. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_fpdf2.py +0 -0
  54. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_functions.py +0 -0
  55. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_functools.py +0 -0
  56. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_getpass.py +0 -0
  57. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_gzip.py +0 -0
  58. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_hashlib.py +0 -0
  59. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_http.py +0 -0
  60. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_hypothesis.py +0 -0
  61. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_importlib.py +0 -0
  62. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_inflect.py +0 -0
  63. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_ipython.py +0 -0
  64. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_iterables.py +0 -0
  65. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_json.py +0 -0
  66. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_jupyter.py +0 -0
  67. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_libcst.py +0 -0
  68. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_lightweight_charts.py +0 -0
  69. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_logging.py +0 -0
  70. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_math.py +0 -0
  71. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_memory_profiler.py +0 -0
  72. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_modules.py +0 -0
  73. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_more_itertools.py +0 -0
  74. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_numpy.py +0 -0
  75. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_objects/__init__.py +0 -0
  76. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_objects/objects.py +0 -0
  77. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_operator.py +0 -0
  78. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_optuna.py +0 -0
  79. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_os.py +0 -0
  80. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_parse.py +0 -0
  81. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_pathlib.py +0 -0
  82. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_period.py +0 -0
  83. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_pickle.py +0 -0
  84. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_platform.py +0 -0
  85. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_polars_ols.py +0 -0
  86. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_postgres.py +0 -0
  87. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_pottery.py +0 -0
  88. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_pqdm.py +0 -0
  89. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_psutil.py +0 -0
  90. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_pyinstrument.py +0 -0
  91. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_pytest.py +0 -0
  92. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_pytest_randomly.py +0 -0
  93. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_pytest_regressions.py +0 -0
  94. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_random.py +0 -0
  95. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_re.py +0 -0
  96. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_redis.py +0 -0
  97. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_reprlib.py +0 -0
  98. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_scipy.py +0 -0
  99. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_sentinel.py +0 -0
  100. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_shelve.py +0 -0
  101. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_slack_sdk.py +0 -0
  102. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_socket.py +0 -0
  103. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_sqlalchemy.py +0 -0
  104. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_sqlalchemy_polars.py +0 -0
  105. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_statsmodels.py +0 -0
  106. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_string.py +0 -0
  107. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_tempfile.py +0 -0
  108. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_text.py +0 -0
  109. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_threading.py +0 -0
  110. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_timer.py +0 -0
  111. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_traceback.py +0 -0
  112. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_typed_settings.py +0 -0
  113. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_types.py +0 -0
  114. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_typing.py +0 -0
  115. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_typing_funcs/__init__.py +0 -0
  116. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_typing_funcs/no_future.py +0 -0
  117. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_typing_funcs/with_future.py +0 -0
  118. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_tzdata.py +0 -0
  119. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_tzlocal.py +0 -0
  120. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_uuid.py +0 -0
  121. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_version.py +0 -0
  122. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_warnings.py +0 -0
  123. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_whenever.py +0 -0
  124. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_yield_access/__init__.py +0 -0
  125. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_yield_access/script.py +0 -0
  126. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_yield_access/script.sh +0 -0
  127. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_zipfile.py +0 -0
  128. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/tests/test_zoneinfo.py +0 -0
  129. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/altair.py +0 -0
  130. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/asyncio.py +0 -0
  131. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/atomicwrites.py +0 -0
  132. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/atools.py +0 -0
  133. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/cachetools.py +0 -0
  134. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/click.py +0 -0
  135. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/concurrent.py +0 -0
  136. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/contextlib.py +0 -0
  137. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/contextvars.py +0 -0
  138. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/cryptography.py +0 -0
  139. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/cvxpy.py +0 -0
  140. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/dataclasses.py +0 -0
  141. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/dnspython.py +0 -0
  142. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/enum.py +0 -0
  143. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/errors.py +0 -0
  144. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/eventkit.py +0 -0
  145. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/fastapi.py +0 -0
  146. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/fpdf2.py +0 -0
  147. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/functions.py +0 -0
  148. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/functools.py +0 -0
  149. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/getpass.py +0 -0
  150. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/gzip.py +0 -0
  151. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/hashlib.py +0 -0
  152. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/http.py +0 -0
  153. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/hypothesis.py +0 -0
  154. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/importlib.py +0 -0
  155. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/inflect.py +0 -0
  156. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/ipython.py +0 -0
  157. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/iterables.py +0 -0
  158. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/json.py +0 -0
  159. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/jupyter.py +0 -0
  160. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/libcst.py +0 -0
  161. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/lightweight_charts.py +0 -0
  162. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/logging.py +0 -0
  163. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/math.py +0 -0
  164. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/memory_profiler.py +0 -0
  165. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/modules.py +0 -0
  166. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/more_itertools.py +0 -0
  167. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/numpy.py +0 -0
  168. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/operator.py +0 -0
  169. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/optuna.py +0 -0
  170. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/orjson.py +0 -0
  171. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/os.py +0 -0
  172. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/parse.py +0 -0
  173. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/pathlib.py +0 -0
  174. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/period.py +0 -0
  175. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/pickle.py +0 -0
  176. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/platform.py +0 -0
  177. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/polars_ols.py +0 -0
  178. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/postgres.py +0 -0
  179. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/pottery.py +0 -0
  180. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/pqdm.py +0 -0
  181. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/psutil.py +0 -0
  182. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/py.typed +0 -0
  183. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/pyinstrument.py +0 -0
  184. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/pytest.py +0 -0
  185. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/pytest_plugins/__init__.py +0 -0
  186. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
  187. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
  188. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/pytest_regressions.py +0 -0
  189. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/random.py +0 -0
  190. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/re.py +0 -0
  191. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/redis.py +0 -0
  192. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/reprlib.py +0 -0
  193. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/scipy.py +0 -0
  194. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/sentinel.py +0 -0
  195. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/shelve.py +0 -0
  196. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/slack_sdk.py +0 -0
  197. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/socket.py +0 -0
  198. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/sqlalchemy.py +0 -0
  199. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/statsmodels.py +0 -0
  200. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/string.py +0 -0
  201. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/tempfile.py +0 -0
  202. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/text.py +0 -0
  203. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/threading.py +0 -0
  204. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/timer.py +0 -0
  205. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/traceback.py +0 -0
  206. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/typed_settings.py +0 -0
  207. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/types.py +0 -0
  208. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/typing.py +0 -0
  209. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/tzdata.py +0 -0
  210. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/tzlocal.py +0 -0
  211. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/uuid.py +0 -0
  212. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/version.py +0 -0
  213. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/warnings.py +0 -0
  214. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/whenever.py +0 -0
  215. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/zipfile.py +0 -0
  216. {dycw_utilities-0.150.15 → dycw_utilities-0.151.0}/src/utilities/zoneinfo.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dycw-utilities
3
- Version: 0.150.15
3
+ Version: 0.151.0
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -232,7 +232,7 @@ dependencies = [
232
232
  name = "dycw-utilities"
233
233
  readme = "README.md"
234
234
  requires-python = ">= 3.12"
235
- version = "0.150.15"
235
+ version = "0.151.0"
236
236
 
237
237
  [project.entry-points.pytest11]
238
238
  pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
@@ -265,7 +265,7 @@ test = [
265
265
  # bump-my-version
266
266
  [tool.bumpversion]
267
267
  allow_dirty = true
268
- current_version = "0.150.15"
268
+ current_version = "0.151.0"
269
269
 
270
270
  [[tool.bumpversion.files]]
271
271
  filename = "src/utilities/__init__.py"
@@ -28,7 +28,7 @@ from utilities.altair import (
28
28
  )
29
29
  from utilities.functions import ensure_class
30
30
  from utilities.hypothesis import dates, text_ascii, zoned_datetimes
31
- from utilities.polars import DatetimeUTC, zoned_datetime
31
+ from utilities.polars import DatetimeUTC, zoned_datetime_dtype
32
32
  from utilities.tzdata import HongKong, Tokyo
33
33
  from utilities.whenever import get_now
34
34
  from utilities.zoneinfo import UTC
@@ -97,7 +97,10 @@ class TestPlotDataFrames:
97
97
  def test_auto_localization(self, *, time_zone: ZoneInfo) -> None:
98
98
  df = DataFrame(
99
99
  data=[(dt.datetime(2000, 1, 1, 12, tzinfo=time_zone), 0.0)],
100
- schema={"datetime": zoned_datetime(time_zone=time_zone), "value": Float64},
100
+ schema={
101
+ "datetime": zoned_datetime_dtype(time_zone=time_zone),
102
+ "value": Float64,
103
+ },
101
104
  orient="row",
102
105
  )
103
106
  chart = plot_dataframes(df, x="datetime", y="value")
@@ -79,7 +79,7 @@ from utilities.orjson import (
79
79
  serialize,
80
80
  write_object,
81
81
  )
82
- from utilities.polars import check_polars_dataframe, zoned_datetime
82
+ from utilities.polars import check_polars_dataframe, zoned_datetime_dtype
83
83
  from utilities.sentinel import Sentinel, sentinel
84
84
  from utilities.types import LogLevel, MaybeIterable, PathLike
85
85
  from utilities.typing import get_args
@@ -174,7 +174,7 @@ class TestGetLogRecords:
174
174
  "level": UInt64,
175
175
  "path_name": String,
176
176
  "line_num": UInt64,
177
- "datetime": zoned_datetime(time_zone=LOCAL_TIME_ZONE),
177
+ "datetime": zoned_datetime_dtype(time_zone=LOCAL_TIME_ZONE),
178
178
  "func_name": String,
179
179
  "stack_info": String,
180
180
  "extra": Object,
@@ -187,7 +187,8 @@ from utilities.polars import (
187
187
  week_num,
188
188
  write_dataframe,
189
189
  write_series,
190
- zoned_datetime,
190
+ zoned_datetime_dtype,
191
+ zoned_datetime_period_dtype,
191
192
  )
192
193
  from utilities.random import get_state
193
194
  from utilities.sentinel import Sentinel, sentinel
@@ -1023,7 +1024,9 @@ class TestDataClassToDataFrame:
1023
1024
  ):
1024
1025
  df = dataclass_to_dataframe(objs, localns=locals())
1025
1026
  check_polars_dataframe(
1026
- df, height=len(objs), schema_list={"x": zoned_datetime(time_zone=time_zone)}
1027
+ df,
1028
+ height=len(objs),
1029
+ schema_list={"x": zoned_datetime_dtype(time_zone=time_zone)},
1027
1030
  )
1028
1031
 
1029
1032
  def test_error_empty(self) -> None:
@@ -1117,7 +1120,7 @@ class TestDataClassToSchema:
1117
1120
 
1118
1121
  obj = Example()
1119
1122
  result = dataclass_to_schema(obj)
1120
- expected = {"x": zoned_datetime(time_zone=time_zone)}
1123
+ expected = {"x": zoned_datetime_dtype(time_zone=time_zone)}
1121
1124
  assert result == expected
1122
1125
 
1123
1126
  def test_enum(self) -> None:
@@ -1249,7 +1252,7 @@ class TestDataClassToSchema:
1249
1252
 
1250
1253
  obj = Example()
1251
1254
  result = dataclass_to_schema(obj)
1252
- expected = {"x": zoned_datetime(time_zone=time_zone)}
1255
+ expected = {"x": zoned_datetime_dtype(time_zone=time_zone)}
1253
1256
  assert result == expected
1254
1257
 
1255
1258
  @given(start=timezones(), end=timezones())
@@ -1269,12 +1272,7 @@ class TestDataClassToSchema:
1269
1272
 
1270
1273
  obj = Outer()
1271
1274
  result = dataclass_to_schema(obj, localns=locals())
1272
- expected = {
1273
- "inner": Struct({
1274
- "start": zoned_datetime(time_zone=start),
1275
- "end": zoned_datetime(time_zone=end),
1276
- })
1277
- }
1275
+ expected = {"inner": zoned_datetime_period_dtype(time_zone=(start, end))}
1278
1276
  assert result == expected
1279
1277
 
1280
1278
  def test_containers(self) -> None:
@@ -1490,7 +1488,7 @@ class TestGetDataTypeOrSeriesTimeZone:
1490
1488
  def test_main(
1491
1489
  self, *, time_zone: ZoneInfo, case: Literal["dtype", "series"]
1492
1490
  ) -> None:
1493
- dtype = zoned_datetime(time_zone=time_zone)
1491
+ dtype = zoned_datetime_dtype(time_zone=time_zone)
1494
1492
  match case:
1495
1493
  case "dtype":
1496
1494
  dtype_or_series = dtype
@@ -2823,9 +2821,15 @@ class TestWeekNum:
2823
2821
  assert_series_equal(result, expected)
2824
2822
 
2825
2823
 
2826
- class TestZonedDateTime:
2827
- @given(time_zone=sampled_from([HongKong, UTC]))
2828
- def test_main(self, *, time_zone: ZoneInfo) -> None:
2829
- dtype = zoned_datetime(time_zone=time_zone)
2824
+ class TestZonedDateTimeDType:
2825
+ def test_main(self) -> None:
2826
+ dtype = zoned_datetime_dtype(time_zone=UTC)
2830
2827
  assert isinstance(dtype, Datetime)
2831
2828
  assert dtype.time_zone is not None
2829
+
2830
+
2831
+ class TestZonedDateTimePeriodDType:
2832
+ @given(time_zone=sampled_from([UTC, (UTC, UTC)]))
2833
+ def test_main(self, *, time_zone: ZoneInfo | tuple[ZoneInfo, ZoneInfo]) -> None:
2834
+ dtype = zoned_datetime_period_dtype(time_zone=time_zone)
2835
+ assert isinstance(dtype, Struct)
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.150.15"
3
+ __version__ = "0.151.0"
@@ -1097,7 +1097,7 @@ def _dataclass_to_schema_datetime(
1097
1097
  ) -> PolarsDataType:
1098
1098
  if field.value.tzinfo is None:
1099
1099
  return Datetime
1100
- return zoned_datetime(time_zone=ensure_time_zone(field.value.tzinfo))
1100
+ return zoned_datetime_dtype(time_zone=ensure_time_zone(field.value.tzinfo))
1101
1101
 
1102
1102
 
1103
1103
  def _dataclass_to_schema_one(
@@ -2259,7 +2259,7 @@ def _struct_from_dataclass_one(
2259
2259
  if ann is dt.datetime:
2260
2260
  if time_zone is None:
2261
2261
  raise _StructFromDataClassTimeZoneMissingError
2262
- return zoned_datetime(time_zone=time_zone)
2262
+ return zoned_datetime_dtype(time_zone=time_zone)
2263
2263
  if is_dataclass_class(ann):
2264
2264
  return struct_from_dataclass(ann, time_zone=time_zone)
2265
2265
  if (isinstance(ann, type) and issubclass(ann, enum.Enum)) or (
@@ -2388,13 +2388,30 @@ def week_num(column: IntoExprColumn, /, *, start: WeekDay = "mon") -> Expr | Ser
2388
2388
  ##
2389
2389
 
2390
2390
 
2391
- def zoned_datetime(
2391
+ def zoned_datetime_dtype(
2392
2392
  *, time_unit: TimeUnit = "us", time_zone: TimeZoneLike = UTC
2393
2393
  ) -> Datetime:
2394
2394
  """Create a zoned datetime data type."""
2395
2395
  return Datetime(time_unit=time_unit, time_zone=get_time_zone_name(time_zone))
2396
2396
 
2397
2397
 
2398
+ def zoned_datetime_period_dtype(
2399
+ *,
2400
+ time_unit: TimeUnit = "us",
2401
+ time_zone: TimeZoneLike | tuple[TimeZoneLike, TimeZoneLike] = UTC,
2402
+ ) -> Struct:
2403
+ """Create a zoned datetime period data type."""
2404
+ match time_zone:
2405
+ case start, end:
2406
+ return struct_dtype(
2407
+ start=zoned_datetime_dtype(time_unit=time_unit, time_zone=start),
2408
+ end=zoned_datetime_dtype(time_unit=time_unit, time_zone=end),
2409
+ )
2410
+ case _:
2411
+ dtype = zoned_datetime_dtype(time_unit=time_unit, time_zone=time_zone)
2412
+ return struct_dtype(start=dtype, end=dtype)
2413
+
2414
+
2398
2415
  __all__ = [
2399
2416
  "BooleanValueCountsError",
2400
2417
  "CheckPolarsDataFrameError",
@@ -2470,5 +2487,6 @@ __all__ = [
2470
2487
  "unique_element",
2471
2488
  "write_dataframe",
2472
2489
  "write_series",
2473
- "zoned_datetime",
2490
+ "zoned_datetime_dtype",
2491
+ "zoned_datetime_period_dtype",
2474
2492
  ]
@@ -35,7 +35,7 @@ from utilities.iterables import (
35
35
  chunked,
36
36
  one,
37
37
  )
38
- from utilities.polars import zoned_datetime
38
+ from utilities.polars import zoned_datetime_dtype
39
39
  from utilities.reprlib import get_repr
40
40
  from utilities.sqlalchemy import (
41
41
  CHUNK_SIZE_FRAC,
@@ -390,7 +390,7 @@ def _select_to_dataframe_map_table_column_type_to_dtype(
390
390
  return pl.Date
391
391
  if is_subclass_gen(py_type, dt.datetime):
392
392
  has_tz: bool = type_use.timezone
393
- return zoned_datetime(time_zone=time_zone) if has_tz else Datetime()
393
+ return zoned_datetime_dtype(time_zone=time_zone) if has_tz else Datetime()
394
394
  if issubclass(py_type, dt.time):
395
395
  return Time
396
396
  if issubclass(py_type, dt.timedelta):