plugin XEP-0384: Fully reworked to adjust to the reworked python-omemo:
- support for both (modern) OMEMO under the `urn:xmpp:omemo:2` namespace and (legacy) OMEMO under the `eu.siacs.conversations.axolotl` namespace - maintains one identity across both versions of OMEMO - migrates data from the old plugin - includes more features for protocol stability - uses SCE for modern OMEMO - fully type-checked, linted and format-checked - added type hints to various pieces of backend code used by the plugin - added stubs for some Twisted APIs used by the plugin under stubs/ (use `export MYPYPATH=stubs/` before running mypy) - core (xmpp): enabled `send` trigger and made it an asyncPoint fix 375
This commit is contained in:
parent
6eac59dc2d
commit
75ae8160ae
27 changed files with 2202 additions and 1414 deletions
0
stubs/twisted/__init__.pyi
Normal file
0
stubs/twisted/__init__.pyi
Normal file
0
stubs/twisted/words/__init__.pyi
Normal file
0
stubs/twisted/words/__init__.pyi
Normal file
0
stubs/twisted/words/protocols/__init__.pyi
Normal file
0
stubs/twisted/words/protocols/__init__.pyi
Normal file
0
stubs/twisted/words/protocols/jabber/__init__.pyi
Normal file
0
stubs/twisted/words/protocols/jabber/__init__.pyi
Normal file
14
stubs/twisted/words/protocols/jabber/error.pyi
Normal file
14
stubs/twisted/words/protocols/jabber/error.pyi
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
from typing import Optional
|
||||
|
||||
from twisted.words.xish import domish
|
||||
|
||||
|
||||
class BaseError(Exception):
|
||||
namespace: str
|
||||
condition: str
|
||||
text: Optional[str]
|
||||
textLang: Optional[str]
|
||||
appCondition: Optional[domish.Element]
|
||||
|
||||
class StanzaError(BaseError):
|
||||
...
|
||||
30
stubs/twisted/words/protocols/jabber/jid.pyi
Normal file
30
stubs/twisted/words/protocols/jabber/jid.pyi
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
from typing import Tuple, overload
|
||||
|
||||
|
||||
User = str
|
||||
Host = str
|
||||
Resource = str
|
||||
|
||||
|
||||
# Note: these typings are incomplete and evolve as needed.
|
||||
class JID:
|
||||
user: User
|
||||
host: Host
|
||||
resource: Resource
|
||||
|
||||
@overload
|
||||
def __init__(self, str: str, tuple: None = None) -> None:
|
||||
...
|
||||
|
||||
@overload
|
||||
def __init__(self, str: None, tuple: Tuple[User, Host, Resource]) -> None:
|
||||
...
|
||||
|
||||
def userhost(self) -> str:
|
||||
...
|
||||
|
||||
def userhostJID(self) -> "JID":
|
||||
...
|
||||
|
||||
def full(self) -> str:
|
||||
...
|
||||
0
stubs/twisted/words/xish/__init__.pyi
Normal file
0
stubs/twisted/words/xish/__init__.pyi
Normal file
80
stubs/twisted/words/xish/domish.pyi
Normal file
80
stubs/twisted/words/xish/domish.pyi
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
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:
|
||||
...
|
||||
Loading…
Reference in a new issue