Ë
    ojŸ!  ã                   óŠ   — d dl mZmZ  G d„ de«      Z G d„ de«      Z G d„ de«      Z G d„ d	e«      Z G d
„ de«      Zg d¢Zy)é    )Ú	AttributeÚ	Interfacec                   ó&   — e Zd ZdZ ed«      Zd„ Zy)ÚIProtocolPluginz?Interface for plugins providing an interface to a Words servicezHA single word describing what kind of interface this is (eg, irc or web)c                  ó   — y)ab  Retrieve a C{twisted.internet.interfaces.IServerFactory} provider

        @param realm: An object providing C{twisted.cred.portal.IRealm} and
        L{IChatService}, with which service information should be looked up.

        @param portal: An object providing C{twisted.cred.portal.IPortal},
        through which logins should be performed.
        N© )ÚrealmÚportals     ú6/usr/lib/python3/dist-packages/twisted/words/iwords.pyÚ
getFactoryzIProtocolPlugin.getFactory   ó   � ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Únamer   r   r   r   r   r      s   „ ÙIáØRó€Dór   r   c                   óB   — e Zd Z ed«      Zd„ Zd	d„Zd„ Zd„ Zd„ Z	d„ Z
y)
ÚIGroupz$A short string, unique among groups.c                  ó   — y)zLInclude the given user in this group.

        @type user: L{IUser}
        Nr   )Úusers    r   Úaddz
IGroup.add   r   r   Nc                  ó   — y)znRemove the given user from this group.

        @type user: L{IUser}
        @type reason: C{unicode}
        Nr   )r   Úreasons     r   ÚremovezIGroup.remove#   r   r   c                   ó   — y)zãReturn the number of participants in this group.

        @rtype: L{twisted.internet.defer.Deferred}
        @return: A Deferred which fires with an C{int} representing the
        number of participants in this group.
        Nr   r   r   r   ÚsizezIGroup.size*   r   r   c                  ó   — y)aY  
        Broadcast the given message from the given sender to other
        users in group.

        The message is not re-transmitted to the sender.

        @param sender: L{IUser}

        @type recipient: L{IGroup}
        @param recipient: This is probably a wart.  Maybe it will be removed
        in the future.  For now, it should be the group object the message
        is being delivered to.

        @param message: C{dict}

        @rtype: L{twisted.internet.defer.Deferred}
        @return: A Deferred which fires with None when delivery has been
        attempted for all users.
        Nr   ©ÚsenderÚ	recipientÚmessages      r   ÚreceivezIGroup.receive2   r   r   c                  ó   — y)zUChange the metadata associated with this group.

        @type meta: C{dict}
        Nr   )Úmetas    r   ÚsetMetadatazIGroup.setMetadataG   r   r   c                   ó   — y)z.Return an iterator of all users in this group.Nr   r   r   r   Ú	iteruserszIGroup.iterusersM   r   r   ©N)r   r   r   r   r   r   r   r   r#   r&   r(   r   r   r   r   r      s+   „ ÙÐ;Ó<€Dòóòòò*ó=r   r   c                   ó:   — e Zd ZdZ ed«      Zd„ Zd„ Zd„ Zdd„Z	y)	ÚIChatClientz<Interface through which IChatService interacts with clients.z[A short string, unique among users.  This will be set by the L{IChatService} at login time.c                  ó   — y)a^  
        Callback notifying this user of the given message sent by the
        given user.

        This will be invoked whenever another user sends a message to a
        group this user is participating in, or whenever another user sends
        a message directly to this user.  In the former case, C{recipient}
        will be the group to which the message was sent; in the latter, it
        will be the same object as the user who is receiving the message.

        @type sender: L{IUser}
        @type recipient: L{IUser} or L{IGroup}
        @type message: C{dict}

        @rtype: L{twisted.internet.defer.Deferred}
        @return: A Deferred which fires when the message has been delivered,
        or which fails in some way.  If the Deferred fails and the message
        was directed at a group, this user will be removed from that group.
        Nr   r   s      r   r#   zIChatClient.receiveX   r   r   c                  ó   — y)zÙ
        Callback notifying this user that the metadata for the given
        group has changed.

        @type group: L{IGroup}
        @type meta: C{dict}

        @rtype: L{twisted.internet.defer.Deferred}
        Nr   )Úgroupr%   s     r   ÚgroupMetaUpdatezIChatClient.groupMetaUpdatem   r   r   c                  ó   — y)z×
        Callback notifying this user that the given user has joined
        the given group.

        @type group: L{IGroup}
        @type user: L{IUser}

        @rtype: L{twisted.internet.defer.Deferred}
        Nr   )r.   r   s     r   Ú
userJoinedzIChatClient.userJoinedx   r   r   Nc                  ó   — y)a  
        Callback notifying this user that the given user has left the
        given group for the given reason.

        @type group: L{IGroup}
        @type user: L{IUser}
        @type reason: C{unicode}

        @rtype: L{twisted.internet.defer.Deferred}
        Nr   )r.   r   r   s      r   ÚuserLeftzIChatClient.userLeftƒ   r   r   r)   )
r   r   r   r   r   r   r#   r/   r1   r3   r   r   r   r+   r+   Q   s&   „ ÙFáØeó€Dòò*	ò	ô
r   r+   c                   ó~   — e Zd ZdZ ed«      Z ed«      Z ed«      Z ed«      Z ed«      Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zy)ÚIUserz;Interface through which clients interact with IChatService.z_A reference to the Realm to which this user belongs.  Set if and only if the user is logged in.z`A reference to the mind which logged in to this user.  Set if and only if the user is logged in.z#A short string, unique among users.zRA POSIX timestamp indicating the time of the last message received from this user.zBA POSIX timestamp indicating this user's most recent sign on time.c                  ó   — y)zÌInvoked by the associated L{IChatService} when login occurs.

        @param realm: The L{IChatService} through which login is occurring.
        @param mind: The mind object used for cred login.
        Nr   )r	   Úminds     r   ÚloggedInzIUser.loggedIn¢   r   r   c                  ó   — y)z‘Send the given message to the given user or group.

        @type recipient: Either L{IUser} or L{IGroup}
        @type message: C{dict}
        Nr   )r!   r"   s     r   Úsendz
IUser.send©   r   r   c                  ó   — y)z|Attempt to join the given group.

        @type group: L{IGroup}
        @rtype: L{twisted.internet.defer.Deferred}
        Nr   ©r.   s    r   Újoinz
IUser.join°   r   r   c                  ó   — y)z‰Discontinue participation in the given group.

        @type group: L{IGroup}
        @rtype: L{twisted.internet.defer.Deferred}
        Nr   r<   s    r   ÚleavezIUser.leave·   r   r   c                   ó   — y)zZ
        Return an iterator of all groups of which this user is a
        member.
        Nr   r   r   r   Ú
itergroupszIUser.itergroups¾   r   r   N)r   r   r   r   r   r	   r7   r   ÚlastMessageÚsignOnr8   r:   r=   r?   rA   r   r   r   r5   r5   �   sc   „ ÙEáØió€Eñ Øjó€Dñ Ð:Ó;€DáØ\ó€Kñ ØLó€Fòòòòór   r5   c                   ó`   — e Zd Z ed«      Z ed«      Z ed«      Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zy
)ÚIChatServicez=A short string identifying this chat service (eg, a hostname)zxA boolean indicating whether L{getGroup} should implicitly create groups which are requested but which do not yet exist.zvA boolean indicating whether L{getUser} should implicitly create users which are requested but which do not yet exist.c                   ó   — y)zµReturn all groups available on this service.

        @rtype: C{twisted.internet.defer.Deferred}
        @return: A Deferred which fires with a list of C{IGroup} providers.
        Nr   r   r   r   rA   zIChatService.itergroupsÒ   r   r   c                  ó   — y)a’  Retrieve the group by the given name.

        @type name: C{str}

        @rtype: L{twisted.internet.defer.Deferred}
        @return: A Deferred which fires with the group with the given
        name if one exists (or if one is created due to the setting of
        L{IChatService.createGroupOnRequest}, or which fails with
        L{twisted.words.ewords.NoSuchGroup} if no such group exists.
        Nr   ©r   s    r   ÚgetGroupzIChatService.getGroupÙ   r   r   c                  ó   — y)a2  Create a new group with the given name.

        @type name: C{str}

        @rtype: L{twisted.internet.defer.Deferred}
        @return: A Deferred which fires with the created group, or
        with fails with L{twisted.words.ewords.DuplicateGroup} if a
        group by that name exists already.
        Nr   rH   s    r   ÚcreateGroupzIChatService.createGroupå   r   r   c                  ó   — y)aE  Retrieve a group by name.

        Unlike C{getGroup}, this will never implicitly create a group.

        @type name: C{str}

        @rtype: L{twisted.internet.defer.Deferred}
        @return: A Deferred which fires with the group by the given
        name, or which fails with L{twisted.words.ewords.NoSuchGroup}.
        Nr   rH   s    r   ÚlookupGroupzIChatService.lookupGroupð   r   r   c                  ó   — y)a�  Retrieve the user by the given name.

        @type name: C{str}

        @rtype: L{twisted.internet.defer.Deferred}
        @return: A Deferred which fires with the user with the given
        name if one exists (or if one is created due to the setting of
        L{IChatService.createUserOnRequest}, or which fails with
        L{twisted.words.ewords.NoSuchUser} if no such user exists.
        Nr   rH   s    r   ÚgetUserzIChatService.getUserü   r   r   c                  ó   — y)a.  Create a new user with the given name.

        @type name: C{str}

        @rtype: L{twisted.internet.defer.Deferred}
        @return: A Deferred which fires with the created user, or
        with fails with L{twisted.words.ewords.DuplicateUser} if a
        user by that name exists already.
        Nr   rH   s    r   Ú
createUserzIChatService.createUser  r   r   N)r   r   r   r   r   ÚcreateGroupOnRequestÚcreateUserOnRequestrA   rI   rK   rM   rO   rQ   r   r   r   rE   rE   Å   sO   „ ÙÐTÓU€Dá$ð	HóÐñ
 $ð	GóÐò
ò
ò	ò
ò
ó	r   rE   )r   r+   r5   rE   N)	Úzope.interfacer   r   r   r   r+   r5   rE   Ú__all__r   r   r   ú<module>rV      sS   ð÷
 0ô�iô ô$4=ˆYô 4=ôn<�)ô <ô~2ˆIô 2ôjL�9ô Lò^�r   