duty 1.7.1__tar.gz → 1.7.3__tar.gz
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-1.7.1 → duty-1.7.3}/CHANGELOG.md +16 -0
- duty-1.7.3/PKG-INFO +140 -0
- duty-1.7.3/README.md +105 -0
- {duty-1.7.1 → duty-1.7.3}/pyproject.toml +1 -1
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_ruff.py +2 -1
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_ty.py +4 -3
- duty-1.7.1/PKG-INFO +0 -87
- duty-1.7.1/README.md +0 -52
- {duty-1.7.1 → duty-1.7.3}/CODE_OF_CONDUCT.md +0 -0
- {duty-1.7.1 → duty-1.7.3}/CONTRIBUTING.md +0 -0
- {duty-1.7.1 → duty-1.7.3}/LICENSE +0 -0
- {duty-1.7.1 → duty-1.7.3}/config/coverage.ini +0 -0
- {duty-1.7.1 → duty-1.7.3}/config/git-changelog.toml +0 -0
- {duty-1.7.1 → duty-1.7.3}/config/mypy.ini +0 -0
- {duty-1.7.1 → duty-1.7.3}/config/pytest.ini +0 -0
- {duty-1.7.1 → duty-1.7.3}/config/ruff.toml +0 -0
- {duty-1.7.1 → duty-1.7.3}/config/vscode/launch.json +0 -0
- {duty-1.7.1 → duty-1.7.3}/config/vscode/settings.json +0 -0
- {duty-1.7.1 → duty-1.7.3}/config/vscode/tasks.json +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/.overrides/main.html +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/.overrides/partials/comments.html +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/.overrides/partials/path-item.html +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/changelog.md +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/code_of_conduct.md +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/contributing.md +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/credits.md +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/css/material.css +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/css/mkdocstrings.css +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/demo.svg +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/gen_credits.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/index.md +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/js/feedback.js +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/license.md +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/reference/api.md +0 -0
- {duty-1.7.1 → duty-1.7.3}/docs/usage.md +0 -0
- {duty-1.7.1 → duty-1.7.3}/duties.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/mkdocs.yml +0 -0
- {duty-1.7.1 → duty-1.7.3}/scripts/gen_credits.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/scripts/get_version.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/scripts/make +0 -0
- {duty-1.7.1 → duty-1.7.3}/scripts/make.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/__init__.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/__main__.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/__init__.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/__init__.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/_io.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/autoflake.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/black.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/blacken_docs.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/build.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/coverage.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/flake8.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/git_changelog.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/griffe.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/interrogate.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/isort.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/mkdocs.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/mypy.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/pytest.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/ruff.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/safety.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/ssort.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/callables/twine.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/cli.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/collection.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/context.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/debug.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/decorator.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/exceptions.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/__init__.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_autoflake.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_base.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_black.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_blacken_docs.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_build.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_coverage.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_flake8.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_git_changelog.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_griffe.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_interrogate.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_isort.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_mkdocs.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_mypy.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_pytest.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_safety.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_ssort.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_twine.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/tools/_yore.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/_internal/validation.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/__init__.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/autoflake.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/black.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/blacken_docs.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/build.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/coverage.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/flake8.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/git_changelog.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/griffe.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/interrogate.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/isort.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/mkdocs.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/mypy.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/pytest.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/ruff.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/safety.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/ssort.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/callables/twine.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/cli.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/collection.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/completions.bash +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/context.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/decorator.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/exceptions.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/py.typed +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/tools.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/src/duty/validation.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/__init__.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/conftest.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/fixtures/arguments.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/fixtures/basic.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/fixtures/booleans.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/fixtures/code.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/fixtures/list.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/fixtures/multiple.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/fixtures/precedence.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/fixtures/validation.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/test_api.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/test_cli.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/test_collection.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/test_context.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/test_decorator.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/test_running.py +0 -0
- {duty-1.7.1 → duty-1.7.3}/tests/test_validation.py +0 -0
|
@@ -5,6 +5,22 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
|
|
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
6
6
|
|
|
7
7
|
<!-- insertion marker -->
|
|
8
|
+
## [1.7.3](https://github.com/pawamoy/duty/releases/tag/1.7.3) - 2026-02-02
|
|
9
|
+
|
|
10
|
+
<small>[Compare with 1.7.2](https://github.com/pawamoy/duty/compare/1.7.2...1.7.3)</small>
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- Also print standard error of ruff and ty commands ([7d0b320](https://github.com/pawamoy/duty/commit/7d0b3203d183c4067e9deec8da64f754677a6987) by Timothée Mazzucotelli).
|
|
15
|
+
|
|
16
|
+
## [1.7.2](https://github.com/pawamoy/duty/releases/tag/1.7.2) - 2026-01-30
|
|
17
|
+
|
|
18
|
+
<small>[Compare with 1.7.1](https://github.com/pawamoy/duty/compare/1.7.1...1.7.2)</small>
|
|
19
|
+
|
|
20
|
+
### Code Refactoring
|
|
21
|
+
|
|
22
|
+
- Fix typing for color parameter of ty.check tool ([a33eb2f](https://github.com/pawamoy/duty/commit/a33eb2ff908eadc969f37f5edca90d10b8369679) by Timothée Mazzucotelli).
|
|
23
|
+
|
|
8
24
|
## [1.7.1](https://github.com/pawamoy/duty/releases/tag/1.7.1) - 2026-01-30
|
|
9
25
|
|
|
10
26
|
<small>[Compare with 1.7.0](https://github.com/pawamoy/duty/compare/1.7.0...1.7.1)</small>
|
duty-1.7.3/PKG-INFO
ADDED
|
@@ -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 -->
|
duty-1.7.3/README.md
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# duty
|
|
2
|
+
|
|
3
|
+
[](https://github.com/pawamoy/duty/actions?query=workflow%3Aci)
|
|
4
|
+
[](https://pawamoy.github.io/duty/)
|
|
5
|
+
[](https://pypi.org/project/duty/)
|
|
6
|
+
[](https://app.gitter.im/#/room/#duty:gitter.im)
|
|
7
|
+
|
|
8
|
+
A simple task runner.
|
|
9
|
+
|
|
10
|
+
Inspired by [Invoke](https://github.com/pyinvoke/invoke).
|
|
11
|
+
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
pip install duty
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
With [`uv`](https://docs.astral.sh/uv/):
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
uv tool install duty
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Quick start
|
|
27
|
+
|
|
28
|
+
Create a `duties.py` file at the root of your repository.
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
from duty import duty
|
|
32
|
+
|
|
33
|
+
@duty
|
|
34
|
+
def docs(ctx):
|
|
35
|
+
ctx.run("mkdocs build", title="Building documentation")
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
You can now use the command line tool to run it:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
duty docs
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
See the [Usage](https://pawamoy.github.io/duty/usage/)
|
|
45
|
+
section in the documentation for more examples.
|
|
46
|
+
|
|
47
|
+
Also see ["Why choosing duty over..."](https://pawamoy.github.io/duty/#why-duty-over).
|
|
48
|
+
|
|
49
|
+
## Sponsors
|
|
50
|
+
|
|
51
|
+
<!-- sponsors-start -->
|
|
52
|
+
|
|
53
|
+
<div id="premium-sponsors" style="text-align: center;">
|
|
54
|
+
|
|
55
|
+
<div id="silver-sponsors"><b>Silver sponsors</b><p>
|
|
56
|
+
<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>
|
|
57
|
+
<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>
|
|
58
|
+
</p></div>
|
|
59
|
+
|
|
60
|
+
<div id="bronze-sponsors"><b>Bronze sponsors</b><p>
|
|
61
|
+
<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>
|
|
62
|
+
</p></div>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
<div id="sponsors"><p>
|
|
68
|
+
<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>
|
|
69
|
+
<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>
|
|
70
|
+
<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>
|
|
71
|
+
<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>
|
|
72
|
+
<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>
|
|
73
|
+
<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>
|
|
74
|
+
<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>
|
|
75
|
+
<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>
|
|
76
|
+
<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>
|
|
77
|
+
<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>
|
|
78
|
+
<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>
|
|
79
|
+
<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>
|
|
80
|
+
<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>
|
|
81
|
+
<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>
|
|
82
|
+
<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>
|
|
83
|
+
<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>
|
|
84
|
+
<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>
|
|
85
|
+
<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>
|
|
86
|
+
<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>
|
|
87
|
+
<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>
|
|
88
|
+
<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>
|
|
89
|
+
<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>
|
|
90
|
+
<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>
|
|
91
|
+
<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>
|
|
92
|
+
<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>
|
|
93
|
+
<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>
|
|
94
|
+
<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>
|
|
95
|
+
<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>
|
|
96
|
+
<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>
|
|
97
|
+
<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>
|
|
98
|
+
<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>
|
|
99
|
+
<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>
|
|
100
|
+
</p></div>
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
*And 7 more private sponsor(s).*
|
|
104
|
+
|
|
105
|
+
<!-- sponsors-end -->
|
|
@@ -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
|
)
|
duty-1.7.1/PKG-INFO
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 -->
|
duty-1.7.1/README.md
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
# duty
|
|
2
|
-
|
|
3
|
-
[](https://github.com/pawamoy/duty/actions?query=workflow%3Aci)
|
|
4
|
-
[](https://pawamoy.github.io/duty/)
|
|
5
|
-
[](https://pypi.org/project/duty/)
|
|
6
|
-
[](https://app.gitter.im/#/room/#duty:gitter.im)
|
|
7
|
-
|
|
8
|
-
A simple task runner.
|
|
9
|
-
|
|
10
|
-
Inspired by [Invoke](https://github.com/pyinvoke/invoke).
|
|
11
|
-
|
|
12
|
-

|
|
13
|
-
|
|
14
|
-
## Installation
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
pip install duty
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
With [`uv`](https://docs.astral.sh/uv/):
|
|
21
|
-
|
|
22
|
-
```bash
|
|
23
|
-
uv tool install duty
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
## Quick start
|
|
27
|
-
|
|
28
|
-
Create a `duties.py` file at the root of your repository.
|
|
29
|
-
|
|
30
|
-
```python
|
|
31
|
-
from duty import duty
|
|
32
|
-
|
|
33
|
-
@duty
|
|
34
|
-
def docs(ctx):
|
|
35
|
-
ctx.run("mkdocs build", title="Building documentation")
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
You can now use the command line tool to run it:
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
duty docs
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
See the [Usage](https://pawamoy.github.io/duty/usage/)
|
|
45
|
-
section in the documentation for more examples.
|
|
46
|
-
|
|
47
|
-
Also see ["Why choosing duty over..."](https://pawamoy.github.io/duty/#why-duty-over).
|
|
48
|
-
|
|
49
|
-
## Sponsors
|
|
50
|
-
|
|
51
|
-
<!-- sponsors-start -->
|
|
52
|
-
<!-- sponsors-end -->
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|