Skip to content

Class

Source code in library_analyzer/processing/api/model/_api.py
class Class:
    @staticmethod
    def from_json(json: Any) -> Class:
        result = Class(
            json["id"],
            json["qname"],
            json.get("decorators", []),
            json.get("superclasses", []),
            json.get("is_public", True),
            json.get("reexported_by", []),
            ClassDocumentation(
                description=json.get("description", ""),
                full_docstring=json.get("docstring", ""),
            ),
            json.get("code", ""),
            [
                Attribute.from_json(instance_attribute, json["id"])
                for instance_attribute in json.get("instance_attributes", [])
            ],
        )

        for method_id in json["methods"]:
            result.add_method(method_id)

        return result

    def __init__(
        self,
        id_: str,
        qname: str,
        decorators: list[str],
        superclasses: list[str],
        is_public: bool,
        reexported_by: list[str],
        documentation: ClassDocumentation,
        code: str,
        instance_attributes: list[Attribute],
    ) -> None:
        self.id: str = id_
        self.qname: str = qname
        self.decorators: list[str] = decorators
        self.superclasses: list[str] = superclasses
        self.methods: list[str] = []
        self.is_public: bool = is_public
        self.reexported_by: list[str] = reexported_by
        self.documentation: ClassDocumentation = documentation
        self.code: str = code
        self.instance_attributes = instance_attributes
        self.formatted_code: Optional[str] = None

    @property
    def name(self) -> str:
        return self.qname.split(".")[-1]

    def add_method(self, method_id: str) -> None:
        self.methods.append(method_id)

    def to_json(self) -> Any:
        return {
            "id": self.id,
            "name": self.name,
            "qname": self.qname,
            "decorators": self.decorators,
            "superclasses": self.superclasses,
            "methods": self.methods,
            "is_public": self.is_public,
            "reexported_by": self.reexported_by,
            "description": self.documentation.description,
            "docstring": self.documentation.full_docstring,
            "code": self.code,
            "instance_attributes": [
                attribute.to_json() for attribute in self.instance_attributes
            ],
        }

    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 "Class(id=" + self.id + ")"

code: str = code instance-attribute

decorators: list[str] = decorators instance-attribute

documentation: ClassDocumentation = documentation instance-attribute

formatted_code: Optional[str] = None instance-attribute

id: str = id_ instance-attribute

instance_attributes = instance_attributes instance-attribute

is_public: bool = is_public instance-attribute

methods: list[str] = [] instance-attribute

name: str property

qname: str = qname instance-attribute

reexported_by: list[str] = reexported_by instance-attribute

superclasses: list[str] = superclasses instance-attribute

__init__(id_, qname, decorators, superclasses, is_public, reexported_by, documentation, code, instance_attributes)

Source code in library_analyzer/processing/api/model/_api.py
def __init__(
    self,
    id_: str,
    qname: str,
    decorators: list[str],
    superclasses: list[str],
    is_public: bool,
    reexported_by: list[str],
    documentation: ClassDocumentation,
    code: str,
    instance_attributes: list[Attribute],
) -> None:
    self.id: str = id_
    self.qname: str = qname
    self.decorators: list[str] = decorators
    self.superclasses: list[str] = superclasses
    self.methods: list[str] = []
    self.is_public: bool = is_public
    self.reexported_by: list[str] = reexported_by
    self.documentation: ClassDocumentation = documentation
    self.code: str = code
    self.instance_attributes = instance_attributes
    self.formatted_code: Optional[str] = None

__repr__()

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

add_method(method_id)

Source code in library_analyzer/processing/api/model/_api.py
def add_method(self, method_id: str) -> None:
    self.methods.append(method_id)

from_json(json) staticmethod

Source code in library_analyzer/processing/api/model/_api.py
@staticmethod
def from_json(json: Any) -> Class:
    result = Class(
        json["id"],
        json["qname"],
        json.get("decorators", []),
        json.get("superclasses", []),
        json.get("is_public", True),
        json.get("reexported_by", []),
        ClassDocumentation(
            description=json.get("description", ""),
            full_docstring=json.get("docstring", ""),
        ),
        json.get("code", ""),
        [
            Attribute.from_json(instance_attribute, json["id"])
            for instance_attribute in json.get("instance_attributes", [])
        ],
    )

    for method_id in json["methods"]:
        result.add_method(method_id)

    return result

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,
        "superclasses": self.superclasses,
        "methods": self.methods,
        "is_public": self.is_public,
        "reexported_by": self.reexported_by,
        "description": self.documentation.description,
        "docstring": self.documentation.full_docstring,
        "code": self.code,
        "instance_attributes": [
            attribute.to_json() for attribute in self.instance_attributes
        ],
    }