Make models use slots

This commit is contained in:
Mads Marquart
2019-12-11 13:52:31 +01:00
parent 27ae1c9f88
commit 523c320c08
14 changed files with 41 additions and 36 deletions

View File

@@ -1,9 +1,9 @@
import attr import attr
from ._core import Image from ._core import attrs_default, Image
from . import _util from . import _util
@attr.s @attrs_default
class Attachment: class Attachment:
"""Represents a Facebook attachment.""" """Represents a Facebook attachment."""
@@ -11,12 +11,12 @@ class Attachment:
uid = attr.ib(None) uid = attr.ib(None)
@attr.s @attrs_default
class UnsentMessage(Attachment): class UnsentMessage(Attachment):
"""Represents an unsent message attachment.""" """Represents an unsent message attachment."""
@attr.s @attrs_default
class ShareAttachment(Attachment): class ShareAttachment(Attachment):
"""Represents a shared item (e.g. URL) attachment.""" """Represents a shared item (e.g. URL) attachment."""

View File

@@ -4,6 +4,9 @@ import aenum
log = logging.getLogger("fbchat") log = logging.getLogger("fbchat")
#: Default attrs settings for classes
attrs_default = attr.s(slots=True) # TODO: Add kw_only=True
class Enum(aenum.Enum): class Enum(aenum.Enum):
"""Used internally by ``fbchat`` to support enumerations""" """Used internally by ``fbchat`` to support enumerations"""

View File

@@ -1,10 +1,10 @@
import attr import attr
from ._core import Image from ._core import attrs_default, Image
from . import _util from . import _util
from ._attachment import Attachment from ._attachment import Attachment
@attr.s @attrs_default
class FileAttachment(Attachment): class FileAttachment(Attachment):
"""Represents a file that has been sent as a Facebook attachment.""" """Represents a file that has been sent as a Facebook attachment."""
@@ -28,7 +28,7 @@ class FileAttachment(Attachment):
) )
@attr.s @attrs_default
class AudioAttachment(Attachment): class AudioAttachment(Attachment):
"""Represents an audio file that has been sent as a Facebook attachment.""" """Represents an audio file that has been sent as a Facebook attachment."""
@@ -51,7 +51,7 @@ class AudioAttachment(Attachment):
) )
@attr.s @attrs_default
class ImageAttachment(Attachment): class ImageAttachment(Attachment):
"""Represents an image that has been sent as a Facebook attachment. """Represents an image that has been sent as a Facebook attachment.
@@ -108,7 +108,7 @@ class ImageAttachment(Attachment):
) )
@attr.s @attrs_default
class VideoAttachment(Attachment): class VideoAttachment(Attachment):
"""Represents a video that has been sent as a Facebook attachment.""" """Represents a video that has been sent as a Facebook attachment."""

View File

@@ -1,10 +1,10 @@
import attr import attr
from ._core import Image from ._core import attrs_default, Image
from . import _util, _plan from . import _util, _plan
from ._thread import ThreadType, Thread from ._thread import ThreadType, Thread
@attr.s @attrs_default
class Group(Thread): class Group(Thread):
"""Represents a Facebook group. Inherits `Thread`.""" """Represents a Facebook group. Inherits `Thread`."""

View File

@@ -1,10 +1,10 @@
import attr import attr
from ._core import Image from ._core import attrs_default, Image
from ._attachment import Attachment from ._attachment import Attachment
from . import _util from . import _util
@attr.s @attrs_default
class LocationAttachment(Attachment): class LocationAttachment(Attachment):
"""Represents a user location. """Represents a user location.
@@ -44,7 +44,7 @@ class LocationAttachment(Attachment):
) )
@attr.s @attrs_default
class LiveLocationAttachment(LocationAttachment): class LiveLocationAttachment(LocationAttachment):
"""Represents a live user location.""" """Represents a live user location."""

View File

@@ -1,7 +1,7 @@
import attr import attr
import json import json
from string import Formatter from string import Formatter
from ._core import log, Enum from ._core import log, attrs_default, Enum
from . import _util, _attachment, _location, _file, _quick_reply, _sticker from . import _util, _attachment, _location, _file, _quick_reply, _sticker
@@ -42,7 +42,7 @@ class MessageReaction(Enum):
NO = "👎" NO = "👎"
@attr.s @attrs_default
class Mention: class Mention:
"""Represents a ``@mention``.""" """Represents a ``@mention``."""
@@ -54,7 +54,7 @@ class Mention:
length = attr.ib(10) length = attr.ib(10)
@attr.s @attrs_default
class Message: class Message:
"""Represents a Facebook message.""" """Represents a Facebook message."""

View File

@@ -1,10 +1,10 @@
import attr import attr
from ._core import Image from ._core import attrs_default, Image
from . import _plan from . import _plan
from ._thread import ThreadType, Thread from ._thread import ThreadType, Thread
@attr.s @attrs_default
class Page(Thread): class Page(Thread):
"""Represents a Facebook page. Inherits `Thread`.""" """Represents a Facebook page. Inherits `Thread`."""

View File

@@ -1,6 +1,6 @@
import attr import attr
import json import json
from ._core import Enum from ._core import attrs_default, Enum
from . import _util from . import _util
@@ -10,7 +10,7 @@ class GuestStatus(Enum):
DECLINED = 3 DECLINED = 3
@attr.s @attrs_default
class Plan: class Plan:
"""Represents a plan.""" """Represents a plan."""

View File

@@ -1,7 +1,8 @@
import attr import attr
from ._core import attrs_default
@attr.s @attrs_default
class Poll: class Poll:
"""Represents a poll.""" """Represents a poll."""
@@ -24,7 +25,7 @@ class Poll:
) )
@attr.s @attrs_default
class PollOption: class PollOption:
"""Represents a poll option.""" """Represents a poll option."""

View File

@@ -1,8 +1,9 @@
import attr import attr
from ._core import attrs_default
from ._attachment import Attachment from ._attachment import Attachment
@attr.s @attrs_default
class QuickReply: class QuickReply:
"""Represents a quick reply.""" """Represents a quick reply."""
@@ -16,7 +17,7 @@ class QuickReply:
is_response = attr.ib(False) is_response = attr.ib(False)
@attr.s @attrs_default
class QuickReplyText(QuickReply): class QuickReplyText(QuickReply):
"""Represents a text quick reply.""" """Represents a text quick reply."""
@@ -28,7 +29,7 @@ class QuickReplyText(QuickReply):
_type = "text" _type = "text"
@attr.s @attrs_default
class QuickReplyLocation(QuickReply): class QuickReplyLocation(QuickReply):
"""Represents a location quick reply (Doesn't work on mobile).""" """Represents a location quick reply (Doesn't work on mobile)."""
@@ -36,7 +37,7 @@ class QuickReplyLocation(QuickReply):
_type = "location" _type = "location"
@attr.s @attrs_default
class QuickReplyPhoneNumber(QuickReply): class QuickReplyPhoneNumber(QuickReply):
"""Represents a phone number quick reply (Doesn't work on mobile).""" """Represents a phone number quick reply (Doesn't work on mobile)."""
@@ -46,7 +47,7 @@ class QuickReplyPhoneNumber(QuickReply):
_type = "user_phone_number" _type = "user_phone_number"
@attr.s @attrs_default
class QuickReplyEmail(QuickReply): class QuickReplyEmail(QuickReply):
"""Represents an email quick reply (Doesn't work on mobile).""" """Represents an email quick reply (Doesn't work on mobile)."""

View File

@@ -5,7 +5,7 @@ import requests
import random import random
import urllib.parse import urllib.parse
from ._core import log from ._core import log, attrs_default
from . import _graphql, _util, _exception from . import _graphql, _util, _exception
FB_DTSG_REGEX = re.compile(r'name="fb_dtsg" value="(.*?)"') FB_DTSG_REGEX = re.compile(r'name="fb_dtsg" value="(.*?)"')
@@ -98,7 +98,7 @@ def _2fa_helper(session, code, r):
return r return r
@attr.s(slots=True) # TODO i Python 3: Add kw_only=True @attrs_default # TODO i Python 3: Add kw_only=True
class State: class State:
"""Stores and manages state required for most Facebook requests.""" """Stores and manages state required for most Facebook requests."""

View File

@@ -1,9 +1,9 @@
import attr import attr
from ._core import Image from ._core import attrs_default, Image
from ._attachment import Attachment from ._attachment import Attachment
@attr.s @attrs_default
class Sticker(Attachment): class Sticker(Attachment):
"""Represents a Facebook sticker that has been sent to a thread as an attachment.""" """Represents a Facebook sticker that has been sent to a thread as an attachment."""

View File

@@ -1,5 +1,5 @@
import attr import attr
from ._core import Enum, Image from ._core import attrs_default, Enum, Image
class ThreadType(Enum): class ThreadType(Enum):
@@ -67,7 +67,7 @@ class ThreadColor(Enum):
return cls._extend_if_invalid(value) return cls._extend_if_invalid(value)
@attr.s @attrs_default
class Thread: class Thread:
"""Represents a Facebook thread.""" """Represents a Facebook thread."""

View File

@@ -1,5 +1,5 @@
import attr import attr
from ._core import Enum, Image from ._core import attrs_default, Enum, Image
from . import _util, _plan from . import _util, _plan
from ._thread import ThreadType, Thread from ._thread import ThreadType, Thread
@@ -41,7 +41,7 @@ class TypingStatus(Enum):
TYPING = 1 TYPING = 1
@attr.s @attrs_default
class User(Thread): class User(Thread):
"""Represents a Facebook user. Inherits `Thread`.""" """Represents a Facebook user. Inherits `Thread`."""