dycw-actions 0.2.2__py3-none-any.whl → 0.6.4__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/action_dicts/constants.py +8 -0
- actions/action_dicts/lib.py +186 -0
- actions/clean_dir/cli.py +33 -0
- actions/clean_dir/lib.py +59 -0
- actions/clean_dir/settings.py +18 -0
- actions/cli.py +44 -6
- actions/conformalize_repo/cli.py +76 -0
- actions/conformalize_repo/configs/gitignore +244 -0
- actions/conformalize_repo/constants.py +72 -0
- actions/conformalize_repo/lib.py +1522 -0
- actions/conformalize_repo/settings.py +119 -0
- actions/constants.py +10 -0
- actions/format_requirements/__init__.py +1 -0
- actions/format_requirements/cli.py +37 -0
- actions/format_requirements/lib.py +121 -0
- actions/publish_package/__init__.py +1 -0
- actions/publish_package/cli.py +39 -0
- actions/publish_package/doc.py +6 -0
- actions/{publish → publish_package}/lib.py +17 -16
- actions/publish_package/settings.py +31 -0
- actions/random_sleep/__init__.py +1 -0
- actions/random_sleep/cli.py +35 -0
- actions/random_sleep/doc.py +6 -0
- actions/{sleep → random_sleep}/lib.py +14 -13
- actions/{sleep → random_sleep}/settings.py +4 -4
- actions/replace_sequence_strs/__init__.py +1 -0
- actions/replace_sequence_strs/cli.py +37 -0
- actions/replace_sequence_strs/lib.py +79 -0
- actions/run_hooks/__init__.py +1 -0
- actions/run_hooks/cli.py +33 -0
- actions/run_hooks/doc.py +6 -0
- actions/run_hooks/lib.py +97 -0
- actions/run_hooks/settings.py +24 -0
- actions/setup_cronjob/__init__.py +1 -0
- actions/setup_cronjob/cli.py +43 -0
- actions/setup_cronjob/configs/cron.tmpl +3 -0
- actions/setup_cronjob/configs/logrotate.tmpl +10 -0
- actions/setup_cronjob/constants.py +8 -0
- actions/setup_cronjob/lib.py +120 -0
- actions/setup_cronjob/settings.py +27 -0
- actions/tag_commit/__init__.py +1 -0
- actions/tag_commit/cli.py +39 -0
- actions/tag_commit/doc.py +6 -0
- actions/tag_commit/lib.py +63 -0
- actions/{tag → tag_commit}/settings.py +4 -4
- actions/types.py +18 -0
- actions/utilities.py +97 -10
- dycw_actions-0.6.4.dist-info/METADATA +21 -0
- dycw_actions-0.6.4.dist-info/RECORD +56 -0
- {dycw_actions-0.2.2.dist-info → dycw_actions-0.6.4.dist-info}/WHEEL +1 -1
- actions/publish/cli.py +0 -45
- actions/publish/settings.py +0 -35
- actions/settings.py +0 -19
- actions/sleep/cli.py +0 -39
- actions/tag/cli.py +0 -43
- actions/tag/lib.py +0 -60
- dycw_actions-0.2.2.dist-info/METADATA +0 -14
- dycw_actions-0.2.2.dist-info/RECORD +0 -21
- /actions/{publish → action_dicts}/__init__.py +0 -0
- /actions/{sleep → clean_dir}/__init__.py +0 -0
- /actions/{tag → conformalize_repo}/__init__.py +0 -0
- {dycw_actions-0.2.2.dist-info → dycw_actions-0.6.4.dist-info}/entry_points.txt +0 -0
actions/__init__.py
CHANGED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING, Any
|
|
4
|
+
|
|
5
|
+
import actions.publish_package.doc
|
|
6
|
+
import actions.random_sleep.doc
|
|
7
|
+
import actions.run_hooks.doc
|
|
8
|
+
import actions.tag_commit.doc
|
|
9
|
+
from actions.action_dicts.constants import GITHUB_TOKEN, PRERELEASE, RESOLUTION
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from actions.types import StrDict
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def run_action_pre_commit_dict(
|
|
16
|
+
*,
|
|
17
|
+
token: str = GITHUB_TOKEN,
|
|
18
|
+
submodules: str | None = None,
|
|
19
|
+
repos: Any | None = None,
|
|
20
|
+
hooks: Any | None = None,
|
|
21
|
+
sleep: int = 1,
|
|
22
|
+
gitea: bool = False,
|
|
23
|
+
) -> StrDict:
|
|
24
|
+
dict_: StrDict = {"token": token}
|
|
25
|
+
_add_item(dict_, "submodules", value=submodules)
|
|
26
|
+
_add_item(dict_, "repos", value=repos)
|
|
27
|
+
_add_item(dict_, "hooks", value=hooks)
|
|
28
|
+
dict_["sleep"] = sleep
|
|
29
|
+
return {
|
|
30
|
+
"if": f"{_runner(gitea=gitea)}.event_name == 'pull_request'",
|
|
31
|
+
"name": actions.run_hooks.doc.DOCSTRING,
|
|
32
|
+
"uses": "dycw/action-run-hooks@latest",
|
|
33
|
+
"with": dict_,
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def run_action_publish_dict(
|
|
38
|
+
*,
|
|
39
|
+
token: str = GITHUB_TOKEN,
|
|
40
|
+
username: str | None = None,
|
|
41
|
+
password: str | None = None,
|
|
42
|
+
publish_url: str | None = None,
|
|
43
|
+
trusted_publishing: bool = False,
|
|
44
|
+
native_tls: bool = False,
|
|
45
|
+
) -> StrDict:
|
|
46
|
+
dict_: StrDict = {"token": token}
|
|
47
|
+
_add_item(dict_, "username", value=username)
|
|
48
|
+
_add_item(dict_, "password", value=password)
|
|
49
|
+
_add_item(dict_, "publish-url", value=publish_url)
|
|
50
|
+
_add_boolean(dict_, "trusted-publishing", value=trusted_publishing)
|
|
51
|
+
_add_native_tls(dict_, native_tls=native_tls)
|
|
52
|
+
return {
|
|
53
|
+
"name": actions.publish_package.doc.DOCSTRING,
|
|
54
|
+
"uses": "dycw/action-publish-package@latest",
|
|
55
|
+
"with": dict_,
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def run_action_pyright_dict(
|
|
60
|
+
*,
|
|
61
|
+
token: str = GITHUB_TOKEN,
|
|
62
|
+
python_version: str | None = None,
|
|
63
|
+
resolution: str = RESOLUTION,
|
|
64
|
+
prerelease: str = PRERELEASE,
|
|
65
|
+
native_tls: bool = False,
|
|
66
|
+
with_requirements: str | None = None,
|
|
67
|
+
) -> StrDict:
|
|
68
|
+
dict_: StrDict = {"token": token}
|
|
69
|
+
_add_python_version(dict_, python_version=python_version)
|
|
70
|
+
dict_["resolution"] = resolution
|
|
71
|
+
dict_["prerelease"] = prerelease
|
|
72
|
+
_add_native_tls(dict_, native_tls=native_tls)
|
|
73
|
+
_add_with_requirements(dict_, with_requirements=with_requirements)
|
|
74
|
+
return {
|
|
75
|
+
"name": "Run 'pyright'",
|
|
76
|
+
"uses": "dycw/action-pyright@latest",
|
|
77
|
+
"with": dict_,
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def run_action_pytest_dict(
|
|
82
|
+
*,
|
|
83
|
+
token: str = GITHUB_TOKEN,
|
|
84
|
+
python_version: str | None = None,
|
|
85
|
+
sops_age_key: str | None = None,
|
|
86
|
+
resolution: str = RESOLUTION,
|
|
87
|
+
prerelease: str = PRERELEASE,
|
|
88
|
+
native_tls: bool = False,
|
|
89
|
+
with_requirements: str | None = None,
|
|
90
|
+
) -> StrDict:
|
|
91
|
+
dict_: StrDict = {"token": token}
|
|
92
|
+
_add_python_version(dict_, python_version=python_version)
|
|
93
|
+
_add_item(dict_, "sops-age-key", value=sops_age_key)
|
|
94
|
+
dict_["resolution"] = resolution
|
|
95
|
+
dict_["prerelease"] = prerelease
|
|
96
|
+
_add_native_tls(dict_, native_tls=native_tls)
|
|
97
|
+
_add_with_requirements(dict_, with_requirements=with_requirements)
|
|
98
|
+
return {"name": "Run 'pytest'", "uses": "dycw/action-pytest@latest", "with": dict_}
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
def run_action_random_sleep_dict(
|
|
102
|
+
*,
|
|
103
|
+
token: str = GITHUB_TOKEN,
|
|
104
|
+
min: int = 0, # noqa: A002
|
|
105
|
+
max: int = 3600, # noqa: A002
|
|
106
|
+
step: int = 1,
|
|
107
|
+
log_freq: int = 1,
|
|
108
|
+
) -> StrDict:
|
|
109
|
+
dict_: StrDict = {
|
|
110
|
+
"token": token,
|
|
111
|
+
"min": min,
|
|
112
|
+
"max": max,
|
|
113
|
+
"step": step,
|
|
114
|
+
"log-freq": log_freq,
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
"name": actions.random_sleep.doc.DOCSTRING,
|
|
118
|
+
"uses": "dycw/action-random-sleep@latest",
|
|
119
|
+
"with": dict_,
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
def run_action_ruff_dict(*, token: str = GITHUB_TOKEN) -> StrDict:
|
|
124
|
+
dict_: StrDict = {"token": token}
|
|
125
|
+
return {"name": "Run 'ruff'", "uses": "dycw/action-ruff@latest", "with": dict_}
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
def run_action_tag_dict(
|
|
129
|
+
*,
|
|
130
|
+
token: str = GITHUB_TOKEN,
|
|
131
|
+
user_name: str = "github-actions-bot",
|
|
132
|
+
user_email: str = "noreply@github.com",
|
|
133
|
+
major_minor: bool = False,
|
|
134
|
+
major: bool = False,
|
|
135
|
+
latest: bool = False,
|
|
136
|
+
) -> StrDict:
|
|
137
|
+
dict_: StrDict = {"token": token, "user-name": user_name, "user-email": user_email}
|
|
138
|
+
_add_boolean(dict_, "major-minor", value=major_minor)
|
|
139
|
+
_add_boolean(dict_, "major", value=major)
|
|
140
|
+
_add_boolean(dict_, "latest", value=latest)
|
|
141
|
+
return {
|
|
142
|
+
"name": actions.tag_commit.doc.DOCSTRING,
|
|
143
|
+
"uses": "dycw/action-tag-commit@latest",
|
|
144
|
+
"with": dict_,
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
def _add_boolean(dict_: StrDict, key: str, /, *, value: bool = False) -> None:
|
|
149
|
+
if value:
|
|
150
|
+
dict_[key] = value
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
def _add_item(dict_: StrDict, key: str, /, *, value: Any | None = None) -> None:
|
|
154
|
+
if value is not None:
|
|
155
|
+
dict_[key] = value
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
def _add_native_tls(dict_: StrDict, /, *, native_tls: bool = False) -> None:
|
|
159
|
+
_add_boolean(dict_, "native-tls", value=native_tls)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def _add_python_version(
|
|
163
|
+
dict_: StrDict, /, *, python_version: str | None = None
|
|
164
|
+
) -> None:
|
|
165
|
+
_add_item(dict_, "python-version", value=python_version)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def _add_with_requirements(
|
|
169
|
+
dict_: StrDict, /, *, with_requirements: str | None = None
|
|
170
|
+
) -> None:
|
|
171
|
+
_add_item(dict_, "with-requirements", value=with_requirements)
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def _runner(*, gitea: bool = False) -> str:
|
|
175
|
+
return "gitea" if gitea else "github"
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
__all__ = [
|
|
179
|
+
"run_action_pre_commit_dict",
|
|
180
|
+
"run_action_publish_dict",
|
|
181
|
+
"run_action_pyright_dict",
|
|
182
|
+
"run_action_pytest_dict",
|
|
183
|
+
"run_action_random_sleep_dict",
|
|
184
|
+
"run_action_ruff_dict",
|
|
185
|
+
"run_action_tag_dict",
|
|
186
|
+
]
|
actions/clean_dir/cli.py
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from rich.pretty import pretty_repr
|
|
4
|
+
from typed_settings import click_options
|
|
5
|
+
from utilities.logging import basic_config
|
|
6
|
+
from utilities.os import is_pytest
|
|
7
|
+
from utilities.text import strip_and_dedent
|
|
8
|
+
|
|
9
|
+
from actions import __version__
|
|
10
|
+
from actions.clean_dir.lib import clean_dir
|
|
11
|
+
from actions.clean_dir.settings import Settings
|
|
12
|
+
from actions.logging import LOGGER
|
|
13
|
+
from actions.utilities import LOADER
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@click_options(Settings, [LOADER], show_envvars_in_help=True)
|
|
17
|
+
def clean_dir_sub_cmd(settings: Settings, /) -> None:
|
|
18
|
+
if is_pytest():
|
|
19
|
+
return
|
|
20
|
+
basic_config(obj=LOGGER)
|
|
21
|
+
LOGGER.info(
|
|
22
|
+
strip_and_dedent("""
|
|
23
|
+
Running '%s' (version %s) with settings:
|
|
24
|
+
%s
|
|
25
|
+
"""),
|
|
26
|
+
clean_dir.__name__,
|
|
27
|
+
__version__,
|
|
28
|
+
pretty_repr(settings),
|
|
29
|
+
)
|
|
30
|
+
clean_dir(dir_=settings.dir)
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
__all__ = ["clean_dir_sub_cmd"]
|
actions/clean_dir/lib.py
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from shutil import rmtree
|
|
5
|
+
from typing import TYPE_CHECKING
|
|
6
|
+
|
|
7
|
+
from utilities.text import strip_and_dedent
|
|
8
|
+
|
|
9
|
+
from actions import __version__
|
|
10
|
+
from actions.clean_dir.settings import SETTINGS
|
|
11
|
+
from actions.logging import LOGGER
|
|
12
|
+
|
|
13
|
+
if TYPE_CHECKING:
|
|
14
|
+
from collections.abc import Iterator
|
|
15
|
+
|
|
16
|
+
from utilities.types import PathLike
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def clean_dir(*, dir_: PathLike = SETTINGS.dir) -> None:
|
|
20
|
+
LOGGER.info(
|
|
21
|
+
strip_and_dedent("""
|
|
22
|
+
Running '%s' (version %s) with settings:
|
|
23
|
+
- dir = %s
|
|
24
|
+
"""),
|
|
25
|
+
clean_dir.__name__,
|
|
26
|
+
__version__,
|
|
27
|
+
dir_,
|
|
28
|
+
)
|
|
29
|
+
dir_ = Path(dir_)
|
|
30
|
+
if not dir_.is_dir():
|
|
31
|
+
msg = f"{str(dir_)!r} is a not a directory"
|
|
32
|
+
raise NotADirectoryError(msg)
|
|
33
|
+
while True:
|
|
34
|
+
files = list(_yield_files(dir_=dir_))
|
|
35
|
+
if len(files) >= 1:
|
|
36
|
+
for f in files:
|
|
37
|
+
f.unlink(missing_ok=True)
|
|
38
|
+
dirs = list(_yield_dirs(dir_=dir_))
|
|
39
|
+
if len(dirs) >= 1:
|
|
40
|
+
for d in dirs:
|
|
41
|
+
rmtree(d, ignore_errors=True)
|
|
42
|
+
else:
|
|
43
|
+
LOGGER.info("Finished cleaning %r", str(dir_))
|
|
44
|
+
return
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _yield_dirs(*, dir_: PathLike = SETTINGS.dir) -> Iterator[Path]:
|
|
48
|
+
for path in Path(dir_).rglob("**/*"):
|
|
49
|
+
if path.is_dir() and (len(list(path.iterdir())) == 0):
|
|
50
|
+
yield path
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def _yield_files(*, dir_: PathLike = SETTINGS.dir) -> Iterator[Path]:
|
|
54
|
+
dir_ = Path(dir_)
|
|
55
|
+
yield from dir_.rglob("**/*.pyc")
|
|
56
|
+
yield from dir_.rglob("**/*.pyo")
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
__all__ = ["clean_dir"]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
from typed_settings import load_settings, option, settings
|
|
6
|
+
|
|
7
|
+
from actions.utilities import LOADER
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
@settings
|
|
11
|
+
class Settings:
|
|
12
|
+
dir: Path = option(default=Path.cwd(), help="The directory to clean")
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
SETTINGS = load_settings(Settings, [LOADER])
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
__all__ = ["SETTINGS", "Settings"]
|
actions/cli.py
CHANGED
|
@@ -3,18 +3,56 @@ from __future__ import annotations
|
|
|
3
3
|
from click import group
|
|
4
4
|
from utilities.click import CONTEXT_SETTINGS
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
import actions.publish_package.doc
|
|
7
|
+
import actions.random_sleep.doc
|
|
8
|
+
import actions.run_hooks.doc
|
|
9
|
+
import actions.tag_commit.doc
|
|
10
|
+
from actions.clean_dir.cli import clean_dir_sub_cmd
|
|
11
|
+
from actions.conformalize_repo.cli import conformalize_repo_sub_cmd
|
|
12
|
+
from actions.format_requirements.cli import format_requirements_sub_cmd
|
|
13
|
+
from actions.publish_package.cli import publish_package_sub_cmd
|
|
14
|
+
from actions.random_sleep.cli import random_sleep_sub_cmd
|
|
15
|
+
from actions.replace_sequence_strs.cli import sequence_strs_sub_cmd
|
|
16
|
+
from actions.run_hooks.cli import run_hooks_sub_cmd
|
|
17
|
+
from actions.setup_cronjob.cli import setup_cronjob_sub_cmd
|
|
18
|
+
from actions.tag_commit.cli import tag_commit_sub_cmd
|
|
9
19
|
|
|
10
20
|
|
|
11
21
|
@group(**CONTEXT_SETTINGS)
|
|
12
22
|
def _main() -> None: ...
|
|
13
23
|
|
|
14
24
|
|
|
15
|
-
_ = _main.command(name="
|
|
16
|
-
|
|
17
|
-
|
|
25
|
+
_ = _main.command(name="clean-dir", help="Clean a directory", **CONTEXT_SETTINGS)(
|
|
26
|
+
clean_dir_sub_cmd
|
|
27
|
+
)
|
|
28
|
+
_ = _main.command(
|
|
29
|
+
name="conformalize-repo", help="Conformalize a repo", **CONTEXT_SETTINGS
|
|
30
|
+
)(conformalize_repo_sub_cmd)
|
|
31
|
+
_ = _main.command(
|
|
32
|
+
name="format-requirements", help="Format a set of requirements", **CONTEXT_SETTINGS
|
|
33
|
+
)(format_requirements_sub_cmd)
|
|
34
|
+
_ = _main.command(
|
|
35
|
+
name="publish-package",
|
|
36
|
+
help=actions.publish_package.doc.DOCSTRING,
|
|
37
|
+
**CONTEXT_SETTINGS,
|
|
38
|
+
)(publish_package_sub_cmd)
|
|
39
|
+
_ = _main.command(
|
|
40
|
+
name="replace-sequence-strs",
|
|
41
|
+
help="Replace 'Sequence[str]' with 'list[str]'",
|
|
42
|
+
**CONTEXT_SETTINGS,
|
|
43
|
+
)(sequence_strs_sub_cmd)
|
|
44
|
+
_ = _main.command(
|
|
45
|
+
name="run-hooks", help=actions.run_hooks.doc.DOCSTRING, **CONTEXT_SETTINGS
|
|
46
|
+
)(run_hooks_sub_cmd)
|
|
47
|
+
_ = _main.command(
|
|
48
|
+
name="random-sleep", help=actions.random_sleep.doc.DOCSTRING, **CONTEXT_SETTINGS
|
|
49
|
+
)(random_sleep_sub_cmd)
|
|
50
|
+
_ = _main.command(name="setup-cronjob", help="Setup a cronjob", **CONTEXT_SETTINGS)(
|
|
51
|
+
setup_cronjob_sub_cmd
|
|
52
|
+
)
|
|
53
|
+
_ = _main.command(
|
|
54
|
+
name="tag-commit", help=actions.tag_commit.doc.DOCSTRING, **CONTEXT_SETTINGS
|
|
55
|
+
)(tag_commit_sub_cmd)
|
|
18
56
|
|
|
19
57
|
|
|
20
58
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from rich.pretty import pretty_repr
|
|
4
|
+
from typed_settings import click_options
|
|
5
|
+
from utilities.logging import basic_config
|
|
6
|
+
from utilities.os import is_pytest
|
|
7
|
+
from utilities.text import strip_and_dedent
|
|
8
|
+
|
|
9
|
+
from actions import __version__
|
|
10
|
+
from actions.conformalize_repo.lib import conformalize_repo
|
|
11
|
+
from actions.conformalize_repo.settings import Settings
|
|
12
|
+
from actions.logging import LOGGER
|
|
13
|
+
from actions.utilities import LOADER
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@click_options(Settings, [LOADER], show_envvars_in_help=True)
|
|
17
|
+
def conformalize_repo_sub_cmd(settings: Settings, /) -> None:
|
|
18
|
+
if is_pytest():
|
|
19
|
+
return
|
|
20
|
+
basic_config(obj=LOGGER)
|
|
21
|
+
LOGGER.info(
|
|
22
|
+
strip_and_dedent("""
|
|
23
|
+
Running '%s' (version %s) with settings:
|
|
24
|
+
%s
|
|
25
|
+
"""),
|
|
26
|
+
conformalize_repo.__name__,
|
|
27
|
+
__version__,
|
|
28
|
+
pretty_repr(settings),
|
|
29
|
+
)
|
|
30
|
+
conformalize_repo(
|
|
31
|
+
coverage=settings.coverage,
|
|
32
|
+
description=settings.description,
|
|
33
|
+
envrc=settings.envrc,
|
|
34
|
+
envrc__uv=settings.envrc__uv,
|
|
35
|
+
envrc__uv__native_tls=settings.envrc__uv__native_tls,
|
|
36
|
+
github__pull_request__pre_commit=settings.github__pull_request__pre_commit,
|
|
37
|
+
github__pull_request__pre_commit__gitea=settings.github__pull_request__pre_commit__gitea,
|
|
38
|
+
github__pull_request__pyright=settings.github__pull_request__pyright,
|
|
39
|
+
github__pull_request__pytest__macos=settings.github__pull_request__pytest__macos,
|
|
40
|
+
github__pull_request__pytest__ubuntu=settings.github__pull_request__pytest__ubuntu,
|
|
41
|
+
github__pull_request__pytest__windows=settings.github__pull_request__pytest__windows,
|
|
42
|
+
github__pull_request__ruff=settings.github__pull_request__ruff,
|
|
43
|
+
github__push__publish=settings.github__push__publish,
|
|
44
|
+
github__push__tag=settings.github__push__tag,
|
|
45
|
+
github__push__tag__major=settings.github__push__tag__major,
|
|
46
|
+
github__push__tag__major_minor=settings.github__push__tag__major_minor,
|
|
47
|
+
github__push__tag__latest=settings.github__push__tag__latest,
|
|
48
|
+
gitignore=settings.gitignore,
|
|
49
|
+
package_name=settings.package_name,
|
|
50
|
+
pre_commit__dockerfmt=settings.pre_commit__dockerfmt,
|
|
51
|
+
pre_commit__prettier=settings.pre_commit__prettier,
|
|
52
|
+
pre_commit__python=settings.pre_commit__python,
|
|
53
|
+
pre_commit__ruff=settings.pre_commit__ruff,
|
|
54
|
+
pre_commit__shell=settings.pre_commit__shell,
|
|
55
|
+
pre_commit__taplo=settings.pre_commit__taplo,
|
|
56
|
+
pre_commit__uv=settings.pre_commit__uv,
|
|
57
|
+
pre_commit__uv__script=settings.pre_commit__uv__script,
|
|
58
|
+
pyproject=settings.pyproject,
|
|
59
|
+
pyproject__project__optional_dependencies__scripts=settings.pyproject__project__optional_dependencies__scripts,
|
|
60
|
+
pyproject__tool__uv__indexes=settings.pyproject__tool__uv__indexes,
|
|
61
|
+
pyright=settings.pyright,
|
|
62
|
+
pytest=settings.pytest,
|
|
63
|
+
pytest__asyncio=settings.pytest__asyncio,
|
|
64
|
+
pytest__ignore_warnings=settings.pytest__ignore_warnings,
|
|
65
|
+
pytest__timeout=settings.pytest__timeout,
|
|
66
|
+
python_package_name=settings.python_package_name,
|
|
67
|
+
python_version=settings.python_version,
|
|
68
|
+
readme=settings.readme,
|
|
69
|
+
repo_name=settings.repo_name,
|
|
70
|
+
ruff=settings.ruff,
|
|
71
|
+
run_version_bump=settings.run_version_bump,
|
|
72
|
+
script=settings.script,
|
|
73
|
+
)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
__all__ = ["conformalize_repo_sub_cmd"]
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
#### STANDARD GITIGNORE #######################################################
|
|
2
|
+
|
|
3
|
+
# Byte-compiled / optimized / DLL files
|
|
4
|
+
__pycache__/
|
|
5
|
+
*.py[codz]
|
|
6
|
+
*$py.class
|
|
7
|
+
|
|
8
|
+
# C extensions
|
|
9
|
+
*.so
|
|
10
|
+
|
|
11
|
+
# Distribution / packaging
|
|
12
|
+
.Python
|
|
13
|
+
build/
|
|
14
|
+
develop-eggs/
|
|
15
|
+
dist/
|
|
16
|
+
downloads/
|
|
17
|
+
eggs/
|
|
18
|
+
.eggs/
|
|
19
|
+
lib/
|
|
20
|
+
lib64/
|
|
21
|
+
parts/
|
|
22
|
+
sdist/
|
|
23
|
+
var/
|
|
24
|
+
wheels/
|
|
25
|
+
share/python-wheels/
|
|
26
|
+
*.egg-info/
|
|
27
|
+
.installed.cfg
|
|
28
|
+
*.egg
|
|
29
|
+
MANIFEST
|
|
30
|
+
|
|
31
|
+
# PyInstaller
|
|
32
|
+
# Usually these files are written by a python script from a template
|
|
33
|
+
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
34
|
+
*.manifest
|
|
35
|
+
*.spec
|
|
36
|
+
|
|
37
|
+
# Installer logs
|
|
38
|
+
pip-log.txt
|
|
39
|
+
pip-delete-this-directory.txt
|
|
40
|
+
|
|
41
|
+
# Unit test / coverage reports
|
|
42
|
+
htmlcov/
|
|
43
|
+
.tox/
|
|
44
|
+
.nox/
|
|
45
|
+
.coverage
|
|
46
|
+
.coverage.*
|
|
47
|
+
.cache
|
|
48
|
+
nosetests.xml
|
|
49
|
+
coverage.xml
|
|
50
|
+
*.cover
|
|
51
|
+
*.py.cover
|
|
52
|
+
.hypothesis/
|
|
53
|
+
.pytest_cache/
|
|
54
|
+
cover/
|
|
55
|
+
|
|
56
|
+
# Translations
|
|
57
|
+
*.mo
|
|
58
|
+
*.pot
|
|
59
|
+
|
|
60
|
+
# Django stuff:
|
|
61
|
+
*.log
|
|
62
|
+
local_settings.py
|
|
63
|
+
db.sqlite3
|
|
64
|
+
db.sqlite3-journal
|
|
65
|
+
|
|
66
|
+
# Flask stuff:
|
|
67
|
+
instance/
|
|
68
|
+
.webassets-cache
|
|
69
|
+
|
|
70
|
+
# Scrapy stuff:
|
|
71
|
+
.scrapy
|
|
72
|
+
|
|
73
|
+
# Sphinx documentation
|
|
74
|
+
docs/_build/
|
|
75
|
+
|
|
76
|
+
# PyBuilder
|
|
77
|
+
.pybuilder/
|
|
78
|
+
target/
|
|
79
|
+
|
|
80
|
+
# Jupyter Notebook
|
|
81
|
+
.ipynb_checkpoints
|
|
82
|
+
|
|
83
|
+
# IPython
|
|
84
|
+
profile_default/
|
|
85
|
+
ipython_config.py
|
|
86
|
+
|
|
87
|
+
# pyenv
|
|
88
|
+
# For a library or package, you might want to ignore these files since the code is
|
|
89
|
+
# intended to run in multiple environments; otherwise, check them in:
|
|
90
|
+
# .python-version
|
|
91
|
+
|
|
92
|
+
# pipenv
|
|
93
|
+
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
94
|
+
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
95
|
+
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
96
|
+
# install all needed dependencies.
|
|
97
|
+
# Pipfile.lock
|
|
98
|
+
|
|
99
|
+
# UV
|
|
100
|
+
# Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
|
|
101
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
102
|
+
# commonly ignored for libraries.
|
|
103
|
+
# uv.lock
|
|
104
|
+
|
|
105
|
+
# poetry
|
|
106
|
+
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
|
|
107
|
+
# This is especially recommended for binary packages to ensure reproducibility, and is more
|
|
108
|
+
# commonly ignored for libraries.
|
|
109
|
+
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
|
|
110
|
+
# poetry.lock
|
|
111
|
+
# poetry.toml
|
|
112
|
+
|
|
113
|
+
# pdm
|
|
114
|
+
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
|
|
115
|
+
# pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
|
|
116
|
+
# https://pdm-project.org/en/latest/usage/project/#working-with-version-control
|
|
117
|
+
# pdm.lock
|
|
118
|
+
# pdm.toml
|
|
119
|
+
.pdm-python
|
|
120
|
+
.pdm-build/
|
|
121
|
+
|
|
122
|
+
# pixi
|
|
123
|
+
# Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
|
|
124
|
+
# pixi.lock
|
|
125
|
+
# Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
|
|
126
|
+
# in the .venv directory. It is recommended not to include this directory in version control.
|
|
127
|
+
.pixi
|
|
128
|
+
|
|
129
|
+
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
|
|
130
|
+
__pypackages__/
|
|
131
|
+
|
|
132
|
+
# Celery stuff
|
|
133
|
+
celerybeat-schedule
|
|
134
|
+
celerybeat.pid
|
|
135
|
+
|
|
136
|
+
# Redis
|
|
137
|
+
*.rdb
|
|
138
|
+
*.aof
|
|
139
|
+
*.pid
|
|
140
|
+
|
|
141
|
+
# RabbitMQ
|
|
142
|
+
mnesia/
|
|
143
|
+
rabbitmq/
|
|
144
|
+
rabbitmq-data/
|
|
145
|
+
|
|
146
|
+
# ActiveMQ
|
|
147
|
+
activemq-data/
|
|
148
|
+
|
|
149
|
+
# SageMath parsed files
|
|
150
|
+
*.sage.py
|
|
151
|
+
|
|
152
|
+
# Environments
|
|
153
|
+
.venv
|
|
154
|
+
env/
|
|
155
|
+
venv/
|
|
156
|
+
ENV/
|
|
157
|
+
env.bak/
|
|
158
|
+
venv.bak/
|
|
159
|
+
|
|
160
|
+
# Spyder project settings
|
|
161
|
+
.spyderproject
|
|
162
|
+
.spyproject
|
|
163
|
+
|
|
164
|
+
# Rope project settings
|
|
165
|
+
.ropeproject
|
|
166
|
+
|
|
167
|
+
# mkdocs documentation
|
|
168
|
+
/site
|
|
169
|
+
|
|
170
|
+
# mypy
|
|
171
|
+
.mypy_cache/
|
|
172
|
+
.dmypy.json
|
|
173
|
+
dmypy.json
|
|
174
|
+
|
|
175
|
+
# Pyre type checker
|
|
176
|
+
.pyre/
|
|
177
|
+
|
|
178
|
+
# pytype static type analyzer
|
|
179
|
+
.pytype/
|
|
180
|
+
|
|
181
|
+
# Cython debug symbols
|
|
182
|
+
cython_debug/
|
|
183
|
+
|
|
184
|
+
# PyCharm
|
|
185
|
+
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
|
|
186
|
+
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
|
|
187
|
+
# and can be added to the global gitignore or merged into this file. For a more nuclear
|
|
188
|
+
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
189
|
+
# .idea/
|
|
190
|
+
|
|
191
|
+
# Abstra
|
|
192
|
+
# Abstra is an AI-powered process automation framework.
|
|
193
|
+
# Ignore directories containing user credentials, local state, and settings.
|
|
194
|
+
# Learn more at https://abstra.io/docs
|
|
195
|
+
.abstra/
|
|
196
|
+
|
|
197
|
+
# Visual Studio Code
|
|
198
|
+
# Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
|
|
199
|
+
# that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
|
|
200
|
+
# and can be added to the global gitignore or merged into this file. However, if you prefer,
|
|
201
|
+
# you could uncomment the following to ignore the entire vscode folder
|
|
202
|
+
# .vscode/
|
|
203
|
+
|
|
204
|
+
# Ruff stuff:
|
|
205
|
+
.ruff_cache/
|
|
206
|
+
|
|
207
|
+
# PyPI configuration file
|
|
208
|
+
.pypirc
|
|
209
|
+
|
|
210
|
+
# Marimo
|
|
211
|
+
marimo/_static/
|
|
212
|
+
marimo/_lsp/
|
|
213
|
+
__marimo__/
|
|
214
|
+
|
|
215
|
+
# Streamlit
|
|
216
|
+
.streamlit/secrets.toml
|
|
217
|
+
|
|
218
|
+
#### END OF STANDARD GITIGNORE ################################################
|
|
219
|
+
|
|
220
|
+
#### CUSTOM GITIGNORE #########################################################
|
|
221
|
+
|
|
222
|
+
**/*.csv
|
|
223
|
+
**/*.db
|
|
224
|
+
**/*.gz
|
|
225
|
+
**/*.html
|
|
226
|
+
**/*.ipc
|
|
227
|
+
**/*.ipynb
|
|
228
|
+
**/*.pdf
|
|
229
|
+
**/*.pickle
|
|
230
|
+
**/*.shelf
|
|
231
|
+
**/*.sqlite
|
|
232
|
+
**/*.tar.gz
|
|
233
|
+
**/*.tar.lz
|
|
234
|
+
**/*.tmp
|
|
235
|
+
.direnv/
|
|
236
|
+
.logs/
|
|
237
|
+
htmls/
|
|
238
|
+
ipcs/
|
|
239
|
+
pdfs/
|
|
240
|
+
pickles/
|
|
241
|
+
shelves/
|
|
242
|
+
tmp/
|
|
243
|
+
|
|
244
|
+
#### END OF CUSTOM GITIGNORE ##################################################
|