duty 1.7.2__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 +2 -1
- duty-1.7.3.dist-info/METADATA +140 -0
- {duty-1.7.2.dist-info → duty-1.7.3.dist-info}/RECORD +7 -7
- duty-1.7.2.dist-info/METADATA +0 -87
- {duty-1.7.2.dist-info → duty-1.7.3.dist-info}/WHEEL +0 -0
- {duty-1.7.2.dist-info → duty-1.7.3.dist-info}/entry_points.txt +0 -0
- {duty-1.7.2.dist-info → duty-1.7.3.dist-info}/licenses/LICENSE +0 -0
duty/_internal/tools/_ruff.py
CHANGED
duty/_internal/tools/_ty.py
CHANGED
|
@@ -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.2.dist-info/METADATA
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: duty
|
|
3
|
-
Version: 1.7.2
|
|
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
|