|
3 | 3 | # The code implements some seemingly awkward constructs and redundant functionality |
4 | 4 | # This is however required for backwards compatibility, we'll get rid of it eventually |
5 | 5 | # |
| 6 | +from typing import Any |
| 7 | + |
6 | 8 | from .safrs_init import DB, log, SAFRS, dict_merge, test_decorator, SAFRSRequest |
7 | 9 | from .errors import ValidationError, GenericError, IntegerOverflowError, UnAuthorizedError, NotFoundError |
8 | 10 | from .json_encoder import DefaultJSONProvider, SAFRSFormattedResponse |
9 | | -from .safrs_api import SAFRSAPI |
10 | 11 | from .base import SAFRSBase |
11 | 12 | from .jabase import JABase |
12 | 13 | from .jsonapi_attr import jsonapi_attr |
13 | | -from .jsonapi import jsonapi_format_response, paginate |
| 14 | +from .jsonapi_formatting import jsonapi_format_response, paginate |
14 | 15 | from .api_methods import search, startswith |
15 | | -from .swagger_doc import jsonapi_rpc |
| 16 | +from .api_doc import jsonapi_rpc |
16 | 17 | from . import tx |
17 | 18 | from .__about__ import __version__, __description__ |
18 | 19 |
|
| 20 | +_MISSING_FLASK_ADAPTER_DEPS = {"flask_restful", "flask_restful_swagger_2", "flask_swagger_ui"} |
| 21 | + |
| 22 | + |
| 23 | +def _raise_missing_flask_adapter_error(exc: ModuleNotFoundError) -> None: |
| 24 | + raise ModuleNotFoundError( |
| 25 | + "Flask adapter dependencies are not installed. Install them with " |
| 26 | + "`pip install \"safrs[flask]\"`." |
| 27 | + ) from exc |
| 28 | + |
| 29 | + |
| 30 | +try: |
| 31 | + from .safrs_api import SAFRSAPI |
| 32 | +except ModuleNotFoundError as exc: |
| 33 | + if exc.name not in _MISSING_FLASK_ADAPTER_DEPS: |
| 34 | + raise |
| 35 | + |
| 36 | + class SAFRSAPI: # type: ignore[no-redef] |
| 37 | + def __init__(self, *_args: Any, **_kwargs: Any) -> None: |
| 38 | + _raise_missing_flask_adapter_error(exc) |
| 39 | + |
| 40 | + |
19 | 41 | SafrsApi = SAFRSAPI |
20 | 42 |
|
21 | 43 | __all__ = ( |
|
0 commit comments