Source code for arxiv.canonical.role.register


from abc import ABC
from typing import Any, List, Optional, Sequence

from ..register import ICanonicalStorage, RegisterAPI, IRegisterAPI, \
    ICanonicalSource
from .proxy import RegisterAPIProxy


[docs]class RegisterRole(ABC): register_supported: List[str] = [] @property def register(self) -> IRegisterAPI: assert self._register is not None return self._register
[docs] def set_register(self, storage: Any, sources: Sequence[ICanonicalSource], name: str = 'all') -> None: self._register = RegisterAPIProxy(RegisterAPI(storage, sources, name), self.register_supported)
[docs]class NoRegister(RegisterRole, ABC): pass
[docs]class Reader(RegisterRole, ABC): register_supported = [ 'load_listing', 'load_version', 'load_eprint', 'load_history', 'load_event', 'load_events', 'load_source', 'load_render' ]
[docs]class Writer(Reader, ABC): register_supported = Reader.register_supported + [ 'add_events', ]