summaryrefslogtreecommitdiff
path: root/src/tox/plugin/spec.py
blob: 4ad805290465575a12dcbb9e225b5da50005912e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from argparse import ArgumentParser
from typing import Any, Callable, TypeVar, cast

import pluggy

from tox.config.main import Config
from tox.config.sets import ConfigSet
from tox.tox_env.register import ToxEnvRegister

from . import NAME

_F = TypeVar("_F", bound=Callable[..., Any])
_spec_marker = pluggy.HookspecMarker(NAME)


def _spec(func: _F) -> _F:
    return cast(_F, _spec_marker(func))


@_spec
def tox_register_tox_env(register: ToxEnvRegister) -> None:  # noqa: U100
    """
    Register new tox environment type. You can register:

    - **run environment**: by default this is a local subprocess backed virtualenv Python
    - **packaging environment**: by default this is a PEP-517 compliant local subprocess backed virtualenv Python

    :param register: a object that can be used to register new tox environment types
    """


@_spec
def tox_add_option(parser: ArgumentParser) -> None:  # noqa: U100
    """
    Add a command line argument. This is the first hook to be called, right after the logging setup and config source
    discovery.

    :param parser: the command line parser
    """


@_spec
def tox_add_core_config(core: ConfigSet) -> None:  # noqa: U100
    """
    Define a new core (non test environment bound) settings for tox. Called the first time the core configuration is
    used (at the start of the provision check).

    :param core: the core configuration object
    """


@_spec
def tox_configure(config: Config) -> None:  # noqa: U100
    """
    Called after command line options are parsed and ini-file has been read.

    :param config: the configuration object
    """


__all__ = (
    "NAME",
    "tox_register_tox_env",
    "tox_add_option",
    "tox_add_core_config",
    "tox_configure",
)