Skip to content

Commit

Permalink
dep: rename CachedDep to DepCachedLru and WeakDep to DepCachedWeak
Browse files Browse the repository at this point in the history
  • Loading branch information
radhermit committed Nov 30, 2023
1 parent 3eb4906 commit 16f8fc6
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 25 deletions.
2 changes: 1 addition & 1 deletion benches/test_dep.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
from pkgcore.ebuild.atom import atom as pkgcore_dep
from portage.dep import Atom as portage_dep

from pkgcraft.dep import CachedDep as pkgcraft_cached_dep
from pkgcraft.dep import Dep as pkgcraft_dep
from pkgcraft.dep import DepCachedLru as pkgcraft_cached_dep

pytest_plugins = ("benchmark", "pkgcraft")

Expand Down
6 changes: 3 additions & 3 deletions membench/dep.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@
from pkgcore.ebuild.atom import atom as pkgcore_dep
from portage.dep import Atom as portage_dep

from pkgcraft.dep import CachedDep, Dep, WeakDep
from pkgcraft.dep import Dep, DepCachedLru, DepCachedWeak

eprint = lambda x: print(x, file=sys.stderr)

dep_funcs = [
("pkgcraft", Dep),
("pkgcraft-lru", CachedDep),
("pkgcraft-weak", WeakDep),
("pkgcraft-lru", DepCachedLru),
("pkgcraft-weak", DepCachedWeak),
("pkgcore", pkgcore_dep),
("portage", portage_dep),
]
Expand Down
16 changes: 8 additions & 8 deletions src/pkgcraft/dep/pkg.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -755,25 +755,25 @@ cdef class Dep:
C.pkgcraft_dep_free(self.ptr)


class CachedDep(Dep, metaclass=LruInstanceCache):
class DepCachedLru(Dep, metaclass=LruInstanceCache):
"""Package dependency with LRU-based instance caching.
>>> from pkgcraft.dep import CachedDep
>>> from pkgcraft.dep import DepCachedLru
>>> s = '=cat/pkg-1-r2:3/4::repo[a,b]'
>>> d1 = CachedDep(s)
>>> d2 = CachedDep(s)
>>> d1 = DepCachedLru(s)
>>> d2 = DepCachedLru(s)
>>> d1 is d2
True
"""


class WeakDep(Dep, metaclass=WeakInstanceCache):
class DepCachedWeak(Dep, metaclass=WeakInstanceCache):
"""Package dependency with weakref-based instance caching.
>>> from pkgcraft.dep import WeakDep
>>> from pkgcraft.dep import DepCachedWeak
>>> s = '=cat/pkg-1-r2:3/4::repo[a,b]'
>>> d1 = WeakDep(s)
>>> d2 = WeakDep(s)
>>> d1 = DepCachedWeak(s)
>>> d2 = DepCachedWeak(s)
>>> d1 is d2
True
"""
Expand Down
24 changes: 11 additions & 13 deletions tests/dep/test_pkg.py
Original file line number Diff line number Diff line change
Expand Up @@ -380,35 +380,33 @@ def test_pickle(self):
assert dep == new_dep


class TestCachedDep:
def test_cached(self):
class TestDepCached:
def test_lru(self):
s = ">=cat/pkg-1.2-r3"
d1 = CachedDep(s)
d2 = CachedDep(s)
d1 = DepCachedLru(s)
d2 = DepCachedLru(s)
assert d1 is d2

# LRU deps stay cached when all refs are dropped
object_id = id(d1)
del d1, d2
gc.collect()
d1 = CachedDep("cat/pkg")
d2 = CachedDep(s)
d1 = DepCachedLru("cat/pkg")
d2 = DepCachedLru(s)
assert id(d2) == object_id


class TestWeakDep:
def test_cached(self):
def test_weak(self):
s = ">=cat/pkg-1.2-r3"
d1 = WeakDep(s)
d2 = WeakDep(s)
d1 = DepCachedWeak(s)
d2 = DepCachedWeak(s)
assert d1 is d2

# weakref deps are dropped from the cache when all refs are dropped
object_id = id(d1)
del d1, d2
gc.collect()
d1 = WeakDep("cat/pkg")
d2 = WeakDep(s)
d1 = DepCachedWeak("cat/pkg")
d2 = DepCachedWeak(s)
assert id(d2) != object_id


Expand Down

0 comments on commit 16f8fc6

Please sign in to comment.