Coverage for archdocs/features/http_api/parser.py: 100%
10 statements
« prev ^ index » next coverage.py v7.15.3, created at 2026-08-03 00:00 +0000
« prev ^ index » next coverage.py v7.15.3, created at 2026-08-03 00:00 +0000
1import re as py_re
2import typing
4from archdocs import settings
5from archdocs.features.http_api.const import HTTPApiFeatures
8_SERVED_METHOD_PATTERN: typing.Final = py_re.compile(
9 r"@(?:\w+\.)?(post|put|patch|delete|get|head|options|trace)\b",
10 flags=settings.TYPICAL_RE_FLAGS,
11)
14def find_fastapi_and_litestar_features(raw_source: str) -> HTTPApiFeatures:
15 if ("from fastapi" not in raw_source and "import fastapi" not in raw_source) and (
16 "from litestar" not in raw_source and "import litestar" not in raw_source
17 ):
18 return HTTPApiFeatures(served_methods=frozenset(), served_methods_existed=False)
19 served_methods: typing.Final = frozenset(_SERVED_METHOD_PATTERN.findall(raw_source))
20 return HTTPApiFeatures(served_methods=served_methods, served_methods_existed=bool(served_methods))