Use cached_property instead of a custom decorator

This commit is contained in:
James Westman 2022-03-16 16:06:00 -05:00
parent 1c1a5e3266
commit f197e68589
4 changed files with 15 additions and 28 deletions

View file

@ -17,12 +17,12 @@
#
# SPDX-License-Identifier: LGPL-3.0-or-later
import typing as T
from collections import ChainMap, defaultdict
from functools import cached_property
import typing as T
from .errors import *
from .lsp_utils import SemanticToken
from .utils import lazy_prop
from .xml_emitter import XmlEmitter
@ -71,7 +71,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

@ -17,11 +17,11 @@
#
# SPDX-License-Identifier: LGPL-3.0-or-later
from functools import cached_property
import typing as T
import os, sys
from .errors import CompileError, CompilerBugError
from .utils import lazy_prop
from . import xml_reader
@ -127,30 +127,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 = []
@ -237,15 +237,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([
@ -40,7 +39,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)