[PATCH 2 of 2] util: rename lrucachedict._capacity to capacity

Augie Fackler raf at durin42.com
Wed Jan 6 18:32:33 CST 2016


On Tue, Jan 05, 2016 at 09:18:13PM -0800, Gregory Szorc wrote:
> # HG changeset patch
> # User Gregory Szorc <gregory.szorc at gmail.com>
> # Date 1452057366 28800
> #      Tue Jan 05 21:16:06 2016 -0800
> # Node ID 8ef96a23b22f43e3a1bde06f3f5c1468a62cc4c9
> # Parent  de3fa1bfeec15608289d07fc45382d0d62800440
> util: rename lrucachedict._capacity to capacity
>
> Make it a "public" attribute so others can use it.

Why? I'm not clear how this is useful?

>
> diff --git a/mercurial/util.py b/mercurial/util.py
> --- a/mercurial/util.py
> +++ b/mercurial/util.py
> @@ -535,25 +535,28 @@ class lrucachedict(object):
>      The dict consists of an actual backing dict - indexed by original
>      key - and a doubly linked circular list defining the order of entries in
>      the cache.
>
>      The head node is the newest entry in the cache. If the cache is full,
>      we recycle head.prev and make it the new head. Cache accesses result in
>      the node being moved to before the existing head and being marked as the
>      new head node.
> +
> +    Changing the ``.capacity`` of the cache after instantiation results in
> +    undefined behavior.

Maybe expose it as an @property then, so that it's read-only?

@property
def capacity(self):
  return self._capacity

or similar.

>      """
>      def __init__(self, max):
>          self._cache = {}
>
>          self._head = head = _lrucachenode()
>          head.prev = head
>          head.next = head
>          self._size = 1
> -        self._capacity = max
> +        self.capacity = max
>
>      def __len__(self):
>          return len(self._cache)
>
>      def __contains__(self, k):
>          return k in self._cache
>
>      def __iter__(self):
> @@ -571,17 +574,17 @@ class lrucachedict(object):
>      def __setitem__(self, k, v):
>          node = self._cache.get(k)
>          # Replace existing value and mark as newest.
>          if node is not None:
>              node.value = v
>              self._movetohead(node)
>              return
>
> -        if self._size < self._capacity:
> +        if self._size < self.capacity:
>              node = self._addcapacity()
>          else:
>              # Grab the last/oldest item.
>              node = self._head.prev
>
>          # At capacity. Kill the old entry.
>          if node.key is not _notset:
>              del self._cache[node.key]
> @@ -614,17 +617,17 @@ class lrucachedict(object):
>          n = self._head
>          while n.key is not _notset:
>              n.markempty()
>              n = n.next
>
>          self._cache.clear()
>
>      def copy(self):
> -        result = lrucachedict(self._capacity)
> +        result = lrucachedict(self.capacity)
>          n = self._head.prev
>          # Iterate in oldest-to-newest order, so the copy has the right ordering
>          for i in range(len(self._cache)):
>              result[n.key] = n.value
>              n = n.prev
>          return result
>
>      def _movetohead(self, node):
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> https://selenic.com/mailman/listinfo/mercurial-devel


More information about the Mercurial-devel mailing list