Source code for bibble.fields._interface

 1#!/usr/bin/env python3
 2"""
 3
 4"""
 5# Imports:
 6from __future__ import annotations
 7
 8# ##-- stdlib imports
 9import datetime
10import enum
11import functools as ftz
12import itertools as itz
13import logging as logmod
14import pathlib as pl
15import re
16import time
17import types
18import collections
19import contextlib
20import hashlib
21from copy import deepcopy
22from uuid import UUID, uuid1
23from weakref import ref
24import atexit # for @atexit.register
25import faulthandler
26# ##-- end stdlib imports
27
28from bibble.model import MetaBlock
29
30# ##-- types
31# isort: off
32import abc
33import collections.abc
34from typing import TYPE_CHECKING, cast, assert_type, assert_never
35from typing import Generic, NewType
36# Protocols:
37from typing import Protocol, runtime_checkable
38# Typing Decorators:
39from typing import no_type_check, final, override, overload
40# from dataclasses import InitVar, dataclass, field
41# from pydantic import BaseModel, Field, model_validator, field_validator, ValidationError
42
43if TYPE_CHECKING:
44    from jgdv import Maybe
45    from typing import Final
46    from typing import ClassVar, Any, LiteralString
47    from typing import Never, Self, Literal
48    from typing import TypeGuard
49    from collections.abc import Iterable, Iterator, Callable, Generator
50    from collections.abc import Sequence, Mapping, MutableMapping, Hashable
51
52##--|
53
54# isort: on
55# ##-- end types
56
57##-- logging
58logging = logmod.getLogger(__name__)
59##-- end logging
60
61# Vars:
62TITLE_K      : Final[str] = "title"
63SUBTITLE_K   : Final[str] = "subtitle"
64TITLE_SEP    : Final[str] = ":"
65
66DOI_PREFIX   : Final[str] = "https://doi.org/"
67DOI_K        : Final[str] = "doi"
68BIBDB_PREFIX : Final[str] = "db/"
69SOURCE_K     : Final[str] = "bibsource"
70DBLP_PREFIX  : Final[str] = "https://dblp.org/"
71BIBURL_K     : Final[str] = "biburl"
72EE_K         : Final[str] = "ee"
73URL_K        : Final[str] = "url"
74
75# Body:
76
[docs] 77class AccumulationBlock(MetaBlock): 78 """ A Simple Block to store accumulation data in between middlewares 79 80 """ 81 82 def __init__(self, *, name:str, data:set, fields:set): 83 super().__init__() 84 self.name : str = name 85 self.fields : set = set(fields) 86 self.collection : set = set(data)