Source code for faust.types.settings.sections

import typing
from enum import Enum
from typing import Any, Callable, Dict, Generic, Optional, Type, TypeVar, cast

__all__ = [
    'SectionType',
    'Section',
    'SECTIONS',
    'Agent',
    'Broker',
    'Common',
    'Extension',
    'Producer',
    'RPC',
    'Serialization',
    'Stream',
    'Table',
    'Topic',
    'WebServer',
    'Worker',
]

IT = TypeVar('IT')   # Input type.
OT = TypeVar('OT')   # Output type.

if typing.TYPE_CHECKING:
    from .params import Param as _Param
else:
    class _Param(Generic[IT, OT]): ...  # noqa: E701


[docs]class SectionType(Enum): AGENT = 'AGENT' BROKER = 'BROKER' COMMON = 'COMMON' CONSUMER = 'CONSUMER' EXTENSION = 'EXTENSION' PRODUCER = 'PRODUCER' RPC = 'RPC' SERIALIZATION = 'SERIALIZATION' STREAM = 'STREAM' TABLE = 'TABLE' TOPIC = 'TOPIC' WEB_SERVER = 'WEB_SERVER' WORKER = 'WORKER'
[docs]class Section: """Configuration section.""" type: SectionType title: str refid: str content: Optional[str] def __init__(self, type: SectionType, title: str, refid: str, *, content: str = None) -> None: self.type = type self.title = title self.refid = refid self.content = content SECTIONS[self.type] = self
[docs] def setting(self, param: Type[_Param[IT, OT]], **kwargs: Any) -> Callable[[Callable], OT]: """Decorate to define new setting in this section.""" def inner(fun: Callable) -> OT: setting = param( name=fun.__name__, section=self, help=fun.__doc__, **kwargs, ) return cast(OT, setting) return inner
def __repr__(self) -> str: return f'<{type(self).__name__}: {self.type}>'
SECTIONS: Dict[SectionType, Section] = {} Common = Section( type=SectionType.COMMON, title='Commonly Used Settings', refid='settings-common', ) Serialization = Section( type=SectionType.SERIALIZATION, title='Serialization Settings', refid='settings-serialization', ) Topic = Section( type=SectionType.TOPIC, title='Topic Settings', refid='settings-topic', ) Broker = Section( type=SectionType.BROKER, title='Advanced Broker Settings', refid='settings-broker', ) Consumer = Section( type=SectionType.CONSUMER, title='Advanced Consumer Settings', refid='settings-consumer', ) Producer = Section( type=SectionType.PRODUCER, title='Advanced Producer Settings', refid='settings-producer', ) Table = Section( type=SectionType.TABLE, title='Advanced Table Settings', refid='settings-table', ) Stream = Section( type=SectionType.STREAM, title='Advanced Stream Settings', refid='setting-stream', ) Worker = Section( type=SectionType.WORKER, title='Advanced Worker Settings', refid='settings-worker', ) WebServer = Section( type=SectionType.WEB_SERVER, title='Advanced Web Server Settings', refid='setting-web', ) Agent = Section( type=SectionType.AGENT, title='Advanced Agent Settings', refid='settings-agent', ) RPC = Section( type=SectionType.RPC, title='Agent RPC Settings', refid='settings-rpc', ) Extension = Section( type=SectionType.EXTENSION, title='Extension Settings', refid='settings-extending', )