[docs]classJID:def__init__(self,jid:str=None,user:str=None,domain:str=None,resource:str=None):ifjidand(userordomainorresource):raiseValueError('You cannot pass user/domain/resource if a full jid is specified')ifjid:try:self._user,domain=jid.split('@')try:self._domain,self._resource=domain.split('/')exceptValueError:self._domain=domainself._resource=NoneexceptValueError:raiseValueError('Malformed JID')elifuseranddomain:self._user=userself._domain=domainself._resource=resourceelse:raiseValueError('Missing user and/or domain')@propertydefresource(self)->str:returnself._resource@resource.setterdefresource(self,resource:str)->None:self._resource=resource@propertydefdomain(self)->str:returnself._domain@domain.setterdefdomain(self,domain:str):self._domain=domain@propertydefuser(self)->str:returnself._user@user.setterdefuser(self,user:str):self._user=user