view stubs/twisted/words/xish/domish.pyi @ 4118:07370d2a9bde

plugin XEP-0167: keep media order when starting a call: media content order is relevant when building Jingle contents/SDP notably for bundling. This patch fixes the previous behaviour of always using the same order by keeping the order of the data (i.e. order of original SDP offer). Previous behaviour could lead to call failure. rel 424
author Goffi <goffi@goffi.org>
date Tue, 03 Oct 2023 15:15:24 +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:
        ...