From 1fbedd7df17c2b123c64cf6cd17898ef2663bedb Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Wed, 5 Feb 2025 16:31:35 -0400 Subject: [PATCH] chore: typing fixes for factory-boy 3.3.3 (#8501) * chore: typing fixes for factory-boy 3.3.3 * chore: more comments --- ietf/doc/factories.py | 13 ++++++++----- ietf/ipr/tests.py | 2 +- ietf/meeting/tests_views.py | 3 ++- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/ietf/doc/factories.py b/ietf/doc/factories.py index 50fba50c4..19aa9ecc9 100644 --- a/ietf/doc/factories.py +++ b/ietf/doc/factories.py @@ -7,7 +7,7 @@ import factory import factory.fuzzy import datetime -from typing import Optional # pyflakes:ignore +from typing import Any # pyflakes:ignore from django.conf import settings from django.utils import timezone @@ -37,13 +37,16 @@ class BaseDocumentFactory(factory.django.DjangoModelFactory): model = Document skip_postgeneration_save = True + # n.b., a few attributes are typed as Any so mypy won't complain when we override in subclasses title = factory.Faker('sentence',nb_words=5) - abstract = factory.Faker('paragraph', nb_sentences=5) + abstract: Any = factory.Faker('paragraph', nb_sentences=5) rev = '00' - std_level_id = None # type: Optional[str] + std_level_id: Any = None intended_std_level_id = None time = timezone.now() - expires = factory.LazyAttribute(lambda o: o.time+datetime.timedelta(days=settings.INTERNET_DRAFT_DAYS_TO_EXPIRE)) + expires: Any = factory.LazyAttribute( + lambda o: o.time+datetime.timedelta(days=settings.INTERNET_DRAFT_DAYS_TO_EXPIRE) + ) pages = factory.fuzzy.FuzzyInteger(2,400) @@ -282,7 +285,7 @@ class DocEventFactory(factory.django.DjangoModelFactory): type = 'added_comment' by = factory.SubFactory('ietf.person.factories.PersonFactory') - doc = factory.SubFactory(DocumentFactory) + doc: Any = factory.SubFactory(DocumentFactory) # `Any` to appease mypy when a subclass overrides doc desc = factory.Faker('sentence',nb_words=6) @factory.lazy_attribute diff --git a/ietf/ipr/tests.py b/ietf/ipr/tests.py index beb4d7fc1..e0d00b5d1 100644 --- a/ietf/ipr/tests.py +++ b/ietf/ipr/tests.py @@ -726,7 +726,7 @@ I would like to revoke this declaration. self.assertIn(f'{settings.IDTRACKER_BASE_URL}{urlreverse("ietf.ipr.views.showlist")}', get_payload_text(outbox[1]).replace('\n',' ')) def send_ipr_email_helper(self) -> tuple[str, IprEvent, HolderIprDisclosure]: - ipr = HolderIprDisclosureFactory() + ipr = HolderIprDisclosureFactory.create() # call create() explicitly so mypy sees correct type url = urlreverse('ietf.ipr.views.email',kwargs={ "id": ipr.id }) self.client.login(username="secretary", password="secretary+password") yesterday = date_today() - datetime.timedelta(1) diff --git a/ietf/meeting/tests_views.py b/ietf/meeting/tests_views.py index 3e948f838..94f06dc89 100644 --- a/ietf/meeting/tests_views.py +++ b/ietf/meeting/tests_views.py @@ -2124,7 +2124,8 @@ class EditTimeslotsTests(TestCase): @staticmethod def create_bare_meeting(number=120) -> Meeting: """Create a basic IETF meeting""" - return MeetingFactory( + # Call create() explicitly so mypy sees the correct type + return MeetingFactory.create( type_id='ietf', number=number, date=date_today() + datetime.timedelta(days=10),