Skip to content

Class

Source code in src/library_analyzer/processing/api/model/_api.py
@dataclass
class Class:
    id: str
    qname: str
    decorators: list[str]
    superclasses: list[str]
    methods: list[str] = field(init=False)
    is_public: bool
    reexported_by: list[str]
    docstring: ClassDocstring
    code: str
    instance_attributes: list[Attribute]

    @staticmethod
    def from_dict(d: dict[str, Any]) -> Class:
        result = Class(
            d["id"],
            d["qname"],
            d.get("decorators", []),
            d.get("superclasses", []),
            d.get("is_public", True),
            d.get("reexported_by", []),
            ClassDocstring(description=d.get("description", "")),
            d.get("code", ""),
            [
                Attribute.from_dict(instance_attribute, d["id"])
                for instance_attribute in d.get("instance_attributes", [])
            ],
        )

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

        return result

    def __post_init__(self) -> None:
        self.methods: list[str] = []

    @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_dict(self) -> dict[str, 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.docstring.description,
            "code": self.code,
            "instance_attributes": [attribute.to_dict() for attribute in self.instance_attributes],
        }

    def get_formatted_code(self, *, cut_documentation: bool = False) -> str:
        formatted_code = _generate_formatted_code(self)
        if cut_documentation:
            formatted_code = _cut_documentation_from_code(formatted_code, self)
        return formatted_code

code: str instance-attribute

decorators: list[str] instance-attribute

docstring: ClassDocstring instance-attribute

id: str instance-attribute

instance_attributes: list[Attribute] instance-attribute

is_public: bool instance-attribute

methods: list[str] = field(init=False) class-attribute instance-attribute

name: str property

qname: str instance-attribute

reexported_by: list[str] instance-attribute

superclasses: list[str] instance-attribute

__init__(id, qname, decorators, superclasses, is_public, reexported_by, docstring, code, instance_attributes)

__post_init__()

Source code in src/library_analyzer/processing/api/model/_api.py
def __post_init__(self) -> None:
    self.methods: list[str] = []

add_method(method_id)

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

from_dict(d) staticmethod

Source code in src/library_analyzer/processing/api/model/_api.py
@staticmethod
def from_dict(d: dict[str, Any]) -> Class:
    result = Class(
        d["id"],
        d["qname"],
        d.get("decorators", []),
        d.get("superclasses", []),
        d.get("is_public", True),
        d.get("reexported_by", []),
        ClassDocstring(description=d.get("description", "")),
        d.get("code", ""),
        [
            Attribute.from_dict(instance_attribute, d["id"])
            for instance_attribute in d.get("instance_attributes", [])
        ],
    )

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

    return result

get_formatted_code(*, cut_documentation=False)

Source code in src/library_analyzer/processing/api/model/_api.py
def get_formatted_code(self, *, cut_documentation: bool = False) -> str:
    formatted_code = _generate_formatted_code(self)
    if cut_documentation:
        formatted_code = _cut_documentation_from_code(formatted_code, self)
    return formatted_code

to_dict()

Source code in src/library_analyzer/processing/api/model/_api.py
def to_dict(self) -> dict[str, 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.docstring.description,
        "code": self.code,
        "instance_attributes": [attribute.to_dict() for attribute in self.instance_attributes],
    }