cleanup: Use functools.cached_property

This commit is contained in:
James Westman 2022-02-23 15:39:15 -06:00
parent 3b22dff988
commit a0e9f647d1
4 changed files with 14 additions and 27 deletions

View file

@ -19,10 +19,10 @@
import typing as T
from collections import ChainMap, defaultdict
from functools import cached_property
from .errors import *
from .lsp_utils import SemanticToken
from .utils import lazy_prop
from .xml_emitter import XmlEmitter
@ -75,7 +75,7 @@ class AstNode:
else:
return self.parent.parent_by_type(type)
@lazy_prop
@cached_property
def errors(self):
return list(self._get_errors())

View file

@ -18,10 +18,10 @@
# SPDX-License-Identifier: LGPL-3.0-or-later
import typing as T
from functools import cached_property
import os, sys
from .errors import CompileError, CompilerBugError
from .utils import lazy_prop
from . import xml_reader
@ -149,30 +149,30 @@ class GirNode:
else:
return self.container.get_containing(container_type)
@lazy_prop
@cached_property
def glib_type_name(self):
return self.xml["glib:type-name"]
@lazy_prop
@cached_property
def full_name(self):
if self.container is None:
return self.name
else:
return f"{self.container.name}.{self.name}"
@lazy_prop
@cached_property
def name(self) -> str:
return self.xml["name"]
@lazy_prop
@cached_property
def cname(self) -> str:
return self.xml["c:type"]
@lazy_prop
@cached_property
def available_in(self) -> str:
return self.xml.get("version")
@lazy_prop
@cached_property
def doc(self) -> T.Optional[str]:
sections = []
@ -276,15 +276,15 @@ class Class(GirNode, GirType):
result += " implements " + ", ".join(self.implements)
return result
@lazy_prop
@cached_property
def properties(self):
return {p.name: p for p in self._enum_properties()}
@lazy_prop
@cached_property
def signals(self):
return {s.name: s for s in self._enum_signals()}
@lazy_prop
@cached_property
def parent(self):
if self._parent is None:
return None

View file

@ -32,18 +32,6 @@ class Colors:
CLEAR = "\033[0m"
def lazy_prop(func):
key = "_lazy_prop_" + func.__name__
@property
def real_func(self):
if key not in self.__dict__:
self.__dict__[key] = func(self)
return self.__dict__[key]
return real_func
def did_you_mean(word: str, options: T.List[str]) -> T.Optional[str]:
if len(options) == 0:
return None

View file

@ -19,11 +19,10 @@
from collections import defaultdict
from functools import cached_property
import typing as T
from xml import sax
from .utils import lazy_prop
# To speed up parsing, we ignore all tags except these
PARSE_GIR = set(
@ -53,7 +52,7 @@ class Element:
self.children: T.Dict[str, T.List["Element"]] = defaultdict(list)
self.cdata_chunks: T.List[str] = []
@lazy_prop
@cached_property
def cdata(self):
return "".join(self.cdata_chunks)