Skip to content

Commit c83300d

Browse files
committed
implementation that cannot extend the cli anymore.
1 parent 364ea7f commit c83300d

24 files changed

+118
-93
lines changed

src/_pytask/build.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from _pytask.capture_utils import CaptureMethod
1616
from _pytask.capture_utils import ShowCapture
1717
from _pytask.click import ColoredCommand
18-
from _pytask.config import hookimpl
1918
from _pytask.config_utils import find_project_root_and_config
2019
from _pytask.config_utils import read_config
2120
from _pytask.console import console
@@ -26,6 +25,7 @@
2625
from _pytask.outcomes import ExitCode
2726
from _pytask.path import HashPathCache
2827
from _pytask.pluginmanager import get_plugin_manager
28+
from _pytask.pluginmanager import hookimpl
2929
from _pytask.session import Session
3030
from _pytask.shared import parse_paths
3131
from _pytask.shared import to_list
@@ -91,7 +91,7 @@ def build( # noqa: C901, PLR0912, PLR0913
9191
sort_table: bool = True,
9292
stop_after_first_failure: bool = False,
9393
strict_markers: bool = False,
94-
tasks: Callable[..., Any] | PTask | Iterable[Callable[..., Any] | PTask] = (),
94+
tasks: Iterable[Callable[..., Any] | PTask] = (),
9595
task_files: str | Iterable[str] = "task_*.py",
9696
trace: bool = False,
9797
verbose: int = 1,
@@ -161,7 +161,8 @@ def build( # noqa: C901, PLR0912, PLR0913
161161
strict_markers
162162
Raise errors for unknown markers.
163163
tasks
164-
A task or a collection of tasks that is passed to ``pytask.build(tasks=...)``.
164+
A collection of tasks that is passed to
165+
:func:`pytask.build(tasks=...) <pytask.build>`.
165166
task_files
166167
A pattern to describe modules that contain tasks.
167168
trace
@@ -171,7 +172,7 @@ def build( # noqa: C901, PLR0912, PLR0913
171172
172173
Returns
173174
-------
174-
session : pytask.Session
175+
session: Session
175176
The session captures all the information of the current run.
176177
177178
"""

src/_pytask/capture.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
from _pytask.capture_utils import CaptureMethod
4545
from _pytask.capture_utils import ShowCapture
4646
from _pytask.click import EnumChoice
47-
from _pytask.config import hookimpl
47+
from _pytask.pluginmanager import hookimpl
4848
from _pytask.shared import convert_to_enum
4949

5050
if TYPE_CHECKING:

src/_pytask/clean.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import click
1515
from _pytask.click import ColoredCommand
1616
from _pytask.click import EnumChoice
17-
from _pytask.config import hookimpl
1817
from _pytask.console import console
1918
from _pytask.exceptions import CollectionError
2019
from _pytask.git import get_all_files
@@ -27,6 +26,7 @@
2726
from _pytask.path import find_common_ancestor
2827
from _pytask.path import relative_to
2928
from _pytask.pluginmanager import get_plugin_manager
29+
from _pytask.pluginmanager import hookimpl
3030
from _pytask.session import Session
3131
from _pytask.shared import to_list
3232
from _pytask.traceback import Traceback

src/_pytask/cli.py

Lines changed: 4 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,29 @@
22
from __future__ import annotations
33

44
from typing import Any
5-
from typing import TYPE_CHECKING
65

76
import click
87
from _pytask.click import ColoredGroup
9-
from _pytask.config import hookimpl
108
from _pytask.pluginmanager import get_plugin_manager
119
from packaging.version import parse as parse_version
1210

13-
if TYPE_CHECKING:
14-
import pluggy
15-
1611

1712
_CONTEXT_SETTINGS: dict[str, Any] = {
1813
"help_option_names": ("-h", "--help"),
1914
"show_default": True,
2015
}
2116

2217

23-
if parse_version(click.__version__) < parse_version("8"): # pragma: no cover
24-
_VERSION_OPTION_KWARGS: dict[str, Any] = {}
25-
else: # pragma: no cover
18+
if parse_version(click.__version__) >= parse_version("8"): # pragma: no cover
2619
_VERSION_OPTION_KWARGS = {"package_name": "pytask"}
20+
else: # pragma: no cover
21+
_VERSION_OPTION_KWARGS = {}
2722

2823

2924
def _extend_command_line_interface(cli: click.Group) -> click.Group:
3025
"""Add parameters from plugins to the commandline interface."""
3126
pm = get_plugin_manager()
32-
pm.hook.pytask_extend_command_line_interface(cli=cli)
27+
pm.hook.pytask_extend_command_line_interface.call_historic(kwargs={"cli": cli})
3328
_sort_options_for_each_command_alphabetically(cli)
3429
return cli
3530

@@ -42,54 +37,6 @@ def _sort_options_for_each_command_alphabetically(cli: click.Group) -> None:
4237
)
4338

4439

45-
@hookimpl
46-
def pytask_add_hooks(pm: pluggy.PluginManager) -> None:
47-
"""Add hooks."""
48-
from _pytask import build
49-
from _pytask import capture
50-
from _pytask import clean
51-
from _pytask import collect
52-
from _pytask import collect_command
53-
from _pytask import config
54-
from _pytask import database
55-
from _pytask import debugging
56-
from _pytask import execute
57-
from _pytask import dag_command
58-
from _pytask import live
59-
from _pytask import logging
60-
from _pytask import mark
61-
from _pytask import nodes
62-
from _pytask import parameters
63-
from _pytask import persist
64-
from _pytask import profile
65-
from _pytask import dag
66-
from _pytask import skipping
67-
from _pytask import task
68-
from _pytask import warnings
69-
70-
pm.register(build)
71-
pm.register(capture)
72-
pm.register(clean)
73-
pm.register(collect)
74-
pm.register(collect_command)
75-
pm.register(config)
76-
pm.register(database)
77-
pm.register(debugging)
78-
pm.register(execute)
79-
pm.register(dag_command)
80-
pm.register(live)
81-
pm.register(logging)
82-
pm.register(mark)
83-
pm.register(nodes)
84-
pm.register(parameters)
85-
pm.register(persist)
86-
pm.register(profile)
87-
pm.register(dag)
88-
pm.register(skipping)
89-
pm.register(task)
90-
pm.register(warnings)
91-
92-
9340
@click.group(
9441
cls=ColoredGroup,
9542
context_settings=_CONTEXT_SETTINGS,

src/_pytask/collect.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from _pytask.collect_utils import create_name_of_python_node
1616
from _pytask.collect_utils import parse_dependencies_from_task_function
1717
from _pytask.collect_utils import parse_products_from_task_function
18-
from _pytask.config import hookimpl
1918
from _pytask.config import IS_FILE_SYSTEM_CASE_SENSITIVE
2019
from _pytask.console import console
2120
from _pytask.console import create_summary_panel
@@ -36,6 +35,7 @@
3635
from _pytask.path import find_case_sensitive_path
3736
from _pytask.path import import_path
3837
from _pytask.path import shorten_path
38+
from _pytask.pluginmanager import hookimpl
3939
from _pytask.reports import CollectionReport
4040
from _pytask.shared import find_duplicates
4141
from _pytask.task_utils import COLLECTED_TASKS

src/_pytask/collect_command.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
import click
1010
from _pytask.click import ColoredCommand
11-
from _pytask.config import hookimpl
1211
from _pytask.console import console
1312
from _pytask.console import create_url_style_for_path
1413
from _pytask.console import FILE_ICON
@@ -28,6 +27,7 @@
2827
from _pytask.path import find_common_ancestor
2928
from _pytask.path import relative_to
3029
from _pytask.pluginmanager import get_plugin_manager
30+
from _pytask.pluginmanager import hookimpl
3131
from _pytask.session import Session
3232
from _pytask.tree_util import tree_leaves
3333
from rich.text import Text

src/_pytask/config.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@
44
import tempfile
55
from pathlib import Path
66
from typing import Any
7+
from typing import TYPE_CHECKING
78

8-
import pluggy
9+
from _pytask.pluginmanager import hookimpl
910
from _pytask.shared import parse_markers
1011
from _pytask.shared import parse_paths
1112
from _pytask.shared import to_list
1213

13-
14-
hookimpl = pluggy.HookimplMarker("pytask")
14+
if TYPE_CHECKING:
15+
import pluggy
1516

1617

1718
_IGNORED_FOLDERS: list[str] = [".git/*", ".venv/*"]

src/_pytask/dag.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
from typing import TYPE_CHECKING
77

88
import networkx as nx
9-
from _pytask.config import hookimpl
109
from _pytask.console import ARROW_DOWN_ICON
1110
from _pytask.console import console
1211
from _pytask.console import FILE_ICON
@@ -19,6 +18,7 @@
1918
from _pytask.node_protocols import PNode
2019
from _pytask.node_protocols import PTask
2120
from _pytask.nodes import PythonNode
21+
from _pytask.pluginmanager import hookimpl
2222
from _pytask.reports import DagReport
2323
from _pytask.shared import reduce_names_of_multiple_nodes
2424
from _pytask.tree_util import tree_map

src/_pytask/dag_command.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from _pytask.click import EnumChoice
1313
from _pytask.compat import check_for_optional_program
1414
from _pytask.compat import import_optional_dependency
15-
from _pytask.config import hookimpl
1615
from _pytask.config_utils import find_project_root_and_config
1716
from _pytask.config_utils import read_config
1817
from _pytask.console import console
@@ -21,6 +20,7 @@
2120
from _pytask.exceptions import ResolvingDependenciesError
2221
from _pytask.outcomes import ExitCode
2322
from _pytask.pluginmanager import get_plugin_manager
23+
from _pytask.pluginmanager import hookimpl
2424
from _pytask.session import Session
2525
from _pytask.shared import parse_paths
2626
from _pytask.shared import reduce_names_of_multiple_nodes

src/_pytask/database.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
from pathlib import Path
55
from typing import Any
66

7-
from _pytask.config import hookimpl
87
from _pytask.database_utils import create_database
8+
from _pytask.pluginmanager import hookimpl
99
from sqlalchemy.engine import make_url
1010

1111

src/_pytask/debugging.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
from typing import TYPE_CHECKING
1111

1212
import click
13-
from _pytask.config import hookimpl
1413
from _pytask.console import console
1514
from _pytask.node_protocols import PTask
1615
from _pytask.outcomes import Exit
16+
from _pytask.pluginmanager import hookimpl
1717
from _pytask.traceback import Traceback
1818

1919

src/_pytask/execute.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
from typing import Any
88
from typing import TYPE_CHECKING
99

10-
from _pytask.config import hookimpl
1110
from _pytask.config import IS_FILE_SYSTEM_CASE_SENSITIVE
1211
from _pytask.console import console
1312
from _pytask.console import create_summary_panel
@@ -33,6 +32,7 @@
3332
from _pytask.outcomes import SkippedUnchanged
3433
from _pytask.outcomes import TaskOutcome
3534
from _pytask.outcomes import WouldBeExecuted
35+
from _pytask.pluginmanager import hookimpl
3636
from _pytask.reports import ExecutionReport
3737
from _pytask.traceback import remove_traceback_from_exc_info
3838
from _pytask.tree_util import tree_leaves

src/_pytask/hookspecs.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ def pytask_add_hooks(pm: pluggy.PluginManager) -> None:
4646
# Hooks for the command-line interface.
4747

4848

49-
@hookspec
49+
@hookspec(historic=True)
5050
def pytask_extend_command_line_interface(cli: click.Group) -> None:
5151
"""Extend the command line interface.
5252

src/_pytask/live.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
from typing import TYPE_CHECKING
88

99
import click
10-
from _pytask.config import hookimpl
1110
from _pytask.console import console
1211
from _pytask.console import format_task_name
1312
from _pytask.outcomes import CollectionOutcome
1413
from _pytask.outcomes import TaskOutcome
14+
from _pytask.pluginmanager import hookimpl
1515
from attrs import define
1616
from attrs import field
1717
from rich.box import ROUNDED

src/_pytask/logging.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@
1212
import _pytask
1313
import click
1414
import pluggy
15-
from _pytask.config import hookimpl
1615
from _pytask.console import console
1716
from _pytask.console import IS_WINDOWS_TERMINAL
17+
from _pytask.pluginmanager import hookimpl
1818
from _pytask.reports import ExecutionReport
1919
from _pytask.traceback import Traceback
2020
from rich.text import Text

src/_pytask/mark/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
import click
1010
from _pytask.click import ColoredCommand
11-
from _pytask.config import hookimpl
1211
from _pytask.console import console
1312
from _pytask.dag_utils import task_and_preceding_tasks
1413
from _pytask.exceptions import ConfigurationError
@@ -20,6 +19,7 @@
2019
from _pytask.mark.structures import MarkGenerator
2120
from _pytask.outcomes import ExitCode
2221
from _pytask.pluginmanager import get_plugin_manager
22+
from _pytask.pluginmanager import hookimpl
2323
from _pytask.session import Session
2424
from _pytask.shared import parse_markers
2525
from attrs import define

0 commit comments

Comments
 (0)