duty 1.7.1__py3-none-any.whl → 1.7.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.
- duty/_internal/tools/_ruff.py +2 -1
- duty/_internal/tools/_ty.py +4 -3
- duty-1.7.3.dist-info/METADATA +140 -0
- {duty-1.7.1.dist-info → duty-1.7.3.dist-info}/RECORD +7 -7
- duty-1.7.1.dist-info/METADATA +0 -87
- {duty-1.7.1.dist-info → duty-1.7.3.dist-info}/WHEEL +0 -0
- {duty-1.7.1.dist-info → duty-1.7.3.dist-info}/entry_points.txt +0 -0
- {duty-1.7.1.dist-info → duty-1.7.3.dist-info}/licenses/LICENSE +0 -0
duty/_internal/tools/_ruff.py
CHANGED
duty/_internal/tools/_ty.py
CHANGED
|
@@ -54,7 +54,7 @@ class ty(Tool): # noqa: N801
|
|
|
54
54
|
force_exclude: bool | None = None,
|
|
55
55
|
exclude: list[str] | None = None,
|
|
56
56
|
no_progress: bool | None = None,
|
|
57
|
-
color: str | None = None,
|
|
57
|
+
color: str | bool | None = None,
|
|
58
58
|
) -> ty:
|
|
59
59
|
"""Run ty on the given files or directories.
|
|
60
60
|
|
|
@@ -82,7 +82,7 @@ class ty(Tool): # noqa: N801
|
|
|
82
82
|
force_exclude: Enforce exclusions, even for paths passed to ty directly on the command-line.
|
|
83
83
|
exclude: Glob patterns for files to exclude from type checking.
|
|
84
84
|
no_progress: Hide all progress outputs.
|
|
85
|
-
color: Control when colored output is used (possible values: auto, always, never).
|
|
85
|
+
color: Control when colored output is used (possible values: auto, always/true, never/false).
|
|
86
86
|
"""
|
|
87
87
|
cli_args = ["check", *paths]
|
|
88
88
|
|
|
@@ -188,7 +188,8 @@ class ty(Tool): # noqa: N801
|
|
|
188
188
|
"""
|
|
189
189
|
process = subprocess.run( # noqa: S603
|
|
190
190
|
[_find_ty(), *self.cli_args],
|
|
191
|
-
|
|
191
|
+
stdout=subprocess.PIPE,
|
|
192
|
+
stderr=subprocess.STDOUT,
|
|
192
193
|
text=True,
|
|
193
194
|
check=False,
|
|
194
195
|
)
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: duty
|
|
3
|
+
Version: 1.7.3
|
|
4
|
+
Summary: A simple task runner.
|
|
5
|
+
Keywords: task-runner,task,runner,cross-platform
|
|
6
|
+
Author-Email: =?utf-8?q?Timoth=C3=A9e_Mazzucotelli?= <dev@pawamoy.fr>
|
|
7
|
+
License-Expression: ISC
|
|
8
|
+
License-File: LICENSE
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Programming Language :: Python
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
+
Classifier: Topic :: Documentation
|
|
20
|
+
Classifier: Topic :: Software Development
|
|
21
|
+
Classifier: Topic :: Utilities
|
|
22
|
+
Classifier: Typing :: Typed
|
|
23
|
+
Project-URL: Homepage, https://pawamoy.github.io/duty
|
|
24
|
+
Project-URL: Documentation, https://pawamoy.github.io/duty
|
|
25
|
+
Project-URL: Changelog, https://pawamoy.github.io/duty/changelog
|
|
26
|
+
Project-URL: Repository, https://github.com/pawamoy/duty
|
|
27
|
+
Project-URL: Issues, https://github.com/pawamoy/duty/issues
|
|
28
|
+
Project-URL: Discussions, https://github.com/pawamoy/duty/discussions
|
|
29
|
+
Project-URL: Gitter, https://gitter.im/duty/community
|
|
30
|
+
Project-URL: Funding, https://github.com/sponsors/pawamoy
|
|
31
|
+
Requires-Python: >=3.10
|
|
32
|
+
Requires-Dist: failprint>=1.0.5
|
|
33
|
+
Requires-Dist: typing-extensions>=4.0; python_version < "3.11"
|
|
34
|
+
Description-Content-Type: text/markdown
|
|
35
|
+
|
|
36
|
+
# duty
|
|
37
|
+
|
|
38
|
+
[](https://github.com/pawamoy/duty/actions?query=workflow%3Aci)
|
|
39
|
+
[](https://pawamoy.github.io/duty/)
|
|
40
|
+
[](https://pypi.org/project/duty/)
|
|
41
|
+
[](https://app.gitter.im/#/room/#duty:gitter.im)
|
|
42
|
+
|
|
43
|
+
A simple task runner.
|
|
44
|
+
|
|
45
|
+
Inspired by [Invoke](https://github.com/pyinvoke/invoke).
|
|
46
|
+
|
|
47
|
+

|
|
48
|
+
|
|
49
|
+
## Installation
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
pip install duty
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
With [`uv`](https://docs.astral.sh/uv/):
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
uv tool install duty
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Quick start
|
|
62
|
+
|
|
63
|
+
Create a `duties.py` file at the root of your repository.
|
|
64
|
+
|
|
65
|
+
```python
|
|
66
|
+
from duty import duty
|
|
67
|
+
|
|
68
|
+
@duty
|
|
69
|
+
def docs(ctx):
|
|
70
|
+
ctx.run("mkdocs build", title="Building documentation")
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
You can now use the command line tool to run it:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
duty docs
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
See the [Usage](https://pawamoy.github.io/duty/usage/)
|
|
80
|
+
section in the documentation for more examples.
|
|
81
|
+
|
|
82
|
+
Also see ["Why choosing duty over..."](https://pawamoy.github.io/duty/#why-duty-over).
|
|
83
|
+
|
|
84
|
+
## Sponsors
|
|
85
|
+
|
|
86
|
+
<!-- sponsors-start -->
|
|
87
|
+
|
|
88
|
+
<div id="premium-sponsors" style="text-align: center;">
|
|
89
|
+
|
|
90
|
+
<div id="silver-sponsors"><b>Silver sponsors</b><p>
|
|
91
|
+
<a href="https://fastapi.tiangolo.com/"><img alt="FastAPI" src="https://raw.githubusercontent.com/tiangolo/fastapi/master/docs/en/docs/img/logo-margin/logo-teal.png" style="height: 200px; "></a><br>
|
|
92
|
+
<a href="https://docs.pydantic.dev/latest/"><img alt="Pydantic" src="https://pydantic.dev/assets/for-external/pydantic_logfire_logo_endorsed_lithium_rgb.svg" style="height: 180px; "></a><br>
|
|
93
|
+
</p></div>
|
|
94
|
+
|
|
95
|
+
<div id="bronze-sponsors"><b>Bronze sponsors</b><p>
|
|
96
|
+
<a href="https://www.nixtla.io/"><picture><source media="(prefers-color-scheme: light)" srcset="https://www.nixtla.io/img/logo/full-black.svg"><source media="(prefers-color-scheme: dark)" srcset="https://www.nixtla.io/img/logo/full-white.svg"><img alt="Nixtla" src="https://www.nixtla.io/img/logo/full-black.svg" style="height: 60px; "></picture></a><br>
|
|
97
|
+
</p></div>
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
<div id="sponsors"><p>
|
|
103
|
+
<a href="https://github.com/ofek"><img alt="ofek" src="https://avatars.githubusercontent.com/u/9677399?u=386c330f212ce467ce7119d9615c75d0e9b9f1ce&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
104
|
+
<a href="https://github.com/samuelcolvin"><img alt="samuelcolvin" src="https://avatars.githubusercontent.com/u/4039449?u=42eb3b833047c8c4b4f647a031eaef148c16d93f&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
105
|
+
<a href="https://github.com/tlambert03"><img alt="tlambert03" src="https://avatars.githubusercontent.com/u/1609449?u=922abf0524b47739b37095e553c99488814b05db&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
106
|
+
<a href="https://github.com/ssbarnea"><img alt="ssbarnea" src="https://avatars.githubusercontent.com/u/102495?u=c7bd9ddf127785286fc939dd18cb02db0a453bce&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
107
|
+
<a href="https://github.com/femtomc"><img alt="femtomc" src="https://avatars.githubusercontent.com/u/34410036?u=f13a71daf2a9f0d2da189beaa94250daa629e2d8&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
108
|
+
<a href="https://github.com/cmarqu"><img alt="cmarqu" src="https://avatars.githubusercontent.com/u/360986?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
109
|
+
<a href="https://github.com/kolenaIO"><img alt="kolenaIO" src="https://avatars.githubusercontent.com/u/77010818?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
110
|
+
<a href="https://github.com/ramnes"><img alt="ramnes" src="https://avatars.githubusercontent.com/u/835072?u=3fca03c3ba0051e2eb652b1def2188a94d1e1dc2&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
111
|
+
<a href="https://github.com/machow"><img alt="machow" src="https://avatars.githubusercontent.com/u/2574498?u=c41e3d2f758a05102d8075e38d67b9c17d4189d7&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
112
|
+
<a href="https://github.com/BenHammersley"><img alt="BenHammersley" src="https://avatars.githubusercontent.com/u/99436?u=4499a7b507541045222ee28ae122dbe3c8d08ab5&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
113
|
+
<a href="https://github.com/trevorWieland"><img alt="trevorWieland" src="https://avatars.githubusercontent.com/u/28811461?u=74cc0e3756c1d4e3d66b5c396e1d131ea8a10472&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
114
|
+
<a href="https://github.com/MarcoGorelli"><img alt="MarcoGorelli" src="https://avatars.githubusercontent.com/u/33491632?u=7de3a749cac76a60baca9777baf71d043a4f884d&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
115
|
+
<a href="https://github.com/analog-cbarber"><img alt="analog-cbarber" src="https://avatars.githubusercontent.com/u/7408243?u=642fc2bdcc9904089c62fe5aec4e03ace32da67d&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
116
|
+
<a href="https://github.com/OdinManiac"><img alt="OdinManiac" src="https://avatars.githubusercontent.com/u/22727172?u=36ab20970f7f52ae8e7eb67b7fcf491fee01ac22&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
117
|
+
<a href="https://github.com/rstudio-sponsorship"><img alt="rstudio-sponsorship" src="https://avatars.githubusercontent.com/u/58949051?u=0c471515dd18111be30dfb7669ed5e778970959b&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
118
|
+
<a href="https://github.com/schlich"><img alt="schlich" src="https://avatars.githubusercontent.com/u/21191435?u=6f1240adb68f21614d809ae52d66509f46b1e877&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
119
|
+
<a href="https://github.com/butterlyn"><img alt="butterlyn" src="https://avatars.githubusercontent.com/u/53323535?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
120
|
+
<a href="https://github.com/livingbio"><img alt="livingbio" src="https://avatars.githubusercontent.com/u/10329983?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
121
|
+
<a href="https://github.com/NemetschekAllplan"><img alt="NemetschekAllplan" src="https://avatars.githubusercontent.com/u/912034?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
122
|
+
<a href="https://github.com/EricJayHartman"><img alt="EricJayHartman" src="https://avatars.githubusercontent.com/u/9259499?u=7e58cc7ec0cd3e85b27aec33656aa0f6612706dd&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
123
|
+
<a href="https://github.com/15r10nk"><img alt="15r10nk" src="https://avatars.githubusercontent.com/u/44680962?u=f04826446ff165742efa81e314bd03bf1724d50e&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
124
|
+
<a href="https://github.com/activeloopai"><img alt="activeloopai" src="https://avatars.githubusercontent.com/u/34816118?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
125
|
+
<a href="https://github.com/roboflow"><img alt="roboflow" src="https://avatars.githubusercontent.com/u/53104118?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
126
|
+
<a href="https://github.com/cmclaughlin"><img alt="cmclaughlin" src="https://avatars.githubusercontent.com/u/1061109?u=ddf6eec0edd2d11c980f8c3aa96e3d044d4e0468&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
127
|
+
<a href="https://github.com/blaisep"><img alt="blaisep" src="https://avatars.githubusercontent.com/u/254456?u=97d584b7c0a6faf583aa59975df4f993f671d121&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
128
|
+
<a href="https://github.com/RapidataAI"><img alt="RapidataAI" src="https://avatars.githubusercontent.com/u/104209891?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
129
|
+
<a href="https://github.com/rodolphebarbanneau"><img alt="rodolphebarbanneau" src="https://avatars.githubusercontent.com/u/46493454?u=6c405452a40c231cdf0b68e97544e07ee956a733&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
130
|
+
<a href="https://github.com/theSymbolSyndicate"><img alt="theSymbolSyndicate" src="https://avatars.githubusercontent.com/u/111542255?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
131
|
+
<a href="https://github.com/blakeNaccarato"><img alt="blakeNaccarato" src="https://avatars.githubusercontent.com/u/20692450?u=bb919218be30cfa994514f4cf39bb2f7cf952df4&v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
132
|
+
<a href="https://github.com/ChargeStorm"><img alt="ChargeStorm" src="https://avatars.githubusercontent.com/u/26000165?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
133
|
+
<a href="https://github.com/Alphadelta14"><img alt="Alphadelta14" src="https://avatars.githubusercontent.com/u/480845?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
134
|
+
<a href="https://github.com/Cusp-AI"><img alt="Cusp-AI" src="https://avatars.githubusercontent.com/u/178170649?v=4" style="height: 32px; border-radius: 100%;"></a>
|
|
135
|
+
</p></div>
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
*And 7 more private sponsor(s).*
|
|
139
|
+
|
|
140
|
+
<!-- sponsors-end -->
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
duty-1.7.
|
|
2
|
-
duty-1.7.
|
|
3
|
-
duty-1.7.
|
|
4
|
-
duty-1.7.
|
|
1
|
+
duty-1.7.3.dist-info/METADATA,sha256=xvXIBGBiOh21XxqDrMmv371Hmp7NMC859d8805pUYQ0,10010
|
|
2
|
+
duty-1.7.3.dist-info/WHEEL,sha256=Wb0ASbVj8JvWHpOiIpPi7ucfIgJeCi__PzivviEAQFc,90
|
|
3
|
+
duty-1.7.3.dist-info/entry_points.txt,sha256=aCE5QWIgzL6DnOQTeLmwnOqbV70ERZQ71hFYXAiMDwU,51
|
|
4
|
+
duty-1.7.3.dist-info/licenses/LICENSE,sha256=nQxdYSduhkgEpOTmg4yyIMmFPzcr2qrlUl8Tf9QZPug,754
|
|
5
5
|
duty/__init__.py,sha256=XYIKFqVvQCBDPNCtsCwPpN_mEnKRas5_103x9tdx3Vg,1205
|
|
6
6
|
duty/__main__.py,sha256=uzZGmlxuxHwn-rBp8axUwB57GcnmPGcFmDVHArwrrdI,343
|
|
7
7
|
duty/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -45,11 +45,11 @@ duty/_internal/tools/_isort.py,sha256=cXKqQj-ReYm0pfH41P6l3tdObdtDfkAUcjOUrRAXQk
|
|
|
45
45
|
duty/_internal/tools/_mkdocs.py,sha256=5-6dJi9S59fDAirNN3RKMpo-Er-fNDp8eT8tdFXENyE,9136
|
|
46
46
|
duty/_internal/tools/_mypy.py,sha256=xvAmy2JTo2jXd_Z1KGpQHg7SaZa6d5lE6Rsz35ksMI4,21592
|
|
47
47
|
duty/_internal/tools/_pytest.py,sha256=FHoCXDZ6fZoWVD5yI1-IHvtXbVebxI4UarKqIQHXUb8,20160
|
|
48
|
-
duty/_internal/tools/_ruff.py,sha256=
|
|
48
|
+
duty/_internal/tools/_ruff.py,sha256=AWYNUqo7Yf6wImEZq5EizoJML9_34b1FbrULUXqRQQ0,15443
|
|
49
49
|
duty/_internal/tools/_safety.py,sha256=MGFZ3xJ2JqlHQTEfnRaprQl1_Pi6iKCvSzbUC6zlIAY,3418
|
|
50
50
|
duty/_internal/tools/_ssort.py,sha256=s8kxAazD0pbbMsvXK_6xmJUVF1tlXCQuCjmL2zCxawA,1199
|
|
51
51
|
duty/_internal/tools/_twine.py,sha256=GF5FJbyo5-4sx1rGuz5xd9Vy_uIiTVWA_kF3rBpoICY,10519
|
|
52
|
-
duty/_internal/tools/_ty.py,sha256=
|
|
52
|
+
duty/_internal/tools/_ty.py,sha256=RVUzCI6m54fuseFIFIA08ArhUsMQz8K1LJYYEUqQRSg,6837
|
|
53
53
|
duty/_internal/tools/_yore.py,sha256=wNa7ZeSOg5Ai5ORVVs2kBk3_IJdDqcjGrstbeBjDI1E,3492
|
|
54
54
|
duty/_internal/validation.py,sha256=6gf_uALpLMFOKvipHk_qdDGf9u7vyaN7clivHK63wbE,8168
|
|
55
55
|
duty/callables/__init__.py,sha256=soGDrmBeiJrdSRfx1hFNZWZ6BBglvG4AJ3iJb6_IWug,1071
|
|
@@ -79,4 +79,4 @@ duty/exceptions.py,sha256=p36-9D47b-gWPd_HZoUKl0nivaaLJiuAbNHe3TTYr7w,393
|
|
|
79
79
|
duty/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
80
|
duty/tools.py,sha256=4-231PY1yVuOoDAdlEa7e3A3jh_gFkpVaWibJPd3qEk,1226
|
|
81
81
|
duty/validation.py,sha256=U-fSrcMVgKyTCOczNS_TsSNF03U1DVgEg0BF3rJAySo,393
|
|
82
|
-
duty-1.7.
|
|
82
|
+
duty-1.7.3.dist-info/RECORD,,
|
duty-1.7.1.dist-info/METADATA
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: duty
|
|
3
|
-
Version: 1.7.1
|
|
4
|
-
Summary: A simple task runner.
|
|
5
|
-
Keywords: task-runner,task,runner,cross-platform
|
|
6
|
-
Author-Email: =?utf-8?q?Timoth=C3=A9e_Mazzucotelli?= <dev@pawamoy.fr>
|
|
7
|
-
License-Expression: ISC
|
|
8
|
-
License-File: LICENSE
|
|
9
|
-
Classifier: Development Status :: 4 - Beta
|
|
10
|
-
Classifier: Intended Audience :: Developers
|
|
11
|
-
Classifier: Programming Language :: Python
|
|
12
|
-
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3 :: Only
|
|
14
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
-
Classifier: Topic :: Documentation
|
|
20
|
-
Classifier: Topic :: Software Development
|
|
21
|
-
Classifier: Topic :: Utilities
|
|
22
|
-
Classifier: Typing :: Typed
|
|
23
|
-
Project-URL: Homepage, https://pawamoy.github.io/duty
|
|
24
|
-
Project-URL: Documentation, https://pawamoy.github.io/duty
|
|
25
|
-
Project-URL: Changelog, https://pawamoy.github.io/duty/changelog
|
|
26
|
-
Project-URL: Repository, https://github.com/pawamoy/duty
|
|
27
|
-
Project-URL: Issues, https://github.com/pawamoy/duty/issues
|
|
28
|
-
Project-URL: Discussions, https://github.com/pawamoy/duty/discussions
|
|
29
|
-
Project-URL: Gitter, https://gitter.im/duty/community
|
|
30
|
-
Project-URL: Funding, https://github.com/sponsors/pawamoy
|
|
31
|
-
Requires-Python: >=3.10
|
|
32
|
-
Requires-Dist: failprint>=1.0.5
|
|
33
|
-
Requires-Dist: typing-extensions>=4.0; python_version < "3.11"
|
|
34
|
-
Description-Content-Type: text/markdown
|
|
35
|
-
|
|
36
|
-
# duty
|
|
37
|
-
|
|
38
|
-
[](https://github.com/pawamoy/duty/actions?query=workflow%3Aci)
|
|
39
|
-
[](https://pawamoy.github.io/duty/)
|
|
40
|
-
[](https://pypi.org/project/duty/)
|
|
41
|
-
[](https://app.gitter.im/#/room/#duty:gitter.im)
|
|
42
|
-
|
|
43
|
-
A simple task runner.
|
|
44
|
-
|
|
45
|
-
Inspired by [Invoke](https://github.com/pyinvoke/invoke).
|
|
46
|
-
|
|
47
|
-

|
|
48
|
-
|
|
49
|
-
## Installation
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
pip install duty
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
With [`uv`](https://docs.astral.sh/uv/):
|
|
56
|
-
|
|
57
|
-
```bash
|
|
58
|
-
uv tool install duty
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
## Quick start
|
|
62
|
-
|
|
63
|
-
Create a `duties.py` file at the root of your repository.
|
|
64
|
-
|
|
65
|
-
```python
|
|
66
|
-
from duty import duty
|
|
67
|
-
|
|
68
|
-
@duty
|
|
69
|
-
def docs(ctx):
|
|
70
|
-
ctx.run("mkdocs build", title="Building documentation")
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
You can now use the command line tool to run it:
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
duty docs
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
See the [Usage](https://pawamoy.github.io/duty/usage/)
|
|
80
|
-
section in the documentation for more examples.
|
|
81
|
-
|
|
82
|
-
Also see ["Why choosing duty over..."](https://pawamoy.github.io/duty/#why-duty-over).
|
|
83
|
-
|
|
84
|
-
## Sponsors
|
|
85
|
-
|
|
86
|
-
<!-- sponsors-start -->
|
|
87
|
-
<!-- sponsors-end -->
|
|
File without changes
|
|
File without changes
|
|
File without changes
|