File: decorator.py

package info (click to toggle)
python-moto 5.1.18-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 116,520 kB
  • sloc: python: 636,725; javascript: 181; makefile: 39; sh: 3
file content (37 lines) | stat: -rw-r--r-- 921 bytes parent folder | download | duplicates (2)
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
from typing import TYPE_CHECKING, Callable, Optional, TypeVar, Union, overload

from moto import settings
from moto.core.config import DefaultConfig
from moto.core.models import MockAWS, ProxyModeMockAWS, ServerModeMockAWS

if TYPE_CHECKING:
    from typing_extensions import ParamSpec

    P = ParamSpec("P")

T = TypeVar("T")


@overload
def mock_aws(func: "Callable[P, T]") -> "Callable[P, T]": ...


@overload
def mock_aws(
    func: None = None, config: Optional[DefaultConfig] = None
) -> "MockAWS": ...


def mock_aws(
    func: "Optional[Callable[P, T]]" = None,
    config: Optional[DefaultConfig] = None,
) -> Union["MockAWS", "Callable[P, T]"]:
    clss = (
        ServerModeMockAWS
        if settings.TEST_SERVER_MODE
        else (ProxyModeMockAWS if settings.is_test_proxy_mode() else MockAWS)
    )
    if func is not None:
        return clss().__call__(func=func)
    else:
        return clss(config)