dycw-utilities 0.174.11__tar.gz → 0.174.12__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 (103) hide show
  1. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/PKG-INFO +1 -1
  2. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/pyproject.toml +2 -2
  3. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/__init__.py +1 -1
  4. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/permissions.py +10 -1
  5. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/README.md +0 -0
  6. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/aeventkit.py +0 -0
  7. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/altair.py +0 -0
  8. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/asyncio.py +0 -0
  9. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/atomicwrites.py +0 -0
  10. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/atools.py +0 -0
  11. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/cachetools.py +0 -0
  12. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/click.py +0 -0
  13. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/concurrent.py +0 -0
  14. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/contextlib.py +0 -0
  15. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/contextvars.py +0 -0
  16. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/cryptography.py +0 -0
  17. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/cvxpy.py +0 -0
  18. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/dataclasses.py +0 -0
  19. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/docker.py +0 -0
  20. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/enum.py +0 -0
  21. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/errors.py +0 -0
  22. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/fastapi.py +0 -0
  23. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/fpdf2.py +0 -0
  24. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/functions.py +0 -0
  25. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/functools.py +0 -0
  26. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/getpass.py +0 -0
  27. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/git.py +0 -0
  28. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/grp.py +0 -0
  29. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/gzip.py +0 -0
  30. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/hashlib.py +0 -0
  31. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/http.py +0 -0
  32. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/hypothesis.py +0 -0
  33. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/importlib.py +0 -0
  34. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/inflect.py +0 -0
  35. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/ipython.py +0 -0
  36. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/iterables.py +0 -0
  37. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/jinja2.py +0 -0
  38. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/json.py +0 -0
  39. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/jupyter.py +0 -0
  40. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/libcst.py +0 -0
  41. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/lightweight_charts.py +0 -0
  42. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/logging.py +0 -0
  43. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/math.py +0 -0
  44. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/memory_profiler.py +0 -0
  45. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/modules.py +0 -0
  46. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/more_itertools.py +0 -0
  47. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/numpy.py +0 -0
  48. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/operator.py +0 -0
  49. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/optuna.py +0 -0
  50. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/orjson.py +0 -0
  51. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/os.py +0 -0
  52. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/parse.py +0 -0
  53. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pathlib.py +0 -0
  54. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pickle.py +0 -0
  55. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/platform.py +0 -0
  56. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/polars.py +0 -0
  57. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/polars_ols.py +0 -0
  58. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/postgres.py +0 -0
  59. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pottery.py +0 -0
  60. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pqdm.py +0 -0
  61. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/psutil.py +0 -0
  62. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pwd.py +0 -0
  63. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/py.typed +0 -0
  64. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pydantic.py +0 -0
  65. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pydantic_settings.py +0 -0
  66. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pydantic_settings_sops.py +0 -0
  67. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pyinstrument.py +0 -0
  68. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pytest.py +0 -0
  69. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pytest_plugins/__init__.py +0 -0
  70. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pytest_plugins/pytest_randomly.py +0 -0
  71. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pytest_plugins/pytest_regressions.py +0 -0
  72. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/pytest_regressions.py +0 -0
  73. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/random.py +0 -0
  74. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/re.py +0 -0
  75. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/redis.py +0 -0
  76. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/reprlib.py +0 -0
  77. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/scipy.py +0 -0
  78. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/sentinel.py +0 -0
  79. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/shelve.py +0 -0
  80. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/shutil.py +0 -0
  81. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/slack_sdk.py +0 -0
  82. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/socket.py +0 -0
  83. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/sqlalchemy.py +0 -0
  84. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/sqlalchemy_polars.py +0 -0
  85. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/statsmodels.py +0 -0
  86. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/string.py +0 -0
  87. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/subprocess.py +0 -0
  88. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/tempfile.py +0 -0
  89. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/testbook.py +0 -0
  90. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/text.py +0 -0
  91. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/threading.py +0 -0
  92. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/timer.py +0 -0
  93. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/traceback.py +0 -0
  94. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/types.py +0 -0
  95. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/typing.py +0 -0
  96. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/tzdata.py +0 -0
  97. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/tzlocal.py +0 -0
  98. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/uuid.py +0 -0
  99. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/version.py +0 -0
  100. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/warnings.py +0 -0
  101. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/whenever.py +0 -0
  102. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/zipfile.py +0 -0
  103. {dycw_utilities-0.174.11 → dycw_utilities-0.174.12}/src/utilities/zoneinfo.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dycw-utilities
3
- Version: 0.174.11
3
+ Version: 0.174.12
4
4
  Author: Derek Wan
5
5
  Author-email: Derek Wan <d.wan@icloud.com>
6
6
  Requires-Dist: atomicwrites>=1.4.1,<1.5
@@ -101,7 +101,7 @@
101
101
  name = "dycw-utilities"
102
102
  readme = "README.md"
103
103
  requires-python = ">= 3.12"
104
- version = "0.174.11"
104
+ version = "0.174.12"
105
105
 
106
106
  [project.entry-points.pytest11]
107
107
  pytest-randomly = "utilities.pytest_plugins.pytest_randomly"
@@ -135,7 +135,7 @@
135
135
  # bump-my-version
136
136
  [tool.bumpversion]
137
137
  allow_dirty = true
138
- current_version = "0.174.11"
138
+ current_version = "0.174.12"
139
139
 
140
140
  [[tool.bumpversion.files]]
141
141
  filename = "src/utilities/__init__.py"
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.174.11"
3
+ __version__ = "0.174.12"
@@ -3,7 +3,9 @@ from __future__ import annotations
3
3
  from dataclasses import dataclass
4
4
  from functools import reduce
5
5
  from operator import or_
6
+ from pathlib import Path
6
7
  from stat import (
8
+ S_IMODE,
7
9
  S_IRGRP,
8
10
  S_IROTH,
9
11
  S_IRUSR,
@@ -14,12 +16,15 @@ from stat import (
14
16
  S_IXOTH,
15
17
  S_IXUSR,
16
18
  )
17
- from typing import Literal, Self, assert_never, override
19
+ from typing import TYPE_CHECKING, Literal, Self, assert_never, override
18
20
 
19
21
  from utilities.dataclasses import replace_non_sentinel
20
22
  from utilities.re import ExtractGroupsError, extract_groups
21
23
  from utilities.sentinel import Sentinel, sentinel
22
24
 
25
+ if TYPE_CHECKING:
26
+ from utilities.types import PathLike
27
+
23
28
  type PermissionsLike = Permissions | int | str
24
29
 
25
30
 
@@ -154,6 +159,10 @@ class Permissions:
154
159
  )
155
160
  raise PermissionsFromIntError(n=n)
156
161
 
162
+ @classmethod
163
+ def from_path(cls, path: PathLike, /) -> Self:
164
+ return cls.from_int(S_IMODE(Path(path).stat().st_mode))
165
+
157
166
  @classmethod
158
167
  def from_text(cls, text: str, /) -> Self:
159
168
  try: