From 56f1dd9cec203910b75d73b0a8dbb4c9e6559f88 Mon Sep 17 00:00:00 2001 From: Viicos <65306057+Viicos@users.noreply.github.com> Date: Tue, 6 Feb 2024 18:35:48 +0100 Subject: [PATCH] Add missing generic on `Factory` subclasses --- factory/alchemy.py | 6 +++++- factory/base.py | 10 +++++----- factory/mogo.py | 5 +++-- factory/mongoengine.py | 5 +++-- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/factory/alchemy.py b/factory/alchemy.py index f934ce5d..42bd2bbf 100644 --- a/factory/alchemy.py +++ b/factory/alchemy.py @@ -1,10 +1,14 @@ # Copyright: See the LICENSE file. +from typing import TypeVar + from sqlalchemy.exc import IntegrityError from sqlalchemy.orm.exc import NoResultFound from . import base, errors +T = TypeVar("T") + SESSION_PERSISTENCE_COMMIT = 'commit' SESSION_PERSISTENCE_FLUSH = 'flush' VALID_SESSION_PERSISTENCE_TYPES = [ @@ -46,7 +50,7 @@ def _build_default_options(self): ] -class SQLAlchemyModelFactory(base.Factory): +class SQLAlchemyModelFactory(base.Factory[T]): """Factory for SQLAlchemy models. """ _options_class = SQLAlchemyOptions diff --git a/factory/base.py b/factory/base.py index 8d499501..f28f587c 100644 --- a/factory/base.py +++ b/factory/base.py @@ -656,7 +656,7 @@ def __init__(self, **kwargs): setattr(self, field, value) -class StubFactory(Factory): +class StubFactory(Factory[T]): class Meta: strategy = enums.STUB_STRATEGY @@ -671,7 +671,7 @@ def create(cls, **kwargs): raise errors.UnsupportedStrategy() -class BaseDictFactory(Factory): +class BaseDictFactory(Factory[T]): """Factory for dictionary-like classes.""" class Meta: abstract = True @@ -688,12 +688,12 @@ def _create(cls, model_class, *args, **kwargs): return cls._build(model_class, *args, **kwargs) -class DictFactory(BaseDictFactory): +class DictFactory(BaseDictFactory[T]): class Meta: model = dict -class BaseListFactory(Factory): +class BaseListFactory(Factory[T]): """Factory for list-like classes.""" class Meta: abstract = True @@ -714,7 +714,7 @@ def _create(cls, model_class, *args, **kwargs): return cls._build(model_class, *args, **kwargs) -class ListFactory(BaseListFactory): +class ListFactory(BaseListFactory[T]): class Meta: model = list diff --git a/factory/mogo.py b/factory/mogo.py index f886ae14..8885d0aa 100644 --- a/factory/mogo.py +++ b/factory/mogo.py @@ -2,12 +2,13 @@ """factory_boy extensions for use with the mogo library (pymongo wrapper).""" - +from typing import TypeVar from . import base +T = TypeVar("T") -class MogoFactory(base.Factory): +class MogoFactory(base.Factory[T]): """Factory for mogo objects.""" class Meta: abstract = True diff --git a/factory/mongoengine.py b/factory/mongoengine.py index eb4a8dc5..e585b70a 100644 --- a/factory/mongoengine.py +++ b/factory/mongoengine.py @@ -2,12 +2,13 @@ """factory_boy extensions for use with the mongoengine library (pymongo wrapper).""" - +from typing import TypeVar from . import base +T = TypeVar("T") -class MongoEngineFactory(base.Factory): +class MongoEngineFactory(base.Factory[T]): """Factory for mongoengine objects.""" class Meta: