Skip to content

API

Source code in library_analyzer/processing/api/model/_api.py
class API:
    @staticmethod
    def from_json(json: Any) -> API:
        result = API(json["distribution"], json["package"], json["version"])

        for module_json in json.get("modules", []):
            result.add_module(Module.from_json(module_json))

        for class_json in json.get("classes", []):
            result.add_class(Class.from_json(class_json))

        for function_json in json.get("functions", []):
            result.add_function(Function.from_json(function_json))

        return result

    def __init__(self, distribution: str, package: str, version: str) -> None:
        self.distribution: str = distribution
        self.package: str = package
        self.version: str = version
        self.modules: dict[str, Module] = {}
        self.classes: dict[str, Class] = {}
        self.functions: dict[str, Function] = {}

    def add_module(self, module: Module) -> None:
        self.modules[module.id] = module

    def add_class(self, class_: Class) -> None:
        self.classes[class_.id] = class_

    def add_function(self, function: Function) -> None:
        self.functions[function.id] = function

    def is_public_class(self, class_id: str) -> bool:
        return class_id in self.classes and self.classes[class_id].is_public

    def is_public_function(self, function_id: str) -> bool:
        return function_id in self.functions and self.functions[function_id].is_public

    def class_count(self) -> int:
        return len(self.classes)

    def public_class_count(self) -> int:
        return len([it for it in self.classes.values() if it.is_public])

    def function_count(self) -> int:
        return len(self.functions)

    def public_function_count(self) -> int:
        return len([it for it in self.functions.values() if it.is_public])

    def parameter_count(self) -> int:
        return len(self.parameters())

    def public_parameter_count(self) -> int:
        return len([it for it in self.parameters().values() if it.is_public])

    def parameters(self) -> dict[str, Parameter]:
        result: dict[str, Parameter] = {}

        for function in self.functions.values():
            for parameter in function.parameters:
                parameter_id = f"{function.id}/{parameter.name}"
                result[parameter_id] = parameter

        return result

    def attributes(self) -> dict[str, Attribute]:
        result: dict[str, Attribute] = {}

        for class_ in self.classes.values():
            for attribute in class_.instance_attributes:
                attribute_id = f"{class_.id}/{attribute.name}"
                result[attribute_id] = attribute

        return result

    def results(self) -> dict[str, Result]:
        result_dict: dict[str, Result] = {}

        for function in self.functions.values():
            for result in function.results:
                result_id = f"{function.id}/{result.name}"
                result_dict[result_id] = result

        return result_dict

    def get_default_value(self, parameter_id: str) -> Optional[str]:
        function_id = parent_id(parameter_id)

        if function_id not in self.functions:
            return None

        for parameter in self.functions[function_id].parameters:
            if parameter.id == parameter_id:
                return parameter.default_value

        return None

    def to_json(self) -> Any:
        return {
            "schemaVersion": API_SCHEMA_VERSION,
            "distribution": self.distribution,
            "package": self.package,
            "version": self.version,
            "modules": [
                module.to_json()
                for module in sorted(self.modules.values(), key=lambda it: it.id)
            ],
            "classes": [
                class_.to_json()
                for class_ in sorted(self.classes.values(), key=lambda it: it.id)
            ],
            "functions": [
                function.to_json()
                for function in sorted(self.functions.values(), key=lambda it: it.id)
            ],
        }

classes: dict[str, Class] = {} instance-attribute

distribution: str = distribution instance-attribute

functions: dict[str, Function] = {} instance-attribute

modules: dict[str, Module] = {} instance-attribute

package: str = package instance-attribute

version: str = version instance-attribute

__init__(distribution, package, version)

Source code in library_analyzer/processing/api/model/_api.py
def __init__(self, distribution: str, package: str, version: str) -> None:
    self.distribution: str = distribution
    self.package: str = package
    self.version: str = version
    self.modules: dict[str, Module] = {}
    self.classes: dict[str, Class] = {}
    self.functions: dict[str, Function] = {}

add_class(class_)

Source code in library_analyzer/processing/api/model/_api.py
def add_class(self, class_: Class) -> None:
    self.classes[class_.id] = class_

add_function(function)

Source code in library_analyzer/processing/api/model/_api.py
def add_function(self, function: Function) -> None:
    self.functions[function.id] = function

add_module(module)

Source code in library_analyzer/processing/api/model/_api.py
def add_module(self, module: Module) -> None:
    self.modules[module.id] = module

attributes()

Source code in library_analyzer/processing/api/model/_api.py
def attributes(self) -> dict[str, Attribute]:
    result: dict[str, Attribute] = {}

    for class_ in self.classes.values():
        for attribute in class_.instance_attributes:
            attribute_id = f"{class_.id}/{attribute.name}"
            result[attribute_id] = attribute

    return result

class_count()

Source code in library_analyzer/processing/api/model/_api.py
def class_count(self) -> int:
    return len(self.classes)

from_json(json) staticmethod

Source code in library_analyzer/processing/api/model/_api.py
@staticmethod
def from_json(json: Any) -> API:
    result = API(json["distribution"], json["package"], json["version"])

    for module_json in json.get("modules", []):
        result.add_module(Module.from_json(module_json))

    for class_json in json.get("classes", []):
        result.add_class(Class.from_json(class_json))

    for function_json in json.get("functions", []):
        result.add_function(Function.from_json(function_json))

    return result

function_count()

Source code in library_analyzer/processing/api/model/_api.py
def function_count(self) -> int:
    return len(self.functions)

get_default_value(parameter_id)

Source code in library_analyzer/processing/api/model/_api.py
def get_default_value(self, parameter_id: str) -> Optional[str]:
    function_id = parent_id(parameter_id)

    if function_id not in self.functions:
        return None

    for parameter in self.functions[function_id].parameters:
        if parameter.id == parameter_id:
            return parameter.default_value

    return None

is_public_class(class_id)

Source code in library_analyzer/processing/api/model/_api.py
def is_public_class(self, class_id: str) -> bool:
    return class_id in self.classes and self.classes[class_id].is_public

is_public_function(function_id)

Source code in library_analyzer/processing/api/model/_api.py
def is_public_function(self, function_id: str) -> bool:
    return function_id in self.functions and self.functions[function_id].is_public

parameter_count()

Source code in library_analyzer/processing/api/model/_api.py
def parameter_count(self) -> int:
    return len(self.parameters())

parameters()

Source code in library_analyzer/processing/api/model/_api.py
def parameters(self) -> dict[str, Parameter]:
    result: dict[str, Parameter] = {}

    for function in self.functions.values():
        for parameter in function.parameters:
            parameter_id = f"{function.id}/{parameter.name}"
            result[parameter_id] = parameter

    return result

public_class_count()

Source code in library_analyzer/processing/api/model/_api.py
def public_class_count(self) -> int:
    return len([it for it in self.classes.values() if it.is_public])

public_function_count()

Source code in library_analyzer/processing/api/model/_api.py
def public_function_count(self) -> int:
    return len([it for it in self.functions.values() if it.is_public])

public_parameter_count()

Source code in library_analyzer/processing/api/model/_api.py
def public_parameter_count(self) -> int:
    return len([it for it in self.parameters().values() if it.is_public])

results()

Source code in library_analyzer/processing/api/model/_api.py
def results(self) -> dict[str, Result]:
    result_dict: dict[str, Result] = {}

    for function in self.functions.values():
        for result in function.results:
            result_id = f"{function.id}/{result.name}"
            result_dict[result_id] = result

    return result_dict

to_json()

Source code in library_analyzer/processing/api/model/_api.py
def to_json(self) -> Any:
    return {
        "schemaVersion": API_SCHEMA_VERSION,
        "distribution": self.distribution,
        "package": self.package,
        "version": self.version,
        "modules": [
            module.to_json()
            for module in sorted(self.modules.values(), key=lambda it: it.id)
        ],
        "classes": [
            class_.to_json()
            for class_ in sorted(self.classes.values(), key=lambda it: it.id)
        ],
        "functions": [
            function.to_json()
            for function in sorted(self.functions.values(), key=lambda it: it.id)
        ],
    }