Skip to content

UnknownFunctionCall

Bases: Expression

Class for unknown function calls.

Attributes:

Name Type Description
call Call | None

The call node.

inferred_def FunctionDef | None

The inferred function definition for the call if it is known.

name str

The name of the call.

Source code in src/library_analyzer/processing/api/purity_analysis/model/_purity.py
@dataclass
class UnknownFunctionCall(Expression):
    """Class for unknown function calls.

    Attributes
    ----------
    call :
        The call node.
    inferred_def :
        The inferred function definition for the call if it is known.
    name :
        The name of the call.
    """

    call: astroid.Call | None = None
    inferred_def: astroid.FunctionDef | None = None
    name: str = field(init=False)

    def __post_init__(self) -> None:
        if self.inferred_def is not None:
            self.name = f"{self.inferred_def.root().name}.{self.inferred_def.name}"
        elif self.call is None:
            self.name = "UNKNOWN"
        elif isinstance(self.call, MemberAccessValue):
            self.name = self.call.name
        elif isinstance(self.call.func, astroid.Attribute):
            self.name = self.call.func.attrname
        elif isinstance(self.call.func, astroid.Name):
            self.name = self.call.func.name
        else:
            self.name = "UNKNOWN"

    def __str__(self) -> str:
        return f"{self.__class__.__name__}.{self.name}"

call: astroid.Call | None = None class-attribute instance-attribute

inferred_def: astroid.FunctionDef | None = None class-attribute instance-attribute

name: str = field(init=False) class-attribute instance-attribute

__init__(call=None, inferred_def=None)

__post_init__()

Source code in src/library_analyzer/processing/api/purity_analysis/model/_purity.py
def __post_init__(self) -> None:
    if self.inferred_def is not None:
        self.name = f"{self.inferred_def.root().name}.{self.inferred_def.name}"
    elif self.call is None:
        self.name = "UNKNOWN"
    elif isinstance(self.call, MemberAccessValue):
        self.name = self.call.name
    elif isinstance(self.call.func, astroid.Attribute):
        self.name = self.call.func.attrname
    elif isinstance(self.call.func, astroid.Name):
        self.name = self.call.func.name
    else:
        self.name = "UNKNOWN"

__str__()

Source code in src/library_analyzer/processing/api/purity_analysis/model/_purity.py
def __str__(self) -> str:
    return f"{self.__class__.__name__}.{self.name}"