dycw-utilities 0.158.2__tar.gz → 0.159.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 (209) hide show
  1. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/PKG-INFO +2 -2
  2. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/pyproject.toml +4 -4
  3. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_polars.py +99 -211
  4. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/__init__.py +1 -1
  5. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/polars.py +66 -153
  6. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/.gitignore +0 -0
  7. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/LICENSE +0 -0
  8. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/README.md +0 -0
  9. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/__init__.py +0 -0
  10. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/conftest.py +0 -0
  11. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/__init__.py +0 -0
  12. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_missing/__init__.py +0 -0
  13. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_missing/module.py +0 -0
  14. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_with/__init__.py +0 -0
  15. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_with/outer_1.py +0 -0
  16. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_with/outer_2.py +0 -0
  17. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_with/subpackage/__init__.py +0 -0
  18. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_with/subpackage/inner_1.py +0 -0
  19. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_with/subpackage/inner_2.py +0 -0
  20. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_with/subpackage/inner_3.py +0 -0
  21. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_without/__init__.py +0 -0
  22. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_without/module_1.py +0 -0
  23. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/package_without/module_2.py +0 -0
  24. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/standalone.py +0 -0
  25. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/modules/with_imports.py +0 -0
  26. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__obj.json +0 -0
  27. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/regressions/test_pytest_regressions/TestMultipleRegressionFixtures__test_main__series.json +0 -0
  28. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_int.json +0 -0
  29. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__false.json +0 -0
  30. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_literal__true.json +0 -0
  31. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/regressions/test_pytest_regressions/TestOrjsonRegressionFixture__test_dataclass_nested.json +0 -0
  32. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_dataframe.json +0 -0
  33. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/regressions/test_pytest_regressions/TestPolarsRegressionFixture__test_series.json +0 -0
  34. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_altair.py +0 -0
  35. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_asyncio.py +0 -0
  36. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_atomicwrites.py +0 -0
  37. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_atools.py +0 -0
  38. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_cachetools.py +0 -0
  39. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_click.py +0 -0
  40. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_concurrent.py +0 -0
  41. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_contextlib.py +0 -0
  42. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_contextvars.py +0 -0
  43. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_cryptography.py +0 -0
  44. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_cvxpy.py +0 -0
  45. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_dataclasses.py +0 -0
  46. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_enum.py +0 -0
  47. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_errors.py +0 -0
  48. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_eventkit.py +0 -0
  49. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_fastapi.py +0 -0
  50. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_fpdf2.py +0 -0
  51. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_functions.py +0 -0
  52. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_functools.py +0 -0
  53. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_getpass.py +0 -0
  54. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_gzip.py +0 -0
  55. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_hashlib.py +0 -0
  56. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_http.py +0 -0
  57. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_hypothesis.py +0 -0
  58. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_importlib.py +0 -0
  59. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_inflect.py +0 -0
  60. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_ipython.py +0 -0
  61. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_iterables.py +0 -0
  62. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_json.py +0 -0
  63. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_jupyter.py +0 -0
  64. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_libcst.py +0 -0
  65. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_lightweight_charts.py +0 -0
  66. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_logging.py +0 -0
  67. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_math.py +0 -0
  68. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_memory_profiler.py +0 -0
  69. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_modules.py +0 -0
  70. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_more_itertools.py +0 -0
  71. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_numpy.py +0 -0
  72. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_objects/__init__.py +0 -0
  73. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_objects/objects.py +0 -0
  74. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_operator.py +0 -0
  75. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_optuna.py +0 -0
  76. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_orjson.py +0 -0
  77. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_os.py +0 -0
  78. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_parse.py +0 -0
  79. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_pathlib.py +0 -0
  80. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_pickle.py +0 -0
  81. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_platform.py +0 -0
  82. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_polars_ols.py +0 -0
  83. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_postgres.py +0 -0
  84. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_pottery.py +0 -0
  85. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_pqdm.py +0 -0
  86. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_psutil.py +0 -0
  87. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_pyinstrument.py +0 -0
  88. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_pytest.py +0 -0
  89. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_pytest_randomly.py +0 -0
  90. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_pytest_regressions.py +0 -0
  91. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_random.py +0 -0
  92. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_re.py +0 -0
  93. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_redis.py +0 -0
  94. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_reprlib.py +0 -0
  95. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_scipy.py +0 -0
  96. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_sentinel.py +0 -0
  97. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_shelve.py +0 -0
  98. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_slack_sdk.py +0 -0
  99. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_socket.py +0 -0
  100. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_sqlalchemy.py +0 -0
  101. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_sqlalchemy_polars.py +0 -0
  102. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_statsmodels.py +0 -0
  103. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_string.py +0 -0
  104. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_tempfile.py +0 -0
  105. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_text.py +0 -0
  106. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_threading.py +0 -0
  107. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_timer.py +0 -0
  108. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_traceback.py +0 -0
  109. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_typed_settings.py +0 -0
  110. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_types.py +0 -0
  111. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_typing.py +0 -0
  112. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_typing_funcs/__init__.py +0 -0
  113. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_typing_funcs/no_future.py +0 -0
  114. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_typing_funcs/with_future.py +0 -0
  115. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_tzdata.py +0 -0
  116. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_tzlocal.py +0 -0
  117. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_uuid.py +0 -0
  118. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_version.py +0 -0
  119. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_warnings.py +0 -0
  120. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_whenever.py +0 -0
  121. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_zipfile.py +0 -0
  122. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/tests/test_zoneinfo.py +0 -0
  123. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/altair.py +0 -0
  124. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/asyncio.py +0 -0
  125. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/atomicwrites.py +0 -0
  126. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/atools.py +0 -0
  127. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/cachetools.py +0 -0
  128. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/click.py +0 -0
  129. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/concurrent.py +0 -0
  130. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/contextlib.py +0 -0
  131. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/contextvars.py +0 -0
  132. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/cryptography.py +0 -0
  133. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/cvxpy.py +0 -0
  134. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/dataclasses.py +0 -0
  135. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/enum.py +0 -0
  136. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/errors.py +0 -0
  137. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/eventkit.py +0 -0
  138. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/fastapi.py +0 -0
  139. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/fpdf2.py +0 -0
  140. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/functions.py +0 -0
  141. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/functools.py +0 -0
  142. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/getpass.py +0 -0
  143. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/gzip.py +0 -0
  144. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/hashlib.py +0 -0
  145. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/http.py +0 -0
  146. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/hypothesis.py +0 -0
  147. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/importlib.py +0 -0
  148. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/inflect.py +0 -0
  149. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/ipython.py +0 -0
  150. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/iterables.py +0 -0
  151. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/json.py +0 -0
  152. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/jupyter.py +0 -0
  153. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/libcst.py +0 -0
  154. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/lightweight_charts.py +0 -0
  155. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/logging.py +0 -0
  156. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/math.py +0 -0
  157. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/memory_profiler.py +0 -0
  158. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/modules.py +0 -0
  159. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/more_itertools.py +0 -0
  160. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/numpy.py +0 -0
  161. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/operator.py +0 -0
  162. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/optuna.py +0 -0
  163. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/orjson.py +0 -0
  164. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/os.py +0 -0
  165. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/parse.py +0 -0
  166. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/pathlib.py +0 -0
  167. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/pickle.py +0 -0
  168. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/platform.py +0 -0
  169. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/polars_ols.py +0 -0
  170. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/postgres.py +0 -0
  171. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/pottery.py +0 -0
  172. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/pqdm.py +0 -0
  173. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/psutil.py +0 -0
  174. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/py.typed +0 -0
  175. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/pyinstrument.py +0 -0
  176. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/pytest.py +0 -0
  177. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/pytest_plugins/__init__.py +0 -0
  178. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
  179. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
  180. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/pytest_regressions.py +0 -0
  181. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/random.py +0 -0
  182. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/re.py +0 -0
  183. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/redis.py +0 -0
  184. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/reprlib.py +0 -0
  185. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/scipy.py +0 -0
  186. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/sentinel.py +0 -0
  187. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/shelve.py +0 -0
  188. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/slack_sdk.py +0 -0
  189. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/socket.py +0 -0
  190. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/sqlalchemy.py +0 -0
  191. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/sqlalchemy_polars.py +0 -0
  192. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/statsmodels.py +0 -0
  193. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/string.py +0 -0
  194. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/tempfile.py +0 -0
  195. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/text.py +0 -0
  196. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/threading.py +0 -0
  197. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/timer.py +0 -0
  198. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/traceback.py +0 -0
  199. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/typed_settings.py +0 -0
  200. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/types.py +0 -0
  201. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/typing.py +0 -0
  202. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/tzdata.py +0 -0
  203. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/tzlocal.py +0 -0
  204. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/uuid.py +0 -0
  205. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/version.py +0 -0
  206. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/warnings.py +0 -0
  207. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/whenever.py +0 -0
  208. {dycw_utilities-0.158.2 → dycw_utilities-0.159.0}/src/utilities/zipfile.py +0 -0
  209. {dycw_utilities-0.158.2 → dycw_utilities-0.159.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.158.2
3
+ Version: 0.159.0
4
4
  Author-email: Derek Wan <d.wan@icloud.com>
5
5
  License-File: LICENSE
6
6
  Requires-Python: >=3.12
@@ -12,7 +12,7 @@ Provides-Extra: logging
12
12
  Requires-Dist: coloredlogs<15.1,>=15.0.1; extra == 'logging'
13
13
  Provides-Extra: test
14
14
  Requires-Dist: dycw-pytest-only<2.2,>=2.1.1; extra == 'test'
15
- Requires-Dist: hypothesis<6.138,>=6.137.1; extra == 'test'
15
+ Requires-Dist: hypothesis<6.139,>=6.138.0; extra == 'test'
16
16
  Requires-Dist: pytest-asyncio<1.2,>=1.1.0; extra == 'test'
17
17
  Requires-Dist: pytest-cov<6.3,>=6.2.1; extra == 'test'
18
18
  Requires-Dist: pytest-instafail<0.6,>=0.5.0; extra == 'test'
@@ -68,7 +68,7 @@ http-test = [
68
68
  "orjson",
69
69
  ]
70
70
  hypothesis = [
71
- "hypothesis >=6.137.1, <6.138",
71
+ "hypothesis >=6.138.0, <6.139",
72
72
  ]
73
73
  hypothesis-test = [
74
74
  "libcst",
@@ -227,7 +227,7 @@ dependencies = [
227
227
  name = "dycw-utilities"
228
228
  readme = "README.md"
229
229
  requires-python = ">= 3.12"
230
- version = "0.158.2"
230
+ version = "0.159.0"
231
231
 
232
232
  [project.entry-points.pytest11]
233
233
  pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
@@ -239,7 +239,7 @@ logging = [
239
239
  ]
240
240
  test = [
241
241
  "dycw-pytest-only >=2.1.1, <2.2",
242
- "hypothesis >=6.137.1, <6.138",
242
+ "hypothesis >=6.138.0, <6.139",
243
243
  "pytest >=8.4.1, <8.5",
244
244
  "pytest-asyncio >=1.1.0, <1.2",
245
245
  "pytest-cov >=6.2.1, <6.3",
@@ -259,7 +259,7 @@ test = [
259
259
  # bump-my-version
260
260
  [tool.bumpversion]
261
261
  allow_dirty = true
262
- current_version = "0.158.2"
262
+ current_version = "0.159.0"
263
263
 
264
264
  [[tool.bumpversion.files]]
265
265
  filename = "src/utilities/__init__.py"
@@ -8,7 +8,7 @@ from enum import auto
8
8
  from itertools import chain, repeat
9
9
  from math import isfinite, nan
10
10
  from random import Random
11
- from typing import TYPE_CHECKING, Any, ClassVar, Literal, assert_never, cast
11
+ from typing import TYPE_CHECKING, Any, ClassVar, Literal, assert_never
12
12
  from uuid import UUID, uuid4
13
13
 
14
14
  import hypothesis.strategies
@@ -90,13 +90,10 @@ from utilities.polars import (
90
90
  DatetimeUSCentral,
91
91
  DatetimeUSEastern,
92
92
  DatetimeUTC,
93
- DropNullStructSeriesError,
94
93
  ExprOrSeries,
95
94
  FiniteEWMMeanError,
96
95
  InsertAfterError,
97
96
  InsertBeforeError,
98
- IsNotNullStructSeriesError,
99
- IsNullStructSeriesError,
100
97
  SetFirstRowAsColumnsError,
101
98
  TimePeriodDType,
102
99
  _check_polars_dataframe_predicates,
@@ -137,8 +134,6 @@ from utilities.polars import (
137
134
  _reconstruct_schema,
138
135
  _ReifyExprsEmptyError,
139
136
  _ReifyExprsSeriesNonUniqueError,
140
- _StructFromDataClassNotADataclassError,
141
- _StructFromDataClassTypeError,
142
137
  ac_halflife,
143
138
  acf,
144
139
  adjust_frequencies,
@@ -163,7 +158,6 @@ from utilities.polars import (
163
158
  decreasing_horizontal,
164
159
  deserialize_dataframe,
165
160
  deserialize_series,
166
- drop_null_struct_series,
167
161
  ensure_data_type,
168
162
  ensure_expr_or_series,
169
163
  ensure_expr_or_series_many,
@@ -176,9 +170,9 @@ from utilities.polars import (
176
170
  insert_after,
177
171
  insert_before,
178
172
  insert_between,
173
+ is_false,
179
174
  is_near_event,
180
- is_not_null_struct_series,
181
- is_null_struct_series,
175
+ is_true,
182
176
  join,
183
177
  join_into_periods,
184
178
  map_over_columns,
@@ -197,7 +191,10 @@ from utilities.polars import (
197
191
  serialize_series,
198
192
  set_first_row_as_columns,
199
193
  struct_dtype,
200
- struct_from_dataclass,
194
+ to_false,
195
+ to_not_false,
196
+ to_not_true,
197
+ to_true,
201
198
  touch,
202
199
  try_reify_expr,
203
200
  uniform,
@@ -1449,29 +1446,6 @@ class TestDatetimeDTypes:
1449
1446
  assert name == expected
1450
1447
 
1451
1448
 
1452
- class TestDropNullStructSeries:
1453
- def test_main(self) -> None:
1454
- series = Series(
1455
- values=[
1456
- {"a": None, "b": None},
1457
- {"a": True, "b": None},
1458
- {"a": None, "b": False},
1459
- {"a": True, "b": False},
1460
- ],
1461
- dtype=Struct({"a": Boolean, "b": Boolean}),
1462
- )
1463
- result = drop_null_struct_series(series)
1464
- expected = series[1:]
1465
- assert_series_equal(result, expected)
1466
-
1467
- def test_error(self) -> None:
1468
- series = Series(name="series", values=[1, 2, 3, None], dtype=Int64)
1469
- with raises(
1470
- DropNullStructSeriesError, match="Series must have Struct-dtype; got Int64"
1471
- ):
1472
- _ = drop_null_struct_series(series)
1473
-
1474
-
1475
1449
  class TestEnsureDataType:
1476
1450
  @given(dtype=sampled_from([Boolean, Boolean()]))
1477
1451
  def test_main(self, *, dtype: MaybeType[Boolean]) -> None:
@@ -1930,68 +1904,20 @@ class TestIsNearEvent:
1930
1904
  _ = is_near_event(after=after)
1931
1905
 
1932
1906
 
1933
- class TestIsNullAndIsNotNullStructSeries:
1934
- @given(
1935
- case=sampled_from([
1936
- (is_null_struct_series, [True, False, False, False]),
1937
- (is_not_null_struct_series, [False, True, True, True]),
1938
- ])
1907
+ class TestIsTrueAndFalse:
1908
+ series: ClassVar[Series] = Series(
1909
+ name="x", values=[True, False, None], dtype=Boolean
1939
1910
  )
1940
- def test_main(self, *, case: tuple[Callable[[Series], Series], list[bool]]) -> None:
1941
- func, exp_values = case
1942
- series = Series(
1943
- values=[
1944
- {"a": None, "b": None},
1945
- {"a": True, "b": None},
1946
- {"a": None, "b": False},
1947
- {"a": True, "b": False},
1948
- ],
1949
- dtype=Struct({"a": Boolean, "b": Boolean}),
1950
- )
1951
- result = func(series)
1952
- expected = Series(values=exp_values, dtype=Boolean)
1953
- assert_series_equal(result, expected)
1954
1911
 
1955
- @given(
1956
- case=sampled_from([
1957
- (is_null_struct_series, [False, False, False, True]),
1958
- (is_not_null_struct_series, [True, True, True, False]),
1959
- ])
1960
- )
1961
- def test_nested(
1962
- self, *, case: tuple[Callable[[Series], Series], list[bool]]
1963
- ) -> None:
1964
- func, exp_values = case
1965
- series = Series(
1966
- values=[
1967
- {"a": 1, "b": 2, "inner": {"lower": 3, "upper": 4}},
1968
- {"a": 1, "b": 2, "inner": None},
1969
- {"a": None, "b": None, "inner": {"lower": 3, "upper": 4}},
1970
- {"a": None, "b": None, "inner": None},
1971
- ],
1972
- dtype=Struct({
1973
- "a": Int64,
1974
- "b": Int64,
1975
- "inner": Struct({"lower": Int64, "upper": Int64}),
1976
- }),
1977
- )
1978
- result = func(series)
1979
- expected = Series(values=exp_values, dtype=Boolean)
1912
+ def test_true(self) -> None:
1913
+ result = is_true(self.series)
1914
+ expected = Series(name="x", values=[True, False, False], dtype=Boolean)
1980
1915
  assert_series_equal(result, expected)
1981
1916
 
1982
- @given(
1983
- case=sampled_from([
1984
- (is_null_struct_series, IsNullStructSeriesError),
1985
- (is_not_null_struct_series, IsNotNullStructSeriesError),
1986
- ])
1987
- )
1988
- def test_error(
1989
- self, *, case: tuple[Callable[[Series], Series], type[Exception]]
1990
- ) -> None:
1991
- func, error = case
1992
- series = Series(name="series", values=[1, 2, 3, None], dtype=Int64)
1993
- with raises(error, match="Series must have Struct-dtype; got Int64"):
1994
- _ = func(series)
1917
+ def test_false(self) -> None:
1918
+ result = is_false(self.series)
1919
+ expected = Series(name="x", values=[False, True, False], dtype=Boolean)
1920
+ assert_series_equal(result, expected)
1995
1921
 
1996
1922
 
1997
1923
  class TestJoin:
@@ -2574,130 +2500,92 @@ class TestStructDType:
2574
2500
  assert result == expected
2575
2501
 
2576
2502
 
2577
- class TestStructFromDataClass:
2578
- def test_simple(self) -> None:
2579
- @dataclass(kw_only=True, slots=True)
2580
- class Example:
2581
- bool_: bool
2582
- bool_maybe: bool | None = None
2583
- date: whenever.Date
2584
- date_maybe: whenever.Date | None = None
2585
- float_: float
2586
- float_maybe: float | None = None
2587
- int_: int
2588
- int_maybe: int | None = None
2589
- str_: str
2590
- str_maybe: str | None = None
2591
-
2592
- result = struct_from_dataclass(Example, globalns=globals())
2593
- expected = Struct({
2594
- "bool_": Boolean,
2595
- "bool_maybe": Boolean,
2596
- "date": pl.Date,
2597
- "date_maybe": pl.Date,
2598
- "float_": Float64,
2599
- "float_maybe": Float64,
2600
- "int_": Int64,
2601
- "int_maybe": Int64,
2602
- "str_": String,
2603
- "str_maybe": String,
2604
- })
2605
- assert result == expected
2606
-
2607
- def test_enum(self) -> None:
2608
- class Truth(enum.Enum):
2609
- true = auto()
2610
- false = auto()
2611
-
2612
- @dataclass(kw_only=True, slots=True)
2613
- class Example:
2614
- field: Truth
2615
-
2616
- result = struct_from_dataclass(Example, localns=locals())
2617
- expected = Struct({"field": String})
2618
- assert result == expected
2619
-
2620
- def test_literal(self) -> None:
2621
- LowOrHigh = Literal["low", "high"] # noqa: N806
2622
-
2623
- @dataclass(kw_only=True, slots=True)
2624
- class Example:
2625
- field: LowOrHigh # pyright: ignore[reportInvalidTypeForm]
2626
-
2627
- result = struct_from_dataclass(Example, localns=locals())
2628
- expected = Struct({"field": String})
2629
- assert result == expected
2630
-
2631
- def test_containers(self) -> None:
2632
- @dataclass(kw_only=True, slots=True)
2633
- class Example:
2634
- frozenset_: frozenset[int]
2635
- list_: list[int]
2636
- set_: set[int]
2637
-
2638
- result = struct_from_dataclass(Example, time_zone=UTC)
2639
- expected = Struct({
2640
- "frozenset_": List(Int64),
2641
- "list_": List(Int64),
2642
- "set_": List(Int64),
2643
- })
2644
- assert result == expected
2645
-
2646
- def test_list_of_struct(self) -> None:
2647
- @dataclass(kw_only=True, slots=True)
2648
- class Inner:
2649
- field: int
2650
-
2651
- @dataclass(kw_only=True, slots=True)
2652
- class Outer:
2653
- inner: list[Inner]
2654
-
2655
- result = struct_from_dataclass(Outer, localns=locals(), time_zone=UTC)
2656
- expected = Struct({"inner": List(Struct({"field": Int64}))})
2657
- assert result == expected
2658
-
2659
- def test_struct(self) -> None:
2660
- @dataclass(kw_only=True, slots=True)
2661
- class Inner:
2662
- field: int
2663
-
2664
- @dataclass(kw_only=True, slots=True)
2665
- class Outer:
2666
- inner: Inner
2667
-
2668
- result = struct_from_dataclass(Outer, localns=locals(), time_zone=UTC)
2669
- expected = Struct({"inner": Struct({"field": Int64})})
2670
- assert result == expected
2503
+ class TestToTrueAndFalse:
2504
+ series_tt: ClassVar[Series] = Series(name="x", values=[True, True], dtype=Boolean)
2505
+ series_tf: ClassVar[Series] = Series(name="x", values=[True, False], dtype=Boolean)
2506
+ series_t0: ClassVar[Series] = Series(name="x", values=[True, None], dtype=Boolean)
2507
+ series_ft: ClassVar[Series] = Series(name="x", values=[False, True], dtype=Boolean)
2508
+ series_ff: ClassVar[Series] = Series(name="x", values=[False, False], dtype=Boolean)
2509
+ series_f0: ClassVar[Series] = Series(name="x", values=[False, None], dtype=Boolean)
2510
+ series_0t: ClassVar[Series] = Series(name="x", values=[None, True], dtype=Boolean)
2511
+ series_0f: ClassVar[Series] = Series(name="x", values=[None, False], dtype=Boolean)
2512
+ series_00: ClassVar[Series] = Series(name="x", values=[None, None], dtype=Boolean)
2671
2513
 
2672
- def test_struct_of_list(self) -> None:
2673
- @dataclass(kw_only=True, slots=True)
2674
- class Inner:
2675
- field: list[int]
2676
-
2677
- @dataclass(kw_only=True, slots=True)
2678
- class Outer:
2679
- inner: Inner
2680
-
2681
- result = struct_from_dataclass(Outer, localns=locals(), time_zone=UTC)
2682
- expected = Struct({"inner": Struct({"field": List(Int64)})})
2683
- assert result == expected
2514
+ @mark.parametrize(
2515
+ ("series", "exp_values"),
2516
+ [
2517
+ param(series_tt, [False, False]),
2518
+ param(series_tf, [False, False]),
2519
+ param(series_t0, [False, False]),
2520
+ param(series_ft, [False, True]),
2521
+ param(series_ff, [False, False]),
2522
+ param(series_f0, [False, False]),
2523
+ param(series_0t, [False, True]),
2524
+ param(series_0f, [False, False]),
2525
+ param(series_00, [False, False]),
2526
+ ],
2527
+ )
2528
+ def test_to_true(self, *, series: Series, exp_values: list[bool]) -> None:
2529
+ result = to_true(series)
2530
+ exp_series = Series(name="x", values=exp_values, dtype=Boolean)
2531
+ assert_series_equal(result, exp_series)
2684
2532
 
2685
- def test_not_a_dataclass_error(self) -> None:
2686
- with raises(
2687
- _StructFromDataClassNotADataclassError,
2688
- match="Object must be a dataclass; got None",
2689
- ):
2690
- _ = struct_from_dataclass(cast("Any", None))
2533
+ @mark.parametrize(
2534
+ ("series", "exp_values"),
2535
+ [
2536
+ param(series_tt, [False, False]),
2537
+ param(series_tf, [False, True]),
2538
+ param(series_t0, [False, True]),
2539
+ param(series_ft, [False, False]),
2540
+ param(series_ff, [False, False]),
2541
+ param(series_f0, [False, False]),
2542
+ param(series_0t, [False, False]),
2543
+ param(series_0f, [False, False]),
2544
+ param(series_00, [False, False]),
2545
+ ],
2546
+ )
2547
+ def test_to_not_true(self, *, series: Series, exp_values: list[bool]) -> None:
2548
+ result = to_not_true(series)
2549
+ exp_series = Series(name="x", values=exp_values, dtype=Boolean)
2550
+ assert_series_equal(result, exp_series)
2691
2551
 
2692
- def test_missing_type_error(self) -> None:
2693
- @dataclass(kw_only=True, slots=True)
2694
- class Example:
2695
- field: None
2552
+ @mark.parametrize(
2553
+ ("series", "exp_values"),
2554
+ [
2555
+ param(series_tt, [False, False]),
2556
+ param(series_tf, [False, True]),
2557
+ param(series_t0, [False, False]),
2558
+ param(series_ft, [False, False]),
2559
+ param(series_ff, [False, False]),
2560
+ param(series_f0, [False, False]),
2561
+ param(series_0t, [False, False]),
2562
+ param(series_0f, [False, True]),
2563
+ param(series_00, [False, False]),
2564
+ ],
2565
+ )
2566
+ def test_to_false(self, *, series: Series, exp_values: list[bool]) -> None:
2567
+ result = to_false(series)
2568
+ exp_series = Series(name="x", values=exp_values, dtype=Boolean)
2569
+ assert_series_equal(result, exp_series)
2696
2570
 
2697
- with raises(
2698
- _StructFromDataClassTypeError, match="Unsupported type: <class 'NoneType'>"
2699
- ):
2700
- _ = struct_from_dataclass(Example)
2571
+ @mark.parametrize(
2572
+ ("series", "exp_values"),
2573
+ [
2574
+ param(series_tt, [False, False]),
2575
+ param(series_tf, [False, False]),
2576
+ param(series_t0, [False, False]),
2577
+ param(series_ft, [False, True]),
2578
+ param(series_ff, [False, False]),
2579
+ param(series_f0, [False, True]),
2580
+ param(series_0t, [False, False]),
2581
+ param(series_0f, [False, False]),
2582
+ param(series_00, [False, False]),
2583
+ ],
2584
+ )
2585
+ def test_to_not_false(self, *, series: Series, exp_values: list[bool]) -> None:
2586
+ result = to_not_false(series)
2587
+ exp_series = Series(name="x", values=exp_values, dtype=Boolean)
2588
+ assert_series_equal(result, exp_series)
2701
2589
 
2702
2590
 
2703
2591
  class TestTryReifyExpr:
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.158.2"
3
+ __version__ = "0.159.0"