From 3efeffe6dd80d0ee8f5b7ac58c65b64f9abfe587 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 23 Jan 2020 13:39:54 +0100 Subject: [PATCH] Refactor events file structure --- fbchat/__init__.py | 21 ++++++++++++------- fbchat/{_event.py => _events/__init__.py} | 18 +++++++--------- fbchat/{ => _events}/_client_payload.py | 4 ++-- .../{_event_common.py => _events/_common.py} | 4 ++-- fbchat/{ => _events}/_delta_class.py | 4 ++-- fbchat/{ => _events}/_delta_type.py | 4 ++-- fbchat/_mqtt.py | 16 +++++++------- tests/{ => events}/test_client_payload.py | 2 +- .../test_common.py} | 0 tests/{ => events}/test_delta_class.py | 2 +- tests/{ => events}/test_delta_type.py | 2 +- tests/{test_event.py => events/test_main.py} | 2 +- 12 files changed, 41 insertions(+), 38 deletions(-) rename fbchat/{_event.py => _events/__init__.py} (92%) rename fbchat/{ => _events}/_client_payload.py (97%) rename fbchat/{_event_common.py => _events/_common.py} (94%) rename fbchat/{ => _events}/_delta_class.py (98%) rename fbchat/{ => _events}/_delta_type.py (98%) rename tests/{ => events}/test_client_payload.py (98%) rename tests/{test_event_common.py => events/test_common.py} (100%) rename tests/{ => events}/test_delta_class.py (99%) rename tests/{ => events}/test_delta_type.py (99%) rename tests/{test_event.py => events/test_main.py} (98%) diff --git a/fbchat/__init__.py b/fbchat/__init__.py index 3d7c390..6285a4b 100644 --- a/fbchat/__init__.py +++ b/fbchat/__init__.py @@ -46,16 +46,19 @@ from ._quick_reply import ( from ._poll import Poll, PollOption from ._plan import GuestStatus, Plan, PlanData -# Listen events -from ._event_common import Event, UnknownEvent, ThreadEvent -from ._client_payload import ( +# Events +from ._events import ( + # _common + Event, + UnknownEvent, + ThreadEvent, + # _client_payload ReactionEvent, UserStatusEvent, LiveLocationEvent, UnsendEvent, MessageReplyEvent, -) -from ._delta_class import ( + # _delta_class PeopleAdded, PersonRemoved, TitleSet, @@ -64,8 +67,7 @@ from ._delta_class import ( ThreadsRead, MessageEvent, ThreadFolder, -) -from ._delta_type import ( + # _delta_type ColorSet, EmojiSet, NicknameSet, @@ -82,8 +84,11 @@ from ._delta_type import ( PlanEdited, PlanDeleted, PlanResponded, + # __init__ + Typing, + FriendRequest, + Presence, ) -from ._event import Typing, FriendRequest, Presence from ._mqtt import Listener from ._client import Client diff --git a/fbchat/_event.py b/fbchat/_events/__init__.py similarity index 92% rename from fbchat/_event.py rename to fbchat/_events/__init__.py index 86a0135..fcfc5b3 100644 --- a/fbchat/_event.py +++ b/fbchat/_events/__init__.py @@ -1,16 +1,12 @@ import attr import datetime -from ._event_common import attrs_event, Event, UnknownEvent, ThreadEvent -from . import ( - _exception, - _util, - _user, - _group, - _thread, - _client_payload, - _delta_class, - _delta_type, -) +from ._common import attrs_event, Event, UnknownEvent, ThreadEvent +from . import _client_payload, _delta_class, _delta_type +from ._client_payload import * +from ._delta_class import * +from ._delta_type import * + +from .. import _exception, _util, _user, _group, _thread from typing import Mapping diff --git a/fbchat/_client_payload.py b/fbchat/_events/_client_payload.py similarity index 97% rename from fbchat/_client_payload.py rename to fbchat/_events/_client_payload.py index a4be88d..5486483 100644 --- a/fbchat/_client_payload.py +++ b/fbchat/_events/_client_payload.py @@ -1,7 +1,7 @@ import attr import datetime -from ._event_common import attrs_event, UnknownEvent, ThreadEvent -from . import _exception, _util, _user, _message +from ._common import attrs_event, UnknownEvent, ThreadEvent +from .. import _exception, _util, _user, _message from typing import Optional diff --git a/fbchat/_event_common.py b/fbchat/_events/_common.py similarity index 94% rename from fbchat/_event_common.py rename to fbchat/_events/_common.py index 6ee49fa..e8b5338 100644 --- a/fbchat/_event_common.py +++ b/fbchat/_events/_common.py @@ -1,7 +1,7 @@ import attr import abc -from ._core import kw_only -from . import _exception, _util, _thread, _group, _user, _message +from .._core import kw_only +from .. import _exception, _util, _thread, _group, _user, _message from typing import Any diff --git a/fbchat/_delta_class.py b/fbchat/_events/_delta_class.py similarity index 98% rename from fbchat/_delta_class.py rename to fbchat/_events/_delta_class.py index c864dfa..6e0ca77 100644 --- a/fbchat/_delta_class.py +++ b/fbchat/_events/_delta_class.py @@ -1,7 +1,7 @@ import attr import datetime -from ._event_common import attrs_event, Event, UnknownEvent, ThreadEvent -from . import _util, _user, _group, _thread, _message +from ._common import attrs_event, Event, UnknownEvent, ThreadEvent +from .. import _util, _user, _group, _thread, _message from typing import Sequence, Optional diff --git a/fbchat/_delta_type.py b/fbchat/_events/_delta_type.py similarity index 98% rename from fbchat/_delta_type.py rename to fbchat/_events/_delta_type.py index 7011b40..e59a2ed 100644 --- a/fbchat/_delta_type.py +++ b/fbchat/_events/_delta_type.py @@ -1,7 +1,7 @@ import attr import datetime -from ._event_common import attrs_event, Event, UnknownEvent, ThreadEvent -from . import _util, _user, _thread, _poll, _plan +from ._common import attrs_event, Event, UnknownEvent, ThreadEvent +from .. import _util, _user, _thread, _poll, _plan from typing import Sequence, Optional diff --git a/fbchat/_mqtt.py b/fbchat/_mqtt.py index 040f6b4..dfc38c4 100644 --- a/fbchat/_mqtt.py +++ b/fbchat/_mqtt.py @@ -3,7 +3,7 @@ import random import paho.mqtt.client import requests from ._core import log, kw_only -from . import _util, _exception, _session, _graphql, _event_common, _event +from . import _util, _exception, _session, _graphql, _events from typing import Iterable, Optional @@ -31,7 +31,7 @@ class Listener: _foreground = attr.ib(type=bool) _sequence_id = attr.ib(type=int) _sync_token = attr.ib(None, type=str) - _events = attr.ib(None, type=Optional[Iterable[_event_common.Event]]) + _tmp_events = attr.ib(None, type=Optional[Iterable[_events.Event]]) _HOST = "edge-chat.facebook.com" @@ -147,7 +147,9 @@ class Listener: try: # TODO: Don't handle this in a callback - self._events = list(_event.parse_events(self.session, message.topic, j)) + self._tmp_events = list( + _events.parse_events(self.session, message.topic, j) + ) except _exception.ParseError: log.exception("Failed parsing MQTT data") @@ -340,7 +342,7 @@ class Listener: return True # Keep listening - def listen(self) -> Iterable[_event_common.Event]: + def listen(self) -> Iterable[_events.Event]: """Run the listening loop continually. Yields events when they arrive. @@ -354,9 +356,9 @@ class Listener: ... print(event) """ while self._loop_once(): - if self._events: - yield from self._events - self._events = None + if self._tmp_events: + yield from self._tmp_events + self._tmp_events = None def disconnect(self) -> None: """Disconnect the MQTT listener. diff --git a/tests/test_client_payload.py b/tests/events/test_client_payload.py similarity index 98% rename from tests/test_client_payload.py rename to tests/events/test_client_payload.py index 8994fc1..fc6e265 100644 --- a/tests/test_client_payload.py +++ b/tests/events/test_client_payload.py @@ -13,7 +13,7 @@ from fbchat import ( UnsendEvent, MessageReplyEvent, ) -from fbchat._client_payload import parse_client_delta, parse_client_payloads +from fbchat._events._client_payload import parse_client_delta, parse_client_payloads def test_reaction_event_added(session): diff --git a/tests/test_event_common.py b/tests/events/test_common.py similarity index 100% rename from tests/test_event_common.py rename to tests/events/test_common.py diff --git a/tests/test_delta_class.py b/tests/events/test_delta_class.py similarity index 99% rename from tests/test_delta_class.py rename to tests/events/test_delta_class.py index eba1e9c..7f85148 100644 --- a/tests/test_delta_class.py +++ b/tests/events/test_delta_class.py @@ -17,7 +17,7 @@ from fbchat import ( MessageEvent, ThreadFolder, ) -from fbchat._delta_class import parse_delta +from fbchat._events._delta_class import parse_delta def test_people_added(session): diff --git a/tests/test_delta_type.py b/tests/events/test_delta_type.py similarity index 99% rename from tests/test_delta_type.py rename to tests/events/test_delta_type.py index 52ed670..28f8bf9 100644 --- a/tests/test_delta_type.py +++ b/tests/events/test_delta_type.py @@ -29,7 +29,7 @@ from fbchat import ( PlanDeleted, PlanResponded, ) -from fbchat._delta_type import parse_delta +from fbchat._events._delta_type import parse_delta def test_color_set(session): diff --git a/tests/test_event.py b/tests/events/test_main.py similarity index 98% rename from tests/test_event.py rename to tests/events/test_main.py index d9defe7..cb1a99e 100644 --- a/tests/test_event.py +++ b/tests/events/test_main.py @@ -13,7 +13,7 @@ from fbchat import ( UnfetchedThreadEvent, ActiveStatus, ) -from fbchat._event import parse_delta, parse_events +from fbchat._events import parse_delta, parse_events def test_t_ms_full(session):