Skip to content

Commit 88326dd

Browse files
authored
Extend the API documentation. (#336)
1 parent 10ed397 commit 88326dd

File tree

4 files changed

+115
-14
lines changed

4 files changed

+115
-14
lines changed

docs/source/reference_guides/api.md

Lines changed: 98 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
# API
22

3+
## Command line interface
4+
5+
To extend pytask's command line interface and set the right types for your options,
6+
pytask offers the following functionalities.
7+
8+
### Classes
9+
10+
```{eval-rst}
11+
.. autoclass:: pytask.ColoredCommand
12+
.. autoclass:: pytask.ColoredGroup
13+
.. autoclass:: pytask.EnumChoice
14+
```
15+
16+
## Compatibility
17+
18+
```{eval-rst}
19+
.. autofunction:: pytask.check_for_optional_program
20+
.. autofunction:: pytask.import_optional_dependency
21+
```
22+
23+
## Console
24+
25+
To write to the terminal, use pytask's console.
26+
27+
```{eval-rst}
28+
.. autoclass:: pytask.console
29+
```
30+
331
## Marks
432

533
pytask uses marks to attach additional information to task functions which is processed
@@ -192,7 +220,9 @@ def task_function():
192220
.. autoclass:: pytask.MarkGenerator
193221
```
194222

195-
### Functions to work with marks
223+
### Functions
224+
225+
These functions help you to handle marks.
196226

197227
```{eval-rst}
198228
.. autofunction:: pytask.get_all_marks
@@ -231,24 +261,49 @@ The remaining exceptions convey specific errors.
231261

232262
```{eval-rst}
233263
.. autoclass:: pytask.console
234-
.. autoclass:: pytask.FilePathNode
235-
.. autoclass:: pytask.MetaNode
236-
.. autoclass:: pytask.Task
237-
.. autoclass:: pytask.CollectionMetadata
238-
.. autoclass:: pytask.CollectionReport
239-
.. autoclass:: pytask.ExecutionReport
240-
.. autoclass:: pytask.ResolvingDependenciesReport
241264
.. autoclass:: pytask.Session
242265
```
243266

244-
## General functions
267+
## Nodes
268+
269+
Nodes are the interface for different kinds of dependencies or products. They inherit
270+
from {class}`pytask.MetaNode`.
271+
272+
```{eval-rst}
273+
.. autoclass:: pytask.MetaNode
274+
```
275+
276+
Then, different kinds of nodes can be implemented.
277+
278+
```{eval-rst}
279+
.. autoclass:: pytask.FilePathNode
280+
```
281+
282+
To parse dependencies and products from nodes, use the following functions.
245283

246284
```{eval-rst}
247285
.. autofunction:: pytask.depends_on
248-
.. autofunction:: pytask.produces
249286
.. autofunction:: pytask.parse_nodes
250-
.. autofunction:: pytask.check_for_optional_program
251-
.. autofunction:: pytask.import_optional_dependency
287+
.. autofunction:: pytask.produces
288+
```
289+
290+
## Tasks
291+
292+
Task are currently represented by the following class:
293+
294+
```{eval-rst}
295+
.. autoclass:: pytask.Task
296+
```
297+
298+
Currently, there are no different types of tasks since changing the `.function`
299+
attribute with a custom callable proved to be sufficient.
300+
301+
To carry over information from user-defined tasks like task functions to
302+
{class}`pytask.Task` objects, use a metadata object that is stored in an `.pytask_meta`
303+
attribute of the task function.
304+
305+
```{eval-rst}
306+
.. autoclass:: pytask.CollectionMetadata
252307
```
253308

254309
## Outcomes
@@ -284,13 +339,29 @@ outcome.
284339
.. autoclass:: pytask.SkippedUnchanged
285340
```
286341

342+
### Functions
343+
344+
```{eval-rst}
345+
.. autofunction:: pytask.count_outcomes
346+
```
347+
287348
## Programmatic Interfaces
288349

289350
```{eval-rst}
290351
.. autofunction:: pytask.build_dag
291352
.. autofunction:: pytask.main
292353
```
293354

355+
## Reports
356+
357+
There are some classes to handle different kinds of reports.
358+
359+
```{eval-rst}
360+
.. autoclass:: pytask.CollectionReport
361+
.. autoclass:: pytask.ExecutionReport
362+
.. autoclass:: pytask.ResolvingDependenciesReport
363+
```
364+
294365
## Tracebacks
295366

296367
```{eval-rst}
@@ -299,3 +370,18 @@ outcome.
299370
.. autofunction:: pytask.remove_traceback_from_exc_info
300371
.. autofunction:: pytask.render_exc_info
301372
```
373+
374+
## Warnings
375+
376+
### Classes
377+
378+
```{eval-rst}
379+
.. autoclass: pytask.WarningReport
380+
```
381+
382+
### Functions
383+
384+
```{eval-rst}
385+
.. autofunction:: pytask.parse_warning_filter
386+
.. autofunction:: pytask.warning_record_to_str
387+
```

src/_pytask/click.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ class _OptionHighlighter(RegexHighlighter):
6363

6464

6565
class ColoredGroup(DefaultGroup):
66-
"""A subclass which colors groups with default commands."""
66+
"""A command group with colored help pages."""
6767

6868
def format_help(
6969
self: DefaultGroup, ctx: click.Context, formatter: Any # noqa: ARG002
@@ -112,7 +112,7 @@ def format_help(
112112

113113

114114
class ColoredCommand(click.Command):
115-
"""Override Clicks help with a Richer version."""
115+
"""A command with colored help pages."""
116116

117117
def format_help(
118118
self: click.Command, ctx: click.Context, formatter: Any # noqa: ARG002

src/_pytask/console.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,18 @@
3131
from _pytask.outcomes import TaskOutcome
3232

3333

34+
__all__ = [
35+
"create_summary_panel",
36+
"create_url_style_for_task",
37+
"create_url_style_for_path",
38+
"console",
39+
"format_task_id",
40+
"format_strings_as_flat_tree",
41+
"render_to_string",
42+
"unify_styles",
43+
]
44+
45+
3446
_IS_WSL = "IS_WSL" in os.environ or "WSL_DISTRO_NAME" in os.environ
3547
IS_WINDOWS_TERMINAL = "WT_SESSION" in os.environ
3648
_IS_WINDOWS = sys.platform == "win32"

src/_pytask/nodes.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
from _pytask.mark import Mark
1919

2020

21+
__all__ = ["FilePathNode", "MetaNode", "Task"]
22+
23+
2124
class MetaNode(metaclass=ABCMeta):
2225
"""Meta class for nodes."""
2326

0 commit comments

Comments
 (0)