diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2023-03-31 13:52:16 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2023-03-31 13:52:16 +0000 |
| commit | 90efd4480b07e2df04c3c1b3dd7917224757b64c (patch) | |
| tree | f1ce71513b1f1075da43a373f2f9068f3f372922 /test | |
| parent | cfd31fa67d622c9b1e9811dde2f1f87173ed648e (diff) | |
| parent | 671e0197b600b7b418fe7ca08d8864ea90f9a4f5 (diff) | |
| download | sqlalchemy-90efd4480b07e2df04c3c1b3dd7917224757b64c.tar.gz | |
Merge "copy deferred attributes for mapped_column" into main
Diffstat (limited to 'test')
| -rw-r--r-- | test/orm/declarative/test_tm_future_annotations_sync.py | 40 | ||||
| -rw-r--r-- | test/orm/declarative/test_typed_mapping.py | 40 |
2 files changed, 72 insertions, 8 deletions
diff --git a/test/orm/declarative/test_tm_future_annotations_sync.py b/test/orm/declarative/test_tm_future_annotations_sync.py index cd6b86e5f..d63c01679 100644 --- a/test/orm/declarative/test_tm_future_annotations_sync.py +++ b/test/orm/declarative/test_tm_future_annotations_sync.py @@ -22,6 +22,7 @@ from typing import NewType from typing import Optional from typing import Set from typing import Type +from typing import TYPE_CHECKING from typing import TypeVar from typing import Union import uuid @@ -453,8 +454,9 @@ class MappedColumnTest(fixtures.TestBase, testing.AssertsCompiledSQL): is_(User.__table__.c.data.type.__class__, Integer) @testing.combinations(True, False, argnames="include_rhs_type") + @testing.combinations(True, False, argnames="use_mixin") def test_construct_nullability_overrides( - self, decl_base, include_rhs_type + self, decl_base, include_rhs_type, use_mixin ): if include_rhs_type: @@ -487,10 +489,22 @@ class MappedColumnTest(fixtures.TestBase, testing.AssertsCompiledSQL): } ) - class User(decl_base): - __tablename__ = "users" + if TYPE_CHECKING: - id: Mapped[int] = mapped_column(primary_key=True) + class user_base: + pass + + else: + if use_mixin: + user_base = object + else: + user_base = decl_base + + class UserPossibleMixin(user_base): + if not use_mixin: + __tablename__ = "users" + + id: Mapped[int] = mapped_column(primary_key=True) # noqa: A001 lnnl_rndf: Mapped[str] = mapped_column(*args) lnnl_rnnl: Mapped[str] = mapped_column(*args, nullable=False) @@ -506,6 +520,10 @@ class MappedColumnTest(fixtures.TestBase, testing.AssertsCompiledSQL): # test #9177 cases anno_1a: Mapped[anno_str] = mapped_column(*args) anno_1b: Mapped[anno_str] = mapped_column(*args, nullable=True) + anno_1c: Mapped[anno_str] = mapped_column(*args, deferred=True) + anno_1d: Mapped[anno_str] = mapped_column( + *args, deferred=True, deferred_group="mygroup" + ) anno_2a: Mapped[anno_str_optional] = mapped_column(*args) anno_2b: Mapped[anno_str_optional] = mapped_column( @@ -538,6 +556,20 @@ class MappedColumnTest(fixtures.TestBase, testing.AssertsCompiledSQL): *args, nullable=True ) + if use_mixin: + + class User(UserPossibleMixin, decl_base): + __tablename__ = "users" + + id: Mapped[int] = mapped_column(primary_key=True) + + else: + User = UserPossibleMixin + + eq_(User.anno_1b.property.deferred, False) + eq_(User.anno_1c.property.deferred, True) + eq_(User.anno_1d.property.group, "mygroup") + is_false(User.__table__.c.lnnl_rndf.nullable) is_false(User.__table__.c.lnnl_rnnl.nullable) is_true(User.__table__.c.lnnl_rnl.nullable) diff --git a/test/orm/declarative/test_typed_mapping.py b/test/orm/declarative/test_typed_mapping.py index 98c496a81..3e34b11d3 100644 --- a/test/orm/declarative/test_typed_mapping.py +++ b/test/orm/declarative/test_typed_mapping.py @@ -13,6 +13,7 @@ from typing import NewType from typing import Optional from typing import Set from typing import Type +from typing import TYPE_CHECKING from typing import TypeVar from typing import Union import uuid @@ -444,8 +445,9 @@ class MappedColumnTest(fixtures.TestBase, testing.AssertsCompiledSQL): is_(User.__table__.c.data.type.__class__, Integer) @testing.combinations(True, False, argnames="include_rhs_type") + @testing.combinations(True, False, argnames="use_mixin") def test_construct_nullability_overrides( - self, decl_base, include_rhs_type + self, decl_base, include_rhs_type, use_mixin ): if include_rhs_type: @@ -478,10 +480,22 @@ class MappedColumnTest(fixtures.TestBase, testing.AssertsCompiledSQL): } ) - class User(decl_base): - __tablename__ = "users" + if TYPE_CHECKING: - id: Mapped[int] = mapped_column(primary_key=True) + class user_base: + pass + + else: + if use_mixin: + user_base = object + else: + user_base = decl_base + + class UserPossibleMixin(user_base): + if not use_mixin: + __tablename__ = "users" + + id: Mapped[int] = mapped_column(primary_key=True) # noqa: A001 lnnl_rndf: Mapped[str] = mapped_column(*args) lnnl_rnnl: Mapped[str] = mapped_column(*args, nullable=False) @@ -497,6 +511,10 @@ class MappedColumnTest(fixtures.TestBase, testing.AssertsCompiledSQL): # test #9177 cases anno_1a: Mapped[anno_str] = mapped_column(*args) anno_1b: Mapped[anno_str] = mapped_column(*args, nullable=True) + anno_1c: Mapped[anno_str] = mapped_column(*args, deferred=True) + anno_1d: Mapped[anno_str] = mapped_column( + *args, deferred=True, deferred_group="mygroup" + ) anno_2a: Mapped[anno_str_optional] = mapped_column(*args) anno_2b: Mapped[anno_str_optional] = mapped_column( @@ -529,6 +547,20 @@ class MappedColumnTest(fixtures.TestBase, testing.AssertsCompiledSQL): *args, nullable=True ) + if use_mixin: + + class User(UserPossibleMixin, decl_base): + __tablename__ = "users" + + id: Mapped[int] = mapped_column(primary_key=True) + + else: + User = UserPossibleMixin + + eq_(User.anno_1b.property.deferred, False) + eq_(User.anno_1c.property.deferred, True) + eq_(User.anno_1d.property.group, "mygroup") + is_false(User.__table__.c.lnnl_rndf.nullable) is_false(User.__table__.c.lnnl_rnnl.nullable) is_true(User.__table__.c.lnnl_rnl.nullable) |
