From 8f3913b728b0407d411f7b4a2ca4ec3ddda3abca Mon Sep 17 00:00:00 2001 From: Egor Date: Fri, 3 Jul 2020 16:29:04 +0500 Subject: [PATCH] fix: add support of type hints for factories --- tests/factories/chat.py | 7 +++++++ tests/factories/chat_member.py | 7 +++++++ tests/factories/message.py | 7 +++++++ tests/factories/user.py | 7 +++++++ 4 files changed, 28 insertions(+) diff --git a/tests/factories/chat.py b/tests/factories/chat.py index 85ce69ea..513c4dda 100644 --- a/tests/factories/chat.py +++ b/tests/factories/chat.py @@ -26,3 +26,10 @@ class ChatFactory(factory.Factory): def title(self, n): if self.type is ChatType.CHANNEL: return f"Title #{n}" + + def __new__(cls, *args, **kwargs) -> "ChatFactory.Meta.model": + """ + This is a dirty hack for correct type hints + See https://github.com/FactoryBoy/factory_boy/issues/468#issuecomment-505646794 + """ + return super().__new__(*args, **kwargs) \ No newline at end of file diff --git a/tests/factories/chat_member.py b/tests/factories/chat_member.py index f1f317df..8202faa4 100644 --- a/tests/factories/chat_member.py +++ b/tests/factories/chat_member.py @@ -11,3 +11,10 @@ class ChatMemberFactory(factory.Factory): user = factory.SubFactory(UserFactory) status = ChatMemberStatus.ADMINISTRATOR + + def __new__(cls, *args, **kwargs) -> "ChatMemberFactory.Meta.model": + """ + This is a dirty hack for correct type hints + See https://github.com/FactoryBoy/factory_boy/issues/468#issuecomment-505646794 + """ + return super().__new__(*args, **kwargs) diff --git a/tests/factories/message.py b/tests/factories/message.py index e489788f..8860c824 100644 --- a/tests/factories/message.py +++ b/tests/factories/message.py @@ -18,3 +18,10 @@ class MessageFactory(factory.Factory): text = factory.Sequence(lambda n: f"Message text #{n}") date = factory.LazyFunction(lambda _: datetime.now().toordinal()) + + def __new__(cls, *args, **kwargs) -> "MessageFactory.Meta.model": + """ + This is a dirty hack for correct type hints + See https://github.com/FactoryBoy/factory_boy/issues/468#issuecomment-505646794 + """ + return super().__new__(*args, **kwargs) diff --git a/tests/factories/user.py b/tests/factories/user.py index 51227dd2..ed074c19 100644 --- a/tests/factories/user.py +++ b/tests/factories/user.py @@ -11,3 +11,10 @@ class UserFactory(factory.Factory): id = sequences.id_ first_name = factory.Sequence(lambda n: f"First name #{n}") is_bot = False + + def __new__(cls, *args, **kwargs) -> "UserFactory.Meta.model": + """ + This is a dirty hack for correct type hints + See https://github.com/FactoryBoy/factory_boy/issues/468#issuecomment-505646794 + """ + return super().__new__(*args, **kwargs) \ No newline at end of file