]> git.ipfire.org Git - pbs.git/commitdiff
decorators: Drop the lazy_property decorator
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 10 Feb 2025 15:05:30 +0000 (15:05 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 10 Feb 2025 15:05:30 +0000 (15:05 +0000)
We don't need this to be settable any more, so therefore we can use the
functools.cached_property decorator that comes with the standard
distribution.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/builds.py
src/buildservice/decorators.py
src/buildservice/messages.py
src/buildservice/packages.py
src/buildservice/repos.py
src/buildservice/users.py

index a8cb5772b138f5b1797daa65a2ad5c30de5b7ec8..642a71fccde1b939651932041d8c5bd34fda37ec 100644 (file)
@@ -954,7 +954,7 @@ class Build(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        # Monitoring Release
 
-       @lazy_property
+       @functools.cached_property
        async def monitoring_release(self):
                """
                        Returns the Monitoring Release
@@ -1066,7 +1066,7 @@ class Build(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
                return False
 
-       @lazy_property
+       @functools.cached_property
        async def deprecated_by(self):
                if self.data.deprecated_by:
                        return await self.backend.users.get_by_id(self.data.deprecated_by)
@@ -1089,7 +1089,7 @@ class Build(database.Base, database.BackendMixin, database.SoftDeleteMixin):
                "Build", foreign_keys=[deprecating_build_id],
        )
 
-       @lazy_property
+       @functools.cached_property
        async def deprecated_builds(self):
                """
                        Returns a list of builds that were deprecated by this build
index df04425b1cbcb9167a2f0b26c88552ad17b40f28..3df525d712f8264067b7ee731dbef3909e000b2f 100644 (file)
@@ -12,43 +12,3 @@ def run_in_thread(func):
                return await asyncio.to_thread(func, *args, **kwargs)
 
        return wrapper
-
-class lazy_property(property):
-       """
-               The property is only computed once and then being
-               cached until the end of the lifetime of the object.
-       """
-       def __init__(self, fget, fset=None, fdel=None, doc=None):
-               property.__init__(self, fget=fget, fset=fset, fdel=fdel, doc=doc)
-
-               # Make a cache key
-               self._name = "_cache_%s" % self.fget.__name__
-
-       def __get__(self, instance, owner):
-               if instance is None:
-                       return self
-
-               if hasattr(instance, self._name):
-                       result = getattr(instance, self._name)
-               else:
-                       if not self.fget is None:
-                               result = self.fget(instance)
-
-                       setattr(instance, self._name, result)
-
-               return result
-
-       def __set__(self, instance, value):
-               if instance is None:
-                       raise AttributeError
-
-               if self.fset is None:
-                       setattr(instance, self._name, value)
-               else:
-                       self.fset(instance, value)
-
-                       # Remove any cached attributes
-                       try:
-                               delattr(instance, self._name)
-                       except AttributeError:
-                               pass
index fb0640d726fa4b4b7b9b9ffdb968250721606d29..1bea167bff72bd567e272a6544912d1d30192688 100644 (file)
@@ -7,6 +7,7 @@ import email.charset
 import email.mime.text
 import email.policy
 import email.utils
+import functools
 import logging
 import re
 import smtplib
@@ -68,7 +69,7 @@ class Messages(base.Object):
        def init(self):
                self.template_loader = tornado.template.Loader(TEMPLATESDIR, autoescape=None)
 
-       @lazy_property
+       @functools.cached_property
        def queue(self):
                """
                        The message queue
index 621365abbac96f6638c1eb968c4d7ad1beaaeae9..65f78422db9ad6921724d074c616f99faa9bdf49 100644 (file)
@@ -398,7 +398,7 @@ class Package(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        # Commit
 
-       @lazy_property
+       @functools.cached_property
        def commit(self):
                if self.data.commit_id:
                        return self.backend.sources.get_commit_by_id(self.data.commit_id)
index aba08ebbe4f433117446f5edc692f52bdd5198cd..c1745bb9d019f28b4b02a40ee109eeb563852779 100644 (file)
@@ -277,7 +277,7 @@ class Repo(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        slug = Column(Text, unique=True, nullable=False)
 
-       @lazy_property
+       @property
        def path(self):
                parts = []
 
@@ -510,7 +510,7 @@ class Repo(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        # Sources
 
-       @lazy_property
+       @functools.cached_property
        def sources(self):
                sources = self.backend.sources._get_sources("""
                        SELECT
index 49a22a64b409e4f60263053cf700ec195ed3f6fe..5584a64e3a8965d96122794f510894ba7b51db54 100644 (file)
@@ -534,7 +534,7 @@ class User(database.Base, database.BackendMixin, database.SoftDeleteMixin):
 
        # Fetch any attributes from LDAP
 
-       @lazy_property
+       @functools.cached_property
        def attrs(self):
                # Use the stored attributes (only used in the test environment)
                #if self.data._attrs: