dycw-actions 0.14.0__py3-none-any.whl → 0.15.3__py3-none-any.whl

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.
actions/__init__.py CHANGED
@@ -1,3 +1,3 @@
1
1
  from __future__ import annotations
2
2
 
3
- __version__ = "0.14.0"
3
+ __version__ = "0.15.3"
actions/cli.py CHANGED
@@ -3,6 +3,7 @@ from __future__ import annotations
3
3
  from click import group
4
4
  from utilities.click import CONTEXT_SETTINGS
5
5
 
6
+ from actions import __version__
6
7
  from actions.clean_dir.cli import clean_dir_sub_cmd
7
8
  from actions.clean_dir.constants import CLEAN_DIR_DOCSTRING, CLEAN_DIR_SUB_CMD
8
9
  from actions.git_clone_with.cli import git_clone_with_sub_cmd
@@ -70,7 +71,7 @@ from actions.tag_commit.cli import tag_commit_sub_cmd
70
71
  from actions.tag_commit.constants import TAG_COMMIT_DOCSTRING, TAG_COMMIT_SUB_CMD
71
72
 
72
73
 
73
- @group(**CONTEXT_SETTINGS)
74
+ @group(help=f"'actions' {__version__}", **CONTEXT_SETTINGS)
74
75
  def _main() -> None: ...
75
76
 
76
77
 
@@ -3,8 +3,8 @@ from __future__ import annotations
3
3
  from pathlib import Path
4
4
  from re import search
5
5
 
6
+ from utilities.constants import IS_CI
6
7
  from utilities.pathlib import GetRootError, get_root
7
- from utilities.pytest import IS_CI
8
8
 
9
9
  from actions.pre_commit.constants import PATH_PRE_COMMIT
10
10
 
@@ -741,6 +741,7 @@ def _add_envrc_uv_text(
741
741
  strip_and_dedent(f"""
742
742
  export UV_PRERELEASE='disallow'
743
743
  export UV_PYTHON='{python_version}'
744
+ export UV_RESOLUTION='highest'
744
745
  export UV_VENV_CLEAR=1
745
746
  if ! command -v uv >/dev/null 2>&1; then
746
747
  \techo_date "ERROR: 'uv' not found" && exit 1
@@ -6,7 +6,9 @@ from typing import TYPE_CHECKING
6
6
 
7
7
  from ordered_set import OrderedSet
8
8
  from pydantic import TypeAdapter
9
+ from tomlkit import string
9
10
  from utilities.functions import ensure_str, get_func_name, max_nullable
11
+ from utilities.packaging import Requirement
10
12
  from utilities.tabulate import func_param_desc
11
13
  from utilities.text import repr_str
12
14
 
@@ -25,6 +27,8 @@ from actions.pre_commit.update_requirements.settings import SETTINGS
25
27
  from actions.pre_commit.utilities import (
26
28
  get_aot,
27
29
  get_pyproject_dependencies,
30
+ get_set_array,
31
+ get_set_table,
28
32
  get_table,
29
33
  yield_pyproject_toml,
30
34
  yield_toml_doc,
@@ -35,7 +39,7 @@ if TYPE_CHECKING:
35
39
  from collections.abc import Iterator, MutableSet
36
40
  from pathlib import Path
37
41
 
38
- from utilities.packaging import Requirement
42
+ from tomlkit import TOMLDocument
39
43
  from utilities.types import PathLike, StrDict
40
44
 
41
45
  from actions.pre_commit.update_requirements.classes import Version2or3, VersionSet
@@ -87,6 +91,7 @@ def _format_path(
87
91
  get_pyproject_dependencies(doc).apply(
88
92
  partial(_format_req, versions=versions_use)
89
93
  )
94
+ _pin_cli_dependencies(doc, versions_use)
90
95
 
91
96
 
92
97
  def _get_versions(
@@ -190,4 +195,28 @@ def _format_req(requirement: Requirement, /, *, versions: VersionSet) -> Require
190
195
  return requirement
191
196
 
192
197
 
198
+ def _pin_cli_dependencies(doc: TOMLDocument, versions: VersionSet, /) -> None:
199
+ try:
200
+ project = get_table(doc, "project")
201
+ except KeyError:
202
+ return
203
+ try:
204
+ _ = get_table(project, "scripts")
205
+ except KeyError:
206
+ return
207
+ dependencies = get_set_array(project, "dependencies")
208
+ opt_dependencies = get_set_table(project, "optional-dependencies")
209
+ cli = get_set_array(opt_dependencies, "cli")
210
+ cli.clear()
211
+ for dep in dependencies:
212
+ req = Requirement(dep)
213
+ try:
214
+ version = versions[req.name]
215
+ except KeyError:
216
+ pass
217
+ else:
218
+ req = req.replace(">=", None).replace("<", None).replace("==", str(version))
219
+ cli.append(string(str(req)))
220
+
221
+
193
222
  __all__ = ["update_requirements"]
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import json
4
4
  from collections.abc import Iterator, MutableSet
5
- from contextlib import contextmanager
5
+ from contextlib import contextmanager, suppress
6
6
  from dataclasses import dataclass
7
7
  from pathlib import Path
8
8
  from typing import TYPE_CHECKING, Any, assert_never, overload
@@ -248,22 +248,29 @@ def is_partial_str(obj: Any, text: str, /) -> bool:
248
248
 
249
249
  def get_pyproject_dependencies(doc: TOMLDocument, /) -> PyProjectDependencies:
250
250
  out = PyProjectDependencies()
251
- if (project_key := "project") in doc:
252
- project = get_set_table(doc, project_key)
253
- if (dep_key := "dependencies") in project:
254
- out.dependencies = get_set_array(project, dep_key)
255
- if (opt_dep_key := "optional-dependencies") in project:
256
- opt_dependencies = get_set_table(project, opt_dep_key)
251
+ try:
252
+ project = get_table(doc, "project")
253
+ except KeyError:
254
+ pass
255
+ else:
256
+ with suppress(KeyError):
257
+ out.dependencies = get_array(project, "dependencies")
258
+ try:
259
+ opt_dependencies = get_table(project, "optional-dependencies")
260
+ except KeyError:
261
+ pass
262
+ else:
257
263
  out.opt_dependencies = {}
258
264
  for key in opt_dependencies:
259
- out.opt_dependencies[ensure_str(key)] = get_set_array(
260
- opt_dependencies, key
261
- )
262
- if (dep_grps_key := "dependency-groups") in doc:
263
- dep_grps = get_set_table(doc, dep_grps_key)
265
+ out.opt_dependencies[ensure_str(key)] = get_array(opt_dependencies, key)
266
+ try:
267
+ dep_grps = get_table(doc, "dependency-groups")
268
+ except KeyError:
269
+ pass
270
+ else:
264
271
  out.dep_groups = {}
265
272
  for key in dep_grps:
266
- out.dep_groups[ensure_str(key)] = get_set_array(dep_grps, key)
273
+ out.dep_groups[ensure_str(key)] = get_array(dep_grps, key)
267
274
  return out
268
275
 
269
276
 
@@ -3,8 +3,7 @@ from __future__ import annotations
3
3
  from pathlib import Path
4
4
 
5
5
  from typed_settings import load_settings, option, settings
6
- from utilities.getpass import USER
7
- from utilities.socket import HOSTNAME
6
+ from utilities.constants import HOSTNAME, USER
8
7
 
9
8
  from actions.utilities import LOADER
10
9
 
@@ -1,7 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from typed_settings import load_settings, option, settings
4
- from utilities.getpass import USER
4
+ from utilities.constants import USER
5
5
 
6
6
  from actions.utilities import LOADER
7
7
 
actions/utilities.py CHANGED
@@ -7,7 +7,6 @@ from typing import TYPE_CHECKING, Any, Literal, assert_never, overload
7
7
  from typed_settings import EnvLoader, Secret
8
8
  from utilities.atomicwrites import writer
9
9
  from utilities.subprocess import run
10
- from utilities.text import split_str
11
10
 
12
11
  from actions.constants import YAML_INSTANCE
13
12
  from actions.logging import LOGGER
@@ -71,14 +70,6 @@ def convert_str(x: str | None, /) -> str | None:
71
70
  assert_never(never)
72
71
 
73
72
 
74
- def copy_text(
75
- src: PathLike, dest: PathLike, /, *, modifications: MutableSet[Path] | None = None
76
- ) -> None:
77
- LOGGER.info("Copying '%s' -> '%s'...", str(src), str(dest))
78
- text = Path(src).read_text()
79
- write_text(dest, text, modifications=modifications)
80
-
81
-
82
73
  def ensure_new_line(text: str, /) -> str:
83
74
  return text.strip("\n") + "\n"
84
75
 
@@ -132,11 +123,6 @@ def logged_run(
132
123
  return run(*unwrapped, env=env, print=print, return_=return_, logger=LOGGER)
133
124
 
134
125
 
135
- def split_f_str_equals(text: str, /) -> tuple[str, str]:
136
- """Split an `f`-string with `=`."""
137
- return split_str(text, separator="=", n=2)
138
-
139
-
140
126
  def write_text(
141
127
  path: PathLike, text: str, /, *, modifications: MutableSet[Path] | None = None
142
128
  ) -> None:
@@ -162,10 +148,8 @@ __all__ = [
162
148
  "convert_list_strs",
163
149
  "convert_secret_str",
164
150
  "convert_str",
165
- "copy_text",
166
151
  "ensure_new_line",
167
152
  "logged_run",
168
- "split_f_str_equals",
169
153
  "write_text",
170
154
  "yaml_dump",
171
155
  ]
@@ -0,0 +1,45 @@
1
+ Metadata-Version: 2.3
2
+ Name: dycw-actions
3
+ Version: 0.15.3
4
+ Summary: Library of actions
5
+ Requires-Dist: attrs>=25.4.0
6
+ Requires-Dist: click>=8.3.1
7
+ Requires-Dist: coloredlogs>=15.0.1
8
+ Requires-Dist: dycw-utilities>=0.183.4
9
+ Requires-Dist: inflect>=7.5.0
10
+ Requires-Dist: libcst>=1.8.6
11
+ Requires-Dist: ordered-set>=4.1.0
12
+ Requires-Dist: packaging>=25.0
13
+ Requires-Dist: pydantic>=2.12.5
14
+ Requires-Dist: pyyaml>=6.0.3
15
+ Requires-Dist: requests>=2.32.5
16
+ Requires-Dist: rich>=14.2.0
17
+ Requires-Dist: ruamel-yaml>=0.19.1
18
+ Requires-Dist: tabulate>=0.9.0
19
+ Requires-Dist: tomlkit>=0.14.0
20
+ Requires-Dist: typed-settings>=25.3.0
21
+ Requires-Dist: xdg-base-dirs>=6.0.2
22
+ Requires-Dist: attrs==25.4.0 ; extra == 'cli'
23
+ Requires-Dist: click==8.3.1 ; extra == 'cli'
24
+ Requires-Dist: coloredlogs==15.0.1 ; extra == 'cli'
25
+ Requires-Dist: dycw-utilities==0.183.4 ; extra == 'cli'
26
+ Requires-Dist: inflect==7.5.0 ; extra == 'cli'
27
+ Requires-Dist: libcst==1.8.6 ; extra == 'cli'
28
+ Requires-Dist: ordered-set==4.1.0 ; extra == 'cli'
29
+ Requires-Dist: packaging==25.0 ; extra == 'cli'
30
+ Requires-Dist: pydantic==2.12.5 ; extra == 'cli'
31
+ Requires-Dist: pyyaml==6.0.3 ; extra == 'cli'
32
+ Requires-Dist: requests==2.32.5 ; extra == 'cli'
33
+ Requires-Dist: rich==14.2.0 ; extra == 'cli'
34
+ Requires-Dist: ruamel-yaml==0.19.1 ; extra == 'cli'
35
+ Requires-Dist: tabulate==0.9.0 ; extra == 'cli'
36
+ Requires-Dist: tomlkit==0.14.0 ; extra == 'cli'
37
+ Requires-Dist: typed-settings==25.3.0 ; extra == 'cli'
38
+ Requires-Dist: xdg-base-dirs==6.0.2 ; extra == 'cli'
39
+ Requires-Python: >=3.12
40
+ Provides-Extra: cli
41
+ Description-Content-Type: text/markdown
42
+
43
+ # `actions`
44
+
45
+ Library of actions
@@ -1,11 +1,10 @@
1
- actions/.DS_Store,sha256=uGDrt4xXBZO7fqFS_nmnY3god2NrGnetnn6AeEa3yY8,6148
2
- actions/__init__.py,sha256=zCbvuAxIVQA_nxNBgtPOMhgbVBI6IkR4mFy4PwzrJmE,59
1
+ actions/__init__.py,sha256=XbeoNsmkdaaukFZ-Hixwveh-yF1iPTSeLzRyhJB1fls,59
3
2
  actions/clean_dir/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
4
3
  actions/clean_dir/cli.py,sha256=OrFA2nEN2LyGF22mhTNEBr7KSuKgX54sGy9RyE73qUc,569
5
4
  actions/clean_dir/constants.py,sha256=aDNaYtemEv3lcMXo96Oh4pw_HASMby1GZC1D_gbjPAc,167
6
5
  actions/clean_dir/lib.py,sha256=0B8Le09FxAjAFckh69Sq2GPWVN2-asuWRYK9oSWA7sg,1523
7
6
  actions/clean_dir/settings.py,sha256=mqM0Oq-yz4dXKcUi3JmOCvDhoeBNQm_Qe70cGmhdcQE,345
8
- actions/cli.py,sha256=Hd5Cx_o83aCKAaNtupw1F0HQMUiG3-b6M_plxrjMlyE,5326
7
+ actions/cli.py,sha256=jVfhgoGiOEbQvPVnXIUoMKbT9kzranvpWZG0qVIs2fU,5391
9
8
  actions/constants.py,sha256=sBspUPK_Wi5hEx_Ro43ACdnW1YtlTC2H4qk7NaGur8w,1646
10
9
  actions/git_clone_with/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
11
10
  actions/git_clone_with/cli.py,sha256=vJY6-jxpnxc6N-Gm7s75iKxiPju0JJqbUs66YTrJFAw,1086
@@ -19,8 +18,8 @@ actions/pre_commit/conformalize_repo/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8
19
18
  actions/pre_commit/conformalize_repo/action_dicts.py,sha256=DnOaGdWhGiSgdlh9wINmt6lVKsdTIUO8O-Cvi4mFIgE,8218
20
19
  actions/pre_commit/conformalize_repo/cli.py,sha256=-Z7Pn3CPbElZNbk4UPmulQELSlKhIM7wv4WS46Yf2_k,4045
21
20
  actions/pre_commit/conformalize_repo/configs/gitignore,sha256=8YCRPwysCD8-67yFXaTg6O8TTl4xeNIh7_DVmaU5Ix0,5063
22
- actions/pre_commit/conformalize_repo/constants.py,sha256=Ct44YCQBF35qdY415xDMfTkQHAFvIcOsLvmRXxIxR1Y,1233
23
- actions/pre_commit/conformalize_repo/lib.py,sha256=_UMv3nrg0gZOjWgqZZ43U5KbLqOFZ5D-gfKKxA4YMeE,54547
21
+ actions/pre_commit/conformalize_repo/constants.py,sha256=hAidVV0nQ5SMTkWYFysNSnhBtm-wQS-__EHHDr1sjh0,1236
22
+ actions/pre_commit/conformalize_repo/lib.py,sha256=w8EXAYoNqluBBSjvIZp9Zf75WW_tO-3KGmFQB9Xb1ds,54590
24
23
  actions/pre_commit/conformalize_repo/settings.py,sha256=2x9bxDuFLZvZjYZa0kjDgBYnsfuF2XuGacW_mgOtuPg,6839
25
24
  actions/pre_commit/constants.py,sha256=GBxm8GXe7o3M_l314687ZS9JA3Tj_6OMcFJWApYMeh4,247
26
25
  actions/pre_commit/format_requirements/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
@@ -43,9 +42,9 @@ actions/pre_commit/update_requirements/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFB
43
42
  actions/pre_commit/update_requirements/classes.py,sha256=ERC70c1CxQ3rOsQaEtp6FGbK_VaJ4K0jAV5XTB5-L30,3486
44
43
  actions/pre_commit/update_requirements/cli.py,sha256=hWMtC4R1NkHh6dKCQr8MwR-Zjmsmpz2vYMGr4HgN9Q4,894
45
44
  actions/pre_commit/update_requirements/constants.py,sha256=ve44_RYed_41ckgQNPkb08u7Y1cpLpzutGSL9FdGBF8,228
46
- actions/pre_commit/update_requirements/lib.py,sha256=4wxufKFYfnb9HIE3ui6vD_Q9Ryq5_eHH_ETuY4rTMYw,6197
45
+ actions/pre_commit/update_requirements/lib.py,sha256=oRsODobG-kl6God5opQADPDC4sKByeybkG094I1Jxik,7095
47
46
  actions/pre_commit/update_requirements/settings.py,sha256=6EepqYra9JIDpBiPaQ1eup8A6S0ENRMQL3wNky6LB00,546
48
- actions/pre_commit/utilities.py,sha256=aKG1hU1aWj3qtBfYWAkwpjVv7XM332IwFsdBQXq8o7s,13829
47
+ actions/pre_commit/utilities.py,sha256=H3u4pFzaU5HqcKd4vWf3haScn5apv72-s6PGOEEt3Bo,13799
49
48
  actions/publish_package/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
50
49
  actions/publish_package/cli.py,sha256=nAPHCq67mxUb3yHepVGcoQ69qgaQahM1-cxdbHfxQg0,803
51
50
  actions/publish_package/constants.py,sha256=C68ZCVL_jVlYdLGpOK6saZccWoFy5AmC_NMBIWYdYOE,209
@@ -68,7 +67,7 @@ actions/register_gitea_runner/configs/config.yml,sha256=0kpaqAjMRDqdSxkSK8ydOk2I
68
67
  actions/register_gitea_runner/configs/entrypoint.sh,sha256=k0K9M38oj3AGHahE1a2011sPoRmYP6Lzu1hvbkjAesw,452
69
68
  actions/register_gitea_runner/constants.py,sha256=wX1f5qvhIXngBVWbIQRoIaXIdPaUByvG8HS8P0WcCGM,694
70
69
  actions/register_gitea_runner/lib.py,sha256=I8F-CVETA6Jj9Dc9gzXt0DCVjAgrO_-blMdN-3sS8ds,8664
71
- actions/register_gitea_runner/settings.py,sha256=0UQm8M3qDiBE3jiE333M4FdLjikNAzpc9gk_VlzI0s8,1149
70
+ actions/register_gitea_runner/settings.py,sha256=2i2o4GF65PbiUDiiuA7jI9UBWMxyRdB4E2NsrorzMiY,1123
72
71
  actions/run_hooks/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
73
72
  actions/run_hooks/cli.py,sha256=xKBw6iIlHpUlHl6-QWQLSL6KKVjnsihBeJ7h58Rl8P4,616
74
73
  actions/run_hooks/constants.py,sha256=JRhDk08qbzo5C-zwHdXZV5ajvNSKh4GcOcBvOIY6IGU,172
@@ -80,7 +79,7 @@ actions/setup_cronjob/configs/cron.tmpl,sha256=UD_d0LYlB6tbkXAcUTzpGDWVNgIhCR45J
80
79
  actions/setup_cronjob/configs/logrotate.tmpl,sha256=kkMuCRe4l03er6cFmRI0CXerHYmDumnMXLGKBjXLVxo,137
81
80
  actions/setup_cronjob/constants.py,sha256=CNebyWFymrXBx3X9X7XXpU9PSd5wzUN6XkUVomSBnWQ,301
82
81
  actions/setup_cronjob/lib.py,sha256=Xyezg08q_lJhlhNoD24iiwujqZOPJT4vnyVbpfo2CdQ,3260
83
- actions/setup_cronjob/settings.py,sha256=SxSe25f0sHUgq2-xdJN6rbbaSVFQE7FuEisiO_fmZNw,990
82
+ actions/setup_cronjob/settings.py,sha256=BnOuYUoJjvXKYz0BJvYlsVvrbPx0H4pCcqdtB92GFDo,992
84
83
  actions/setup_ssh_config/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
85
84
  actions/setup_ssh_config/cli.py,sha256=lVmMQ1CcSifPVMgQl-nVsFTpLyBvDaFPKYJejhT0zaY,378
86
85
  actions/setup_ssh_config/constants.py,sha256=ZWMmq2uBSKUKppD0pmaZ5JSCX2Ty5wJhTHSsS05ygiU,206
@@ -91,8 +90,8 @@ actions/tag_commit/constants.py,sha256=ceOvQpY4dgtJSd7v_jI1V00S0SjRq2ToGeZu41-DL
91
90
  actions/tag_commit/lib.py,sha256=1jwduvr_WpDXPVrNFEW-uPmrhndPzenh8wkZ_MNK68U,1792
92
91
  actions/tag_commit/settings.py,sha256=TOeKG_GODP--2lBSyGzH_M32jDIfh4vk_Ts06R3_ak4,629
93
92
  actions/types.py,sha256=RRzJal-i9J3Yah8vyxJrXiBPUCff4LoMpiPNaPTYFRE,526
94
- actions/utilities.py,sha256=BKQOfuVH0U43F6jLpy1vG6L1AwSAPcqoqyXbPbjEiFY,4295
95
- dycw_actions-0.14.0.dist-info/WHEEL,sha256=XjEbIc5-wIORjWaafhI6vBtlxDBp7S9KiujWF1EM7Ak,79
96
- dycw_actions-0.14.0.dist-info/entry_points.txt,sha256=2Uu7wAZOm0mmcsGBEsGB370HAWgVWECRFJ9rKgfC3-I,46
97
- dycw_actions-0.14.0.dist-info/METADATA,sha256=xGhlXCCwGs_n_6-UNaX7HR5WmRSC-mnVGUG8ZTD7u5c,765
98
- dycw_actions-0.14.0.dist-info/RECORD,,
93
+ actions/utilities.py,sha256=2U7aBpK3XJ_SVdXGO9bQxn2aPFOxq02nxf8Uwso6Qu0,3801
94
+ dycw_actions-0.15.3.dist-info/WHEEL,sha256=XV0cjMrO7zXhVAIyyc8aFf1VjZ33Fen4IiJk5zFlC3g,80
95
+ dycw_actions-0.15.3.dist-info/entry_points.txt,sha256=c3Vrl8JrMg1-FkLKpEiMahoefkRBrFCFXDhX7a-OBfA,43
96
+ dycw_actions-0.15.3.dist-info/METADATA,sha256=GVfrK4LD7qIn-vW-00zrN-muLSo-avf17X3jtO3g_QU,1585
97
+ dycw_actions-0.15.3.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: uv 0.9.25
2
+ Generator: uv 0.9.26
3
3
  Root-Is-Purelib: true
4
- Tag: py3-none-any
4
+ Tag: py3-none-any
@@ -0,0 +1,3 @@
1
+ [console_scripts]
2
+ cli = actions.cli:_main
3
+
actions/.DS_Store DELETED
Binary file
@@ -1,26 +0,0 @@
1
- Metadata-Version: 2.3
2
- Name: dycw-actions
3
- Version: 0.14.0
4
- Summary: Library of actions
5
- Requires-Dist: click>=8.3.1,<9
6
- Requires-Dist: coloredlogs>=15.0.1,<16
7
- Requires-Dist: dycw-utilities>=0.181.0,<1
8
- Requires-Dist: inflect>=7.5.0,<8
9
- Requires-Dist: libcst>=1.8.6,<2
10
- Requires-Dist: ordered-set>=4.1.0,<5
11
- Requires-Dist: packaging>=25.0,<26
12
- Requires-Dist: pydantic>=2.12.5,<3
13
- Requires-Dist: pyyaml>=6.0.3,<7
14
- Requires-Dist: requests>=2.32.5,<3
15
- Requires-Dist: rich>=14.2.0,<15
16
- Requires-Dist: ruamel-yaml>=0.19.1,<1
17
- Requires-Dist: tabulate>=0.9.0,<1
18
- Requires-Dist: tomlkit>=0.14.0,<1
19
- Requires-Dist: typed-settings[attrs,click]>=25.3.0,<26
20
- Requires-Dist: xdg-base-dirs>=6.0.2,<7
21
- Requires-Python: >=3.12
22
- Description-Content-Type: text/markdown
23
-
24
- # `actions`
25
-
26
- Library of actions
@@ -1,3 +0,0 @@
1
- [console_scripts]
2
- action = actions.cli:_main
3
-