slixmpp/jid: add types
Signed-off-by: Maxime “pep” Buquet <pep@bouah.net>
This commit is contained in:
parent
9612e518fb
commit
af246dcfe1
@ -16,6 +16,7 @@ import socket
|
|||||||
|
|
||||||
from copy import deepcopy
|
from copy import deepcopy
|
||||||
from functools import lru_cache
|
from functools import lru_cache
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
from slixmpp.stringprep import nodeprep, resourceprep, idna, StringprepError
|
from slixmpp.stringprep import nodeprep, resourceprep, idna, StringprepError
|
||||||
|
|
||||||
@ -71,7 +72,7 @@ def _parse_jid(data):
|
|||||||
return node, domain, resource
|
return node, domain, resource
|
||||||
|
|
||||||
|
|
||||||
def _validate_node(node):
|
def _validate_node(node: Optional[str]):
|
||||||
"""Validate the local, or username, portion of a JID.
|
"""Validate the local, or username, portion of a JID.
|
||||||
|
|
||||||
:raises InvalidJID:
|
:raises InvalidJID:
|
||||||
@ -93,7 +94,7 @@ def _validate_node(node):
|
|||||||
return node
|
return node
|
||||||
|
|
||||||
|
|
||||||
def _validate_domain(domain):
|
def _validate_domain(domain: str):
|
||||||
"""Validate the domain portion of a JID.
|
"""Validate the domain portion of a JID.
|
||||||
|
|
||||||
IP literal addresses are left as-is, if valid. Domain names
|
IP literal addresses are left as-is, if valid. Domain names
|
||||||
@ -152,7 +153,7 @@ def _validate_domain(domain):
|
|||||||
return domain
|
return domain
|
||||||
|
|
||||||
|
|
||||||
def _validate_resource(resource):
|
def _validate_resource(resource: Optional[str]):
|
||||||
"""Validate the resource portion of a JID.
|
"""Validate the resource portion of a JID.
|
||||||
|
|
||||||
:raises InvalidJID:
|
:raises InvalidJID:
|
||||||
@ -174,7 +175,7 @@ def _validate_resource(resource):
|
|||||||
return resource
|
return resource
|
||||||
|
|
||||||
|
|
||||||
def _unescape_node(node):
|
def _unescape_node(node: str):
|
||||||
"""Unescape a local portion of a JID.
|
"""Unescape a local portion of a JID.
|
||||||
|
|
||||||
.. note::
|
.. note::
|
||||||
@ -199,7 +200,11 @@ def _unescape_node(node):
|
|||||||
return ''.join(unescaped)
|
return ''.join(unescaped)
|
||||||
|
|
||||||
|
|
||||||
def _format_jid(local=None, domain=None, resource=None):
|
def _format_jid(
|
||||||
|
local: Optional[str] = None,
|
||||||
|
domain: Optional[str] = None,
|
||||||
|
resource: Optional[str] = None,
|
||||||
|
):
|
||||||
"""Format the given JID components into a full or bare JID.
|
"""Format the given JID components into a full or bare JID.
|
||||||
|
|
||||||
:param string local: Optional. The local portion of the JID.
|
:param string local: Optional. The local portion of the JID.
|
||||||
@ -237,12 +242,17 @@ class UnescapedJID:
|
|||||||
|
|
||||||
__slots__ = ('_node', '_domain', '_resource')
|
__slots__ = ('_node', '_domain', '_resource')
|
||||||
|
|
||||||
def __init__(self, node, domain, resource):
|
def __init__(
|
||||||
|
self,
|
||||||
|
node: Optional[str],
|
||||||
|
domain: Optional[str],
|
||||||
|
resource: Optional[str],
|
||||||
|
):
|
||||||
self._node = node
|
self._node = node
|
||||||
self._domain = domain
|
self._domain = domain
|
||||||
self._resource = resource
|
self._resource = resource
|
||||||
|
|
||||||
def __getattribute__(self, name):
|
def __getattribute__(self, name: str):
|
||||||
"""Retrieve the given JID component.
|
"""Retrieve the given JID component.
|
||||||
|
|
||||||
:param name: one of: user, server, domain, resource,
|
:param name: one of: user, server, domain, resource,
|
||||||
@ -301,7 +311,7 @@ class JID:
|
|||||||
|
|
||||||
__slots__ = ('_node', '_domain', '_resource', '_bare', '_full')
|
__slots__ = ('_node', '_domain', '_resource', '_bare', '_full')
|
||||||
|
|
||||||
def __init__(self, jid=None):
|
def __init__(self, jid: Optional[str] = None):
|
||||||
if not jid:
|
if not jid:
|
||||||
self._node = ''
|
self._node = ''
|
||||||
self._domain = ''
|
self._domain = ''
|
||||||
@ -363,17 +373,17 @@ class JID:
|
|||||||
return self._full
|
return self._full
|
||||||
|
|
||||||
@node.setter
|
@node.setter
|
||||||
def node(self, value):
|
def node(self, value: str):
|
||||||
self._node = _validate_node(value)
|
self._node = _validate_node(value)
|
||||||
self._update_bare_full()
|
self._update_bare_full()
|
||||||
|
|
||||||
@domain.setter
|
@domain.setter
|
||||||
def domain(self, value):
|
def domain(self, value: str):
|
||||||
self._domain = _validate_domain(value)
|
self._domain = _validate_domain(value)
|
||||||
self._update_bare_full()
|
self._update_bare_full()
|
||||||
|
|
||||||
@bare.setter
|
@bare.setter
|
||||||
def bare(self, value):
|
def bare(self, value: str):
|
||||||
node, domain, resource = _parse_jid(value)
|
node, domain, resource = _parse_jid(value)
|
||||||
assert not resource
|
assert not resource
|
||||||
self._node = node
|
self._node = node
|
||||||
@ -381,12 +391,12 @@ class JID:
|
|||||||
self._update_bare_full()
|
self._update_bare_full()
|
||||||
|
|
||||||
@resource.setter
|
@resource.setter
|
||||||
def resource(self, value):
|
def resource(self, value: str):
|
||||||
self._resource = _validate_resource(value)
|
self._resource = _validate_resource(value)
|
||||||
self._update_bare_full()
|
self._update_bare_full()
|
||||||
|
|
||||||
@full.setter
|
@full.setter
|
||||||
def full(self, value):
|
def full(self, value: str):
|
||||||
self._node, self._domain, self._resource = _parse_jid(value)
|
self._node, self._domain, self._resource = _parse_jid(value)
|
||||||
self._update_bare_full()
|
self._update_bare_full()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user