Source code for fragmented_keys.tag.standard

from __future__ import annotations

import time
from typing import TYPE_CHECKING

if TYPE_CHECKING:
    from fragmented_keys.protocols import CacheHandler

from fragmented_keys.tag.base import BaseTag


[docs] class StandardTag(BaseTag): """A tag whose version is stored in cache and can be incremented. Incrementing the version causes all composite keys that include this tag-instance to resolve to a new cache key, effectively invalidating the old cached values without deleting them. """ def __init__( self, tag: str, instance: str = "", version: float | None = None, handler: CacheHandler | None = None, prefix: str | None = None, ) -> None: super().__init__(tag, instance, version, handler, prefix)
[docs] def increment(self) -> None: """Increment the tag version by 0.1 and persist.""" current = self.get_tag_version() new_version = current + 0.1 self._version = new_version self._store_version(new_version)
[docs] def reset_tag_version(self) -> None: """Reset the tag version to a new microtime-based value.""" new_version = time.time() * 1000 self._version = new_version self._store_version(new_version)