Skip to content

Function

Source code in library_analyzer/processing/api/model/_api.py
@dataclass
class Function:
    id: str
    qname: str
    decorators: list[str]
    parameters: list[Parameter]
    results: list[Result]
    is_public: bool
    reexported_by: list[str]
    documentation: FunctionDocumentation
    code: str
    formatted_code: Optional[str] = field(init=False)

    def __post_init__(self) -> None:
        self.formatted_code = None

    @staticmethod
    def from_json(json: Any) -> Function:
        return Function(
            json["id"],
            json["qname"],
            json.get("decorators", []),
            [
                Parameter.from_json(parameter_json)
                for parameter_json in json.get("parameters", [])
            ],
            [Result.from_json(result_json) for result_json in json.get("results", [])],
            json.get("is_public", True),
            json.get("reexported_by", []),
            FunctionDocumentation(
                description=json.get("description", ""),
                full_docstring=json.get("docstring", ""),
            ),
            json.get("code", ""),
        )

    @property
    def name(self) -> str:
        return self.qname.rsplit(".", maxsplit=1)[-1]

    def to_json(self) -> Any:
        return {
            "id": self.id,
            "name": self.name,
            "qname": self.qname,
            "decorators": self.decorators,
            "parameters": [parameter.to_json() for parameter in self.parameters],
            "results": [result.to_json() for result in self.results],
            "is_public": self.is_public,
            "reexported_by": self.reexported_by,
            "description": self.documentation.description,
            "docstring": self.documentation.full_docstring,
            "code": self.code,
        }

    def get_formatted_code(self) -> str:
        if self.formatted_code is None:
            self.formatted_code = _generate_formatted_code(self)
        return self.formatted_code

    def __repr__(self) -> str:
        return "Function(id=" + self.id + ")"

    def __hash__(self) -> int:
        return hash(
            (
                self.id,
                self.name,
                self.qname,
                frozenset(self.decorators),
                frozenset(self.parameters),
                frozenset(self.results),
                self.is_public,
                frozenset(self.reexported_by),
                self.documentation,
                self.code,
            )
        )

code: str class-attribute

decorators: list[str] class-attribute

documentation: FunctionDocumentation class-attribute

formatted_code: Optional[str] = field(init=False) class-attribute

id: str class-attribute

is_public: bool class-attribute

name: str property

parameters: list[Parameter] class-attribute

qname: str class-attribute

reexported_by: list[str] class-attribute

results: list[Result] class-attribute

__hash__()

Source code in library_analyzer/processing/api/model/_api.py
def __hash__(self) -> int:
    return hash(
        (
            self.id,
            self.name,
            self.qname,
            frozenset(self.decorators),
            frozenset(self.parameters),
            frozenset(self.results),
            self.is_public,
            frozenset(self.reexported_by),
            self.documentation,
            self.code,
        )
    )

__post_init__()

Source code in library_analyzer/processing/api/model/_api.py
def __post_init__(self) -> None:
    self.formatted_code = None

__repr__()

Source code in library_analyzer/processing/api/model/_api.py
def __repr__(self) -> str:
    return "Function(id=" + self.id + ")"

from_json(json) staticmethod

Source code in library_analyzer/processing/api/model/_api.py
@staticmethod
def from_json(json: Any) -> Function:
    return Function(
        json["id"],
        json["qname"],
        json.get("decorators", []),
        [
            Parameter.from_json(parameter_json)
            for parameter_json in json.get("parameters", [])
        ],
        [Result.from_json(result_json) for result_json in json.get("results", [])],
        json.get("is_public", True),
        json.get("reexported_by", []),
        FunctionDocumentation(
            description=json.get("description", ""),
            full_docstring=json.get("docstring", ""),
        ),
        json.get("code", ""),
    )

get_formatted_code()

Source code in library_analyzer/processing/api/model/_api.py
def get_formatted_code(self) -> str:
    if self.formatted_code is None:
        self.formatted_code = _generate_formatted_code(self)
    return self.formatted_code

to_json()

Source code in library_analyzer/processing/api/model/_api.py
def to_json(self) -> Any:
    return {
        "id": self.id,
        "name": self.name,
        "qname": self.qname,
        "decorators": self.decorators,
        "parameters": [parameter.to_json() for parameter in self.parameters],
        "results": [result.to_json() for result in self.results],
        "is_public": self.is_public,
        "reexported_by": self.reexported_by,
        "description": self.documentation.description,
        "docstring": self.documentation.full_docstring,
        "code": self.code,
    }