dycw-actions 0.11.3__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 +1 -1
- actions/cli.py +7 -1
- actions/pre_commit/conformalize_repo/cli.py +1 -1
- actions/pre_commit/conformalize_repo/constants.py +1 -1
- actions/pre_commit/conformalize_repo/lib.py +129 -109
- actions/pre_commit/conformalize_repo/settings.py +3 -3
- actions/pre_commit/constants.py +3 -3
- actions/pre_commit/touch_empty_py/lib.py +2 -2
- actions/pre_commit/touch_py_typed/lib.py +4 -3
- actions/pre_commit/update_requirements/cli.py +10 -2
- actions/pre_commit/update_requirements/lib.py +104 -15
- actions/pre_commit/update_requirements/settings.py +23 -0
- actions/pre_commit/utilities.py +141 -42
- actions/publish_package/lib.py +17 -11
- actions/random_sleep/lib.py +3 -3
- actions/re_encrypt/__init__.py +1 -0
- actions/re_encrypt/cli.py +36 -0
- actions/re_encrypt/constants.py +7 -0
- actions/re_encrypt/lib.py +115 -0
- actions/re_encrypt/settings.py +26 -0
- actions/register_gitea_runner/settings.py +1 -2
- actions/run_hooks/lib.py +13 -11
- actions/setup_cronjob/settings.py +1 -1
- actions/types.py +5 -9
- actions/utilities.py +0 -16
- dycw_actions-0.15.3.dist-info/METADATA +45 -0
- {dycw_actions-0.11.3.dist-info → dycw_actions-0.15.3.dist-info}/RECORD +29 -23
- {dycw_actions-0.11.3.dist-info → dycw_actions-0.15.3.dist-info}/WHEEL +2 -2
- dycw_actions-0.15.3.dist-info/entry_points.txt +3 -0
- dycw_actions-0.11.3.dist-info/METADATA +0 -24
- dycw_actions-0.11.3.dist-info/entry_points.txt +0 -3
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import TYPE_CHECKING
|
|
5
|
+
|
|
6
|
+
import click
|
|
7
|
+
from click import argument
|
|
8
|
+
from typed_settings import click_options
|
|
9
|
+
from utilities.logging import basic_config
|
|
10
|
+
from utilities.os import is_pytest
|
|
11
|
+
|
|
12
|
+
from actions.logging import LOGGER
|
|
13
|
+
from actions.re_encrypt.lib import re_encrypt
|
|
14
|
+
from actions.re_encrypt.settings import Settings
|
|
15
|
+
from actions.utilities import LOADER
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from utilities.types import PathLike
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@argument("path", type=click.Path(exists=True, dir_okay=False, path_type=Path))
|
|
22
|
+
@click_options(Settings, [LOADER], show_envvars_in_help=True)
|
|
23
|
+
def re_encrypt_sub_cmd(settings: Settings, /, *, path: PathLike) -> None:
|
|
24
|
+
if is_pytest():
|
|
25
|
+
return
|
|
26
|
+
basic_config(obj=LOGGER)
|
|
27
|
+
re_encrypt(
|
|
28
|
+
path,
|
|
29
|
+
key_file=settings.key_file,
|
|
30
|
+
key=settings.key,
|
|
31
|
+
new_key_file=settings.new_key_file,
|
|
32
|
+
new_key=settings.new_key,
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
__all__ = ["re_encrypt_sub_cmd"]
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from contextlib import contextmanager
|
|
4
|
+
from os import environ
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import TYPE_CHECKING, assert_never
|
|
7
|
+
|
|
8
|
+
from typed_settings import Secret
|
|
9
|
+
from utilities.atomicwrites import writer
|
|
10
|
+
from utilities.os import temp_environ
|
|
11
|
+
from utilities.subprocess import run
|
|
12
|
+
from utilities.tabulate import func_param_desc
|
|
13
|
+
from utilities.tempfile import TemporaryFile
|
|
14
|
+
from xdg_base_dirs import xdg_config_home
|
|
15
|
+
|
|
16
|
+
from actions import __version__
|
|
17
|
+
from actions.logging import LOGGER
|
|
18
|
+
from actions.re_encrypt.settings import SETTINGS
|
|
19
|
+
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
from collections.abc import Iterator
|
|
22
|
+
|
|
23
|
+
from utilities.types import PathLike
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
def re_encrypt(
|
|
27
|
+
path: PathLike,
|
|
28
|
+
/,
|
|
29
|
+
*,
|
|
30
|
+
key_file: PathLike | None = SETTINGS.key_file,
|
|
31
|
+
key: Secret[str] | None = SETTINGS.key,
|
|
32
|
+
new_key_file: PathLike | None = SETTINGS.new_key_file,
|
|
33
|
+
new_key: Secret[str] | None = SETTINGS.new_key,
|
|
34
|
+
) -> None:
|
|
35
|
+
"""Re-encrypt a JSON file."""
|
|
36
|
+
LOGGER.info(
|
|
37
|
+
func_param_desc(
|
|
38
|
+
re_encrypt,
|
|
39
|
+
__version__,
|
|
40
|
+
f"{path=}",
|
|
41
|
+
f"{key_file=}",
|
|
42
|
+
f"{key=}",
|
|
43
|
+
f"{new_key_file=}",
|
|
44
|
+
f"{new_key=}",
|
|
45
|
+
)
|
|
46
|
+
)
|
|
47
|
+
with _yield_env(key_file=key_file, key=key):
|
|
48
|
+
decrypted = run(
|
|
49
|
+
"sops",
|
|
50
|
+
"decrypt",
|
|
51
|
+
"--input-type",
|
|
52
|
+
"json",
|
|
53
|
+
"--output-type",
|
|
54
|
+
"json",
|
|
55
|
+
"--ignore-mac",
|
|
56
|
+
str(path),
|
|
57
|
+
return_=True,
|
|
58
|
+
)
|
|
59
|
+
with _yield_env(key_file=new_key_file, key=new_key):
|
|
60
|
+
identity = _get_recipient()
|
|
61
|
+
with TemporaryFile(text=decrypted) as temp:
|
|
62
|
+
encrypted = run(
|
|
63
|
+
"sops",
|
|
64
|
+
"encrypt",
|
|
65
|
+
"--age",
|
|
66
|
+
identity,
|
|
67
|
+
"--input-type",
|
|
68
|
+
"json",
|
|
69
|
+
"--output-type",
|
|
70
|
+
"json",
|
|
71
|
+
str(temp),
|
|
72
|
+
return_=True,
|
|
73
|
+
)
|
|
74
|
+
with writer(path, overwrite=True) as temp:
|
|
75
|
+
_ = temp.write_text(encrypted)
|
|
76
|
+
LOGGER.info("Finished re-encrypting '%s'", path)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@contextmanager
|
|
80
|
+
def _yield_env(
|
|
81
|
+
*,
|
|
82
|
+
key_file: PathLike | None = SETTINGS.key_file,
|
|
83
|
+
key: Secret[str] | None = SETTINGS.key,
|
|
84
|
+
) -> Iterator[None]:
|
|
85
|
+
match key_file, key:
|
|
86
|
+
case Path() | str(), _:
|
|
87
|
+
with temp_environ(SOPS_AGE_KEY_FILE=str(key_file)):
|
|
88
|
+
yield
|
|
89
|
+
case None, Secret():
|
|
90
|
+
with temp_environ(SOPS_AGE_KEY=key.get_secret_value()):
|
|
91
|
+
yield
|
|
92
|
+
case None, None:
|
|
93
|
+
path = xdg_config_home() / "sops/age/keys.txt"
|
|
94
|
+
with temp_environ(SOPS_AGE_KEY_FILE=str(path)):
|
|
95
|
+
yield
|
|
96
|
+
case never:
|
|
97
|
+
assert_never(never)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
def _get_recipient() -> str:
|
|
101
|
+
try:
|
|
102
|
+
key_file = environ["SOPS_AGE_KEY_FILE"]
|
|
103
|
+
except KeyError:
|
|
104
|
+
with TemporaryFile(text=environ["SOPS_AGE_KEY"]) as temp:
|
|
105
|
+
return _get_recipient_from_path(temp)
|
|
106
|
+
else:
|
|
107
|
+
return _get_recipient_from_path(key_file)
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def _get_recipient_from_path(path: PathLike, /) -> str:
|
|
111
|
+
recipient, *_ = run("age-keygen", "-y", str(path), return_=True).splitlines()
|
|
112
|
+
return recipient
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
__all__ = ["re_encrypt"]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# ruff: noqa: TC003
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
from typed_settings import Secret, load_settings, option, secret, settings
|
|
7
|
+
|
|
8
|
+
from actions.utilities import LOADER
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@settings
|
|
12
|
+
class Settings:
|
|
13
|
+
key_file: Path | None = option(default=None, help="The key file")
|
|
14
|
+
key: Secret[str] | None = secret(default=None, help="The age identity")
|
|
15
|
+
new_key_file: Path | None = option(
|
|
16
|
+
default=None, help="The new key file for encryption"
|
|
17
|
+
)
|
|
18
|
+
new_key: Secret[str] | None = secret(
|
|
19
|
+
default=None, help="The new age identity for encryption"
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
SETTINGS = load_settings(Settings, [LOADER])
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
__all__ = ["SETTINGS", "Settings"]
|
|
@@ -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.
|
|
7
|
-
from utilities.socket import HOSTNAME
|
|
6
|
+
from utilities.constants import HOSTNAME, USER
|
|
8
7
|
|
|
9
8
|
from actions.utilities import LOADER
|
|
10
9
|
|
actions/run_hooks/lib.py
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import time
|
|
4
3
|
from contextlib import suppress
|
|
5
|
-
from pathlib import Path
|
|
6
4
|
from re import search
|
|
7
5
|
from subprocess import CalledProcessError
|
|
8
|
-
from typing import TYPE_CHECKING
|
|
6
|
+
from typing import TYPE_CHECKING
|
|
9
7
|
|
|
10
|
-
|
|
8
|
+
import utilities.time
|
|
9
|
+
from utilities.functions import ensure_str, get_func_name
|
|
11
10
|
from utilities.tabulate import func_param_desc
|
|
12
11
|
from whenever import TimeDelta
|
|
13
12
|
from yaml import safe_load
|
|
14
13
|
|
|
15
14
|
from actions import __version__
|
|
15
|
+
from actions.constants import PRE_COMMIT_CONFIG_YAML
|
|
16
16
|
from actions.logging import LOGGER
|
|
17
|
+
from actions.pre_commit.utilities import get_list_dicts
|
|
17
18
|
from actions.run_hooks.settings import SETTINGS
|
|
18
19
|
from actions.utilities import logged_run
|
|
19
20
|
|
|
20
21
|
if TYPE_CHECKING:
|
|
21
22
|
from collections.abc import Iterator
|
|
22
23
|
|
|
24
|
+
from utilities.types import StrDict
|
|
25
|
+
|
|
23
26
|
|
|
24
27
|
def run_hooks(
|
|
25
28
|
*,
|
|
@@ -55,10 +58,10 @@ def _yield_hooks(
|
|
|
55
58
|
hooks: list[str] | None = SETTINGS.hooks,
|
|
56
59
|
hooks_exclude: list[str] | None = SETTINGS.hooks_exclude,
|
|
57
60
|
) -> Iterator[str]:
|
|
58
|
-
dict_ = safe_load(
|
|
59
|
-
repos_list =
|
|
61
|
+
dict_ = safe_load(PRE_COMMIT_CONFIG_YAML.read_text())
|
|
62
|
+
repos_list = get_list_dicts(dict_, "repos")
|
|
60
63
|
results: set[str] = set()
|
|
61
|
-
for repo in
|
|
64
|
+
for repo in repos_list:
|
|
62
65
|
url = repo["repo"]
|
|
63
66
|
if (repos is not None) and any(search(repo_i, url) for repo_i in repos):
|
|
64
67
|
results.update(_yield_repo_hooks(repo))
|
|
@@ -73,9 +76,8 @@ def _yield_hooks(
|
|
|
73
76
|
yield from sorted(results)
|
|
74
77
|
|
|
75
78
|
|
|
76
|
-
def _yield_repo_hooks(repo:
|
|
77
|
-
|
|
78
|
-
for hook in (ensure_class(r, dict) for r in hooks):
|
|
79
|
+
def _yield_repo_hooks(repo: StrDict, /) -> Iterator[str]:
|
|
80
|
+
for hook in get_list_dicts(repo, "hooks"):
|
|
79
81
|
yield ensure_str(hook["id"])
|
|
80
82
|
|
|
81
83
|
|
|
@@ -94,7 +96,7 @@ def _run_hook(hook: str, /, *, sleep: int = SETTINGS.sleep) -> bool:
|
|
|
94
96
|
"succeeded" if is_success else "failed",
|
|
95
97
|
delta,
|
|
96
98
|
)
|
|
97
|
-
time.sleep(sleep)
|
|
99
|
+
utilities.time.sleep(sleep)
|
|
98
100
|
LOGGER.info("Finished sleeping for %s", delta)
|
|
99
101
|
return is_success
|
|
100
102
|
|
actions/types.py
CHANGED
|
@@ -1,21 +1,17 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
from collections.abc import Callable
|
|
4
|
-
from typing import TYPE_CHECKING, Any
|
|
5
4
|
|
|
6
|
-
from tomlkit.
|
|
5
|
+
from tomlkit.container import Container
|
|
6
|
+
from tomlkit.items import AoT, Table
|
|
7
7
|
from typed_settings import Secret
|
|
8
8
|
from utilities.packaging import Requirement
|
|
9
9
|
from utilities.types import StrDict
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
type ArrayLike = AoT | list[str] | list[StrDict]
|
|
12
|
+
type ContainerLike = Container | Table
|
|
15
13
|
type FuncRequirement = Callable[[Requirement], Requirement]
|
|
16
|
-
type HasAppend = Array | list[Any]
|
|
17
|
-
type HasSetDefault = Container | StrDict | Table
|
|
18
14
|
type SecretLike = str | Secret[str]
|
|
19
15
|
|
|
20
16
|
|
|
21
|
-
__all__ = ["
|
|
17
|
+
__all__ = ["ArrayLike", "ContainerLike", "FuncRequirement", "SecretLike"]
|
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,10 +1,10 @@
|
|
|
1
|
-
actions/__init__.py,sha256=
|
|
1
|
+
actions/__init__.py,sha256=XbeoNsmkdaaukFZ-Hixwveh-yF1iPTSeLzRyhJB1fls,59
|
|
2
2
|
actions/clean_dir/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
3
3
|
actions/clean_dir/cli.py,sha256=OrFA2nEN2LyGF22mhTNEBr7KSuKgX54sGy9RyE73qUc,569
|
|
4
4
|
actions/clean_dir/constants.py,sha256=aDNaYtemEv3lcMXo96Oh4pw_HASMby1GZC1D_gbjPAc,167
|
|
5
5
|
actions/clean_dir/lib.py,sha256=0B8Le09FxAjAFckh69Sq2GPWVN2-asuWRYK9oSWA7sg,1523
|
|
6
6
|
actions/clean_dir/settings.py,sha256=mqM0Oq-yz4dXKcUi3JmOCvDhoeBNQm_Qe70cGmhdcQE,345
|
|
7
|
-
actions/cli.py,sha256=
|
|
7
|
+
actions/cli.py,sha256=jVfhgoGiOEbQvPVnXIUoMKbT9kzranvpWZG0qVIs2fU,5391
|
|
8
8
|
actions/constants.py,sha256=sBspUPK_Wi5hEx_Ro43ACdnW1YtlTC2H4qk7NaGur8w,1646
|
|
9
9
|
actions/git_clone_with/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
10
10
|
actions/git_clone_with/cli.py,sha256=vJY6-jxpnxc6N-Gm7s75iKxiPju0JJqbUs66YTrJFAw,1086
|
|
@@ -16,12 +16,12 @@ actions/pre_commit/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ
|
|
|
16
16
|
actions/pre_commit/click.py,sha256=BLHjkO0gIW7rgLabuWnszwXmI4yb8Li5D8gt81GR-FQ,270
|
|
17
17
|
actions/pre_commit/conformalize_repo/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
18
18
|
actions/pre_commit/conformalize_repo/action_dicts.py,sha256=DnOaGdWhGiSgdlh9wINmt6lVKsdTIUO8O-Cvi4mFIgE,8218
|
|
19
|
-
actions/pre_commit/conformalize_repo/cli.py,sha256
|
|
19
|
+
actions/pre_commit/conformalize_repo/cli.py,sha256=-Z7Pn3CPbElZNbk4UPmulQELSlKhIM7wv4WS46Yf2_k,4045
|
|
20
20
|
actions/pre_commit/conformalize_repo/configs/gitignore,sha256=8YCRPwysCD8-67yFXaTg6O8TTl4xeNIh7_DVmaU5Ix0,5063
|
|
21
|
-
actions/pre_commit/conformalize_repo/constants.py,sha256=
|
|
22
|
-
actions/pre_commit/conformalize_repo/lib.py,sha256=
|
|
23
|
-
actions/pre_commit/conformalize_repo/settings.py,sha256=
|
|
24
|
-
actions/pre_commit/constants.py,sha256=
|
|
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
|
|
23
|
+
actions/pre_commit/conformalize_repo/settings.py,sha256=2x9bxDuFLZvZjYZa0kjDgBYnsfuF2XuGacW_mgOtuPg,6839
|
|
24
|
+
actions/pre_commit/constants.py,sha256=GBxm8GXe7o3M_l314687ZS9JA3Tj_6OMcFJWApYMeh4,247
|
|
25
25
|
actions/pre_commit/format_requirements/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
26
26
|
actions/pre_commit/format_requirements/cli.py,sha256=c9UdOFDLEei5AEzrVvo6FopIEOf2EqyOliA-bOR5a2o,584
|
|
27
27
|
actions/pre_commit/format_requirements/constants.py,sha256=ly41jgwq0VVyHQqHaIXRc5ZmbWrNY_C3ET4G9gtE7rI,228
|
|
@@ -33,39 +33,45 @@ actions/pre_commit/replace_sequence_strs/lib.py,sha256=2OU5vl4tGGfJZjJVPyvdsE7pR
|
|
|
33
33
|
actions/pre_commit/touch_empty_py/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
34
34
|
actions/pre_commit/touch_empty_py/cli.py,sha256=s2S5OfAGcSLtd2aGm1ooa1k20oNK-LQ1PZWz6T30vO8,559
|
|
35
35
|
actions/pre_commit/touch_empty_py/constants.py,sha256=zSwH60zfn9RhIAbBFnXjHrm2s1nFpPUskX3CZuJpQLk,198
|
|
36
|
-
actions/pre_commit/touch_empty_py/lib.py,sha256=
|
|
36
|
+
actions/pre_commit/touch_empty_py/lib.py,sha256=0GslCRb3gPVKnpf8J0JuQmvR32T6qvzV4d4_k_-pqzw,1707
|
|
37
37
|
actions/pre_commit/touch_py_typed/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
38
38
|
actions/pre_commit/touch_py_typed/cli.py,sha256=CDJV4NuUHJlSdJ84dY0XvdwYHMdqygZ7C6x07B-iN3E,559
|
|
39
39
|
actions/pre_commit/touch_py_typed/constants.py,sha256=kLZOm_wgypp7MaXRYq-6AZqVE4OttOMKmUqt11V2zn0,191
|
|
40
|
-
actions/pre_commit/touch_py_typed/lib.py,sha256=
|
|
40
|
+
actions/pre_commit/touch_py_typed/lib.py,sha256=e3OX4McR9rxz1I4DdFBVa51L7VbwB_AlEBHYRNMvoec,2109
|
|
41
41
|
actions/pre_commit/update_requirements/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
42
42
|
actions/pre_commit/update_requirements/classes.py,sha256=ERC70c1CxQ3rOsQaEtp6FGbK_VaJ4K0jAV5XTB5-L30,3486
|
|
43
|
-
actions/pre_commit/update_requirements/cli.py,sha256=
|
|
43
|
+
actions/pre_commit/update_requirements/cli.py,sha256=hWMtC4R1NkHh6dKCQr8MwR-Zjmsmpz2vYMGr4HgN9Q4,894
|
|
44
44
|
actions/pre_commit/update_requirements/constants.py,sha256=ve44_RYed_41ckgQNPkb08u7Y1cpLpzutGSL9FdGBF8,228
|
|
45
|
-
actions/pre_commit/update_requirements/lib.py,sha256=
|
|
46
|
-
actions/pre_commit/
|
|
45
|
+
actions/pre_commit/update_requirements/lib.py,sha256=oRsODobG-kl6God5opQADPDC4sKByeybkG094I1Jxik,7095
|
|
46
|
+
actions/pre_commit/update_requirements/settings.py,sha256=6EepqYra9JIDpBiPaQ1eup8A6S0ENRMQL3wNky6LB00,546
|
|
47
|
+
actions/pre_commit/utilities.py,sha256=H3u4pFzaU5HqcKd4vWf3haScn5apv72-s6PGOEEt3Bo,13799
|
|
47
48
|
actions/publish_package/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
48
49
|
actions/publish_package/cli.py,sha256=nAPHCq67mxUb3yHepVGcoQ69qgaQahM1-cxdbHfxQg0,803
|
|
49
50
|
actions/publish_package/constants.py,sha256=C68ZCVL_jVlYdLGpOK6saZccWoFy5AmC_NMBIWYdYOE,209
|
|
50
|
-
actions/publish_package/lib.py,sha256=
|
|
51
|
+
actions/publish_package/lib.py,sha256=6W4D2bl1ohPbT0oEXIGqIGPIvYVAoXA3lNLv0SzFjuQ,1824
|
|
51
52
|
actions/publish_package/settings.py,sha256=UucS_yb-es9bDz0EPeWTIql6B1Dr4kcaEMdXpt23BNQ,935
|
|
52
53
|
actions/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
53
54
|
actions/random_sleep/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
54
55
|
actions/random_sleep/cli.py,sha256=XZkgOdr9wSItM2uH1o5l-dnwFPKI6X5XZdtXwc_K3cM,691
|
|
55
56
|
actions/random_sleep/constants.py,sha256=5GMqCD1f12uyKDVTZBbnDDn6TQa99mUYZb9p-crg5BA,190
|
|
56
|
-
actions/random_sleep/lib.py,sha256=
|
|
57
|
+
actions/random_sleep/lib.py,sha256=uDWE07SBsnbQakZiAy7-StiRiDRR7J_cp3bu48dnEE8,1660
|
|
57
58
|
actions/random_sleep/settings.py,sha256=F8gO2j2EEX8moemwhWWCPdRuOpZ_qLtqzSfWhjIy3P8,529
|
|
59
|
+
actions/re_encrypt/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
60
|
+
actions/re_encrypt/cli.py,sha256=TnhEPUfYvtzzmGfmJfcKQEHH6sS9n8J0QMT8nErNvAo,975
|
|
61
|
+
actions/re_encrypt/constants.py,sha256=Y6PNhL5MGgm1yA2viNGKHjS96zSQZDb3xe-ZPQsiZGk,177
|
|
62
|
+
actions/re_encrypt/lib.py,sha256=6Kg6CGTYWIhVSNBqyDuflIhRXDcojP35bUnOmT6Gv8U,3176
|
|
63
|
+
actions/re_encrypt/settings.py,sha256=HUliK-TN3Stzgkin7lBjMa9k46PJS9rIxgz2BVK7WeM,673
|
|
58
64
|
actions/register_gitea_runner/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
59
65
|
actions/register_gitea_runner/cli.py,sha256=70RUyzKCZHxyDRMFwCAwDC0LDsUZxBi2T6ctzbFlpc8,1129
|
|
60
66
|
actions/register_gitea_runner/configs/config.yml,sha256=0kpaqAjMRDqdSxkSK8ydOk2IsrlkB4cUkYmbkHAurrg,5683
|
|
61
67
|
actions/register_gitea_runner/configs/entrypoint.sh,sha256=k0K9M38oj3AGHahE1a2011sPoRmYP6Lzu1hvbkjAesw,452
|
|
62
68
|
actions/register_gitea_runner/constants.py,sha256=wX1f5qvhIXngBVWbIQRoIaXIdPaUByvG8HS8P0WcCGM,694
|
|
63
69
|
actions/register_gitea_runner/lib.py,sha256=I8F-CVETA6Jj9Dc9gzXt0DCVjAgrO_-blMdN-3sS8ds,8664
|
|
64
|
-
actions/register_gitea_runner/settings.py,sha256=
|
|
70
|
+
actions/register_gitea_runner/settings.py,sha256=2i2o4GF65PbiUDiiuA7jI9UBWMxyRdB4E2NsrorzMiY,1123
|
|
65
71
|
actions/run_hooks/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
66
72
|
actions/run_hooks/cli.py,sha256=xKBw6iIlHpUlHl6-QWQLSL6KKVjnsihBeJ7h58Rl8P4,616
|
|
67
73
|
actions/run_hooks/constants.py,sha256=JRhDk08qbzo5C-zwHdXZV5ajvNSKh4GcOcBvOIY6IGU,172
|
|
68
|
-
actions/run_hooks/lib.py,sha256=
|
|
74
|
+
actions/run_hooks/lib.py,sha256=JDZnnq3c5Ui4xTkHRayJDUr9fySMYKsDm3zy0XrQMNs,3202
|
|
69
75
|
actions/run_hooks/settings.py,sha256=Cj6QVK6JspzOp6-1CaOENlXbg25kvgPXG4FKWgIiDgY,740
|
|
70
76
|
actions/setup_cronjob/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
71
77
|
actions/setup_cronjob/cli.py,sha256=l6t2WjCUprACV0rY8kHvpHLt3LgMI4q2XY4AEOiutkk,891
|
|
@@ -73,7 +79,7 @@ actions/setup_cronjob/configs/cron.tmpl,sha256=UD_d0LYlB6tbkXAcUTzpGDWVNgIhCR45J
|
|
|
73
79
|
actions/setup_cronjob/configs/logrotate.tmpl,sha256=kkMuCRe4l03er6cFmRI0CXerHYmDumnMXLGKBjXLVxo,137
|
|
74
80
|
actions/setup_cronjob/constants.py,sha256=CNebyWFymrXBx3X9X7XXpU9PSd5wzUN6XkUVomSBnWQ,301
|
|
75
81
|
actions/setup_cronjob/lib.py,sha256=Xyezg08q_lJhlhNoD24iiwujqZOPJT4vnyVbpfo2CdQ,3260
|
|
76
|
-
actions/setup_cronjob/settings.py,sha256=
|
|
82
|
+
actions/setup_cronjob/settings.py,sha256=BnOuYUoJjvXKYz0BJvYlsVvrbPx0H4pCcqdtB92GFDo,992
|
|
77
83
|
actions/setup_ssh_config/__init__.py,sha256=U4S_2y3zgLZVfMenHRaJFBW8yqh2mUBuI291LGQVOJ8,35
|
|
78
84
|
actions/setup_ssh_config/cli.py,sha256=lVmMQ1CcSifPVMgQl-nVsFTpLyBvDaFPKYJejhT0zaY,378
|
|
79
85
|
actions/setup_ssh_config/constants.py,sha256=ZWMmq2uBSKUKppD0pmaZ5JSCX2Ty5wJhTHSsS05ygiU,206
|
|
@@ -83,9 +89,9 @@ actions/tag_commit/cli.py,sha256=1E6cM0XKTCt_Ukb7pxqOojHpJjoa63dVBO6DXoESe9Q,745
|
|
|
83
89
|
actions/tag_commit/constants.py,sha256=ceOvQpY4dgtJSd7v_jI1V00S0SjRq2ToGeZu41-DL7M,176
|
|
84
90
|
actions/tag_commit/lib.py,sha256=1jwduvr_WpDXPVrNFEW-uPmrhndPzenh8wkZ_MNK68U,1792
|
|
85
91
|
actions/tag_commit/settings.py,sha256=TOeKG_GODP--2lBSyGzH_M32jDIfh4vk_Ts06R3_ak4,629
|
|
86
|
-
actions/types.py,sha256=
|
|
87
|
-
actions/utilities.py,sha256=
|
|
88
|
-
dycw_actions-0.
|
|
89
|
-
dycw_actions-0.
|
|
90
|
-
dycw_actions-0.
|
|
91
|
-
dycw_actions-0.
|
|
92
|
+
actions/types.py,sha256=RRzJal-i9J3Yah8vyxJrXiBPUCff4LoMpiPNaPTYFRE,526
|
|
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,24 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.3
|
|
2
|
-
Name: dycw-actions
|
|
3
|
-
Version: 0.11.3
|
|
4
|
-
Summary: Library of actions
|
|
5
|
-
Requires-Dist: click>=8.3.1,<9
|
|
6
|
-
Requires-Dist: dycw-utilities>=0.179.3,<1
|
|
7
|
-
Requires-Dist: inflect>=7.5.0,<8
|
|
8
|
-
Requires-Dist: libcst>=1.8.6,<2
|
|
9
|
-
Requires-Dist: packaging>=25.0,<26
|
|
10
|
-
Requires-Dist: pydantic>=2.12.5,<3
|
|
11
|
-
Requires-Dist: pyyaml>=6.0.3,<7
|
|
12
|
-
Requires-Dist: requests>=2.32.5,<3
|
|
13
|
-
Requires-Dist: rich>=14.2.0,<15
|
|
14
|
-
Requires-Dist: ruamel-yaml>=0.19.1,<1
|
|
15
|
-
Requires-Dist: tabulate>=0.9.0,<1
|
|
16
|
-
Requires-Dist: tomlkit>=0.14.0,<1
|
|
17
|
-
Requires-Dist: typed-settings[attrs,click]>=25.3.0,<26
|
|
18
|
-
Requires-Dist: xdg-base-dirs>=6.0.2,<7
|
|
19
|
-
Requires-Python: >=3.12
|
|
20
|
-
Description-Content-Type: text/markdown
|
|
21
|
-
|
|
22
|
-
# `actions`
|
|
23
|
-
|
|
24
|
-
Library of actions
|