🐛 fix(code_parser.py): handle case when code parameter is a class by getting its source code using inspect module

 feat(code_parser.py): add support for parsing class source code in addition to string source code to improve flexibility and usability
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-07-19 07:03:54 -03:00
commit 4827c99368

View file

@ -1,7 +1,8 @@
import ast
import inspect
import traceback
from typing import Dict, Any, Union
from typing import Dict, Any, Type, Union
from fastapi import HTTPException
@ -14,10 +15,15 @@ class CodeParser:
A parser for Python source code, extracting code details.
"""
def __init__(self, code: str) -> None:
def __init__(self, code: Union[str, Type]) -> None:
"""
Initializes the parser with the provided code.
"""
if isinstance(code, type):
if not inspect.isclass(code):
raise ValueError("The provided code must be a class.")
# If the code is a class, get its source code
code = inspect.getsource(code)
self.code = code
self.data: Dict[str, Any] = {
"imports": [],