view stubs/twisted/words/xish/domish.pyi @ 4044:3900626bc100

plugin XEP-0166: refactoring, and various improvments: - add models for transport and applications handlers and linked data - split models into separate file - some type hints - some documentation comments - add actions to prepare confirmation, useful to do initial parsing of all contents - application arg/kwargs and some transport data can be initialised during Jingle `initiate` call, this is notably useful when a call is made with transport data (this is the call for A/V calls where codecs and ICE candidate can be specified when starting a call) - session data can be specified during Jingle `initiate` call - new `store_in_session` argument in `_parse_elements`, which can be used to avoid race-condition when a context element (<decription> or <transport>) is being parsed for an action while an other action happens (like `transport-info`) - don't sed `sid` in `transport_elt` during a `transport-info` action anymore in `build_action`: this is specific to Jingle File Transfer and has been moved there rel 419
author Goffi <goffi@goffi.org>
date Mon, 15 May 2023 16:23:11 +0200
parents 8289ac1b34f4
children
line wrap: on
line source

from typing import (
    Dict, Iterator, List, Literal, Optional, Tuple, TypeVar, Union, overload
)


URI = str
Name = str
QName = Tuple[Optional[URI], Name]
AttributeKey = Union[QName, Name]
Attributes = Dict[AttributeKey, str]
Prefix = str


D = TypeVar("D")


# Note: these typings are incomplete and evolve as needed.
class Element:
    uri: Optional[URI]
    name: Name
    defaultUri: Optional[URI]
    children: List[Union["Element", str]]
    attributes: Attributes

    def __init__(
        self,
        qname: QName,
        defaultUri: Optional[URI] = None,
        attribs: Optional[Attributes] = None,
        localPrefixes: Optional[Dict[URI, Prefix]] = None
    ) -> None:
        ...

    def __getitem__(self, key: AttributeKey) -> str:
        ...

    def __setitem__(self, key: AttributeKey, value: str) -> None:
        ...

    @overload
    def getAttribute(
        self,
        attribname: AttributeKey,
        default: None = None
    ) -> Union[str, None]:
        ...

    @overload
    def getAttribute(self, attribname: AttributeKey, default: D) -> Union[str, D]:
        ...

    def addChild(self, node: "Element") -> "Element":
        ...

    def addContent(self, text: str) -> str:
        ...

    def addElement(
        self,
        name: Union[QName, Name],
        defaultUri: Optional[URI] = None,
        content: Optional[str] = None
    ) -> "Element":
        ...

    def elements(
        self,
        uri: Optional[URI] = None,
        name: Optional[Name] = None
    ) -> Iterator["Element"]:
        ...

    def toXml(
        self,
        prefixes: Optional[Dict[URI, Prefix]] = None,
        closeElement: Literal[0, 1] = 1,
        defaultUri: str = "",
        prefixesInScope: Optional[List[Prefix]] = None
    ) -> str:
        ...