pymap.versioned

class pymap.versioned.VersionedT

Type variable for versioned objects.

alias of TypeVar(‘VersionedT’, bound=Versioned[Any])

class pymap.versioned.EntityTagT

Type variable for versioned object entity tags.

alias of TypeVar(‘EntityTagT’)

class pymap.versioned.Versioned[source]

This simple base class defines objects that supports “versioning” using entity tags.

The entity_tag of an object represents the current object and previous_entity_tag represents the object that it is intended to replace. A versioned object then provides optimistic locking by preventing replacement of an object other than the one it was intended to replace.

In a linear chain of objects and their replacements, the first object in the chain should have a previous_entity_tag of None, and every subsequent object should have a previous_entity_tag equal to the entity_tag of the object before it.

REPLACE_ANY: ClassVar[Any] = <object object>

A special marker for previous_entity_tag indicating that any previous object may be replaced.

abstract property entity_tag: EntityTagT

Represents the current version of the object.

abstract property previous_entity_tag: EntityTagT | None

Represents the version of the object it is intended to replace.

can_replace(previous)[source]

Check if this object can replace the previous object.

Parameters:
Return type:

bool

abstract classmethod new_entity_tag()[source]

Generate a new random value for entity_tag.

Return type:

EntityTagT