Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
docinfo.py131 linesDownload Raw Back to yaml
1 2from __future__ import annotations3 4"""5DocInfo6 7Although it was possible to read tag directives before this, all handle/prefix8pairs for all documents in all streams were stored in one dictionary per9YAML instance, making it impossible to distinguish where such a pair came10from without sublassing the scanner.11 12ToDo:13DocInfo can be used by a yaml dumper to dump a class14- if connected to the root of a data structure15- if provided to the dumper?16"""17 18if False:  # MYPY19    from typing import Optional, Tuple, Any20 21# from dataclasses import dataclass, field, MISSING  # NOQA22 23 24# @dataclass(order=True, frozen=True)25class Version:26    # major: int27    # minor: int28    def __init__(self, major: int, minor: int) -> None:29        self._major = major30        self._minor = minor31 32    @property33    def major(self) -> int:34        return self._major35 36    @property37    def minor(self) -> int:38        return self._minor39 40    def __eq__(self, v: Any) -> bool:41        if not isinstance(v, Version):42            return False43        return self._major == v._major and self._minor == v._minor44 45    def __lt__(self, v: Version) -> bool:46        if self._major < v._major:47            return True48        if self._major > v._major:49            return False50        return self._minor < v._minor51 52    def __le__(self, v: Version) -> bool:53        if self._major < v._major:54            return True55        if self._major > v._major:56            return False57        return self._minor <= v._minor58 59    def __gt__(self, v: Version) -> bool:60        if self._major > v._major:61            return True62        if self._major < v._major:63            return False64        return self._minor > v._minor65 66    def __ge__(self, v: Version) -> bool:67        if self._major > v._major:68            return True69        if self._major < v._major:70            return False71        return self._minor >= v._minor72 73 74def version(75    major: int | str | Tuple[int, int] | None,76    minor: Optional[int] = None,77) -> Optional[Version]:78    if major is None:79        assert minor is None80        return None81    if isinstance(major, str):82        assert minor is None83        parts = major.split('.')84        assert len(parts) == 285        return Version(int(parts[0]), int(parts[1]))86    elif isinstance(major, tuple):87        assert minor is None88        assert len(major) == 289        major, minor = major90    assert minor is not None91    return Version(major, minor)92 93 94# @dataclass(frozen=True)95class Tag:96    # handle: str97    # prefix: str98    def __init__(self, handle: str, prefix: str) -> None:99        self._handle = handle100        self._prefix = prefix101 102    @property103    def handle(self) -> str:104        return self._handle105 106    @property107    def prefix(self) -> str:108        return self._prefix109 110 111# @dataclass112class DocInfo:113    """114    Store document information, can be used for analysis of a loaded YAML document115    requested_version: if explicitly set before load116    doc_version: from %YAML directive117    tags: from %TAG directives in scanned order118    """119    # requested_version: Optional[Version] = None120    # doc_version: Optional[Version] = None121    # tags: list[Tag] = field(default_factory=list)122    def __init__(123        self,124        requested_version: Optional[Version] = None,125        doc_version: Optional[Version] = None,126        tags: Optional[list[Tag]] = None,127    ):128        self.requested_version = requested_version129        self.doc_version = doc_version130        self.tags = [] if tags is None else tags131 
codekingpro/portable-devtools · Team Ai