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

1import re as py_re 

2import typing 

3 

4from archdocs import settings 

5from archdocs.features.http_api.const import HTTPApiFeatures 

6 

7 

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) 

12 

13 

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))