From 5f1988b55e68c203c9ab4718562577673326d4d8 Mon Sep 17 00:00:00 2001 From: Bedram Tamang Date: Sat, 20 Jun 2026 02:27:38 -0700 Subject: [PATCH 1/2] feat(masoniteorm): re-export all relationship classes from package root MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Re-export the full set of public relationship classes (including MorphMany, MorphOne, MorphToMany, and BaseRelationship) from fastapi_startkit.masoniteorm so they can be imported directly from the package root instead of the .relationships submodule. Switch in-repo example models, fixtures, and tests to the root import. Pure re-export — no behavior change. --- example/database-app/app/models/category.py | 2 +- example/database-app/app/models/course.py | 2 +- example/database-app/app/models/lesson.py | 2 +- example/database-app/app/models/profile.py | 2 +- example/database-app/app/models/review.py | 2 +- example/database-app/app/models/user.py | 2 +- .../fastapi_startkit/masoniteorm/__init__.py | 18 ++++++++++++- .../tests/masoniteorm/fixtures/model.py | 2 +- .../sqlite/models/test_attach_detach.py | 2 +- .../test_relationship_reexports.py | 25 +++++++++++++++++++ 10 files changed, 50 insertions(+), 9 deletions(-) create mode 100644 fastapi_startkit/tests/masoniteorm/test_relationship_reexports.py diff --git a/example/database-app/app/models/category.py b/example/database-app/app/models/category.py index 29655e70..76af5966 100644 --- a/example/database-app/app/models/category.py +++ b/example/database-app/app/models/category.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING from fastapi_startkit.masoniteorm.models import Model -from fastapi_startkit.masoniteorm.relationships import HasMany, HasManyThrough +from fastapi_startkit.masoniteorm import HasMany, HasManyThrough if TYPE_CHECKING: from app.models.course import Course diff --git a/example/database-app/app/models/course.py b/example/database-app/app/models/course.py index 7b31a9a6..9f030a09 100644 --- a/example/database-app/app/models/course.py +++ b/example/database-app/app/models/course.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING from fastapi_startkit.masoniteorm.models import Model -from fastapi_startkit.masoniteorm.relationships import BelongsTo, HasMany, BelongsToMany, MorphMany +from fastapi_startkit.masoniteorm import BelongsTo, HasMany, BelongsToMany, MorphMany if TYPE_CHECKING: from app.models.category import Category diff --git a/example/database-app/app/models/lesson.py b/example/database-app/app/models/lesson.py index c5540bf2..e507d16e 100644 --- a/example/database-app/app/models/lesson.py +++ b/example/database-app/app/models/lesson.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING from fastapi_startkit.masoniteorm.models import Model -from fastapi_startkit.masoniteorm.relationships import BelongsTo, MorphMany +from fastapi_startkit.masoniteorm import BelongsTo, MorphMany if TYPE_CHECKING: from app.models.course import Course diff --git a/example/database-app/app/models/profile.py b/example/database-app/app/models/profile.py index 5a6088fe..11fa8a7a 100644 --- a/example/database-app/app/models/profile.py +++ b/example/database-app/app/models/profile.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING from fastapi_startkit.masoniteorm.models import Model -from fastapi_startkit.masoniteorm.relationships import BelongsTo +from fastapi_startkit.masoniteorm import BelongsTo if TYPE_CHECKING: from app.models.user import User diff --git a/example/database-app/app/models/review.py b/example/database-app/app/models/review.py index f36f2738..2d19021f 100644 --- a/example/database-app/app/models/review.py +++ b/example/database-app/app/models/review.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING from fastapi_startkit.masoniteorm.models import Model -from fastapi_startkit.masoniteorm.relationships import MorphTo +from fastapi_startkit.masoniteorm import MorphTo class Review(Model): __table__ = "reviews" diff --git a/example/database-app/app/models/user.py b/example/database-app/app/models/user.py index 81107cee..c31152c7 100644 --- a/example/database-app/app/models/user.py +++ b/example/database-app/app/models/user.py @@ -1,7 +1,7 @@ from typing import TYPE_CHECKING from fastapi_startkit.masoniteorm.models import Model -from fastapi_startkit.masoniteorm.relationships import HasMany, HasOne, BelongsToMany +from fastapi_startkit.masoniteorm import HasMany, HasOne, BelongsToMany if TYPE_CHECKING: from app.models.profile import Profile diff --git a/fastapi_startkit/src/fastapi_startkit/masoniteorm/__init__.py b/fastapi_startkit/src/fastapi_startkit/masoniteorm/__init__.py index 3f3a0613..4b6ab996 100644 --- a/fastapi_startkit/src/fastapi_startkit/masoniteorm/__init__.py +++ b/fastapi_startkit/src/fastapi_startkit/masoniteorm/__init__.py @@ -7,7 +7,19 @@ from .models import Model from .models.fields import CreatedAtField, DateTimeField, Field, ModelField, UpdatedAtField from .providers import DatabaseProvider -from .relationships import BelongsTo, BelongsToMany, HasMany, HasManyThrough, HasOne, HasOneThrough, MorphTo +from .relationships import ( + BaseRelationship, + BelongsTo, + BelongsToMany, + HasMany, + HasManyThrough, + HasOne, + HasOneThrough, + MorphMany, + MorphOne, + MorphTo, + MorphToMany, +) __all__ = [ "DatabaseProvider", @@ -26,6 +38,7 @@ "UpdatedAtField", "Field", # Relationships + "BaseRelationship", "HasOne", "BelongsTo", "HasMany", @@ -33,4 +46,7 @@ "BelongsToMany", "HasOneThrough", "MorphTo", + "MorphMany", + "MorphOne", + "MorphToMany", ] diff --git a/fastapi_startkit/tests/masoniteorm/fixtures/model.py b/fastapi_startkit/tests/masoniteorm/fixtures/model.py index 167343f4..5abbc181 100644 --- a/fastapi_startkit/tests/masoniteorm/fixtures/model.py +++ b/fastapi_startkit/tests/masoniteorm/fixtures/model.py @@ -3,7 +3,7 @@ from fastapi_startkit.carbon.carbon import Carbon from tests.masoniteorm.fixtures.casts import Address from fastapi_startkit.masoniteorm import ModelField, Field -from fastapi_startkit.masoniteorm.relationships import ( +from fastapi_startkit.masoniteorm import ( HasOne, BelongsTo, HasMany, diff --git a/fastapi_startkit/tests/masoniteorm/sqlite/models/test_attach_detach.py b/fastapi_startkit/tests/masoniteorm/sqlite/models/test_attach_detach.py index 1aaed80a..0e6efe60 100644 --- a/fastapi_startkit/tests/masoniteorm/sqlite/models/test_attach_detach.py +++ b/fastapi_startkit/tests/masoniteorm/sqlite/models/test_attach_detach.py @@ -1,5 +1,5 @@ from fastapi_startkit.masoniteorm.models.model import Model -from fastapi_startkit.masoniteorm.relationships import HasOne, BelongsTo +from fastapi_startkit.masoniteorm import HasOne, BelongsTo from ..test_case import TestCase diff --git a/fastapi_startkit/tests/masoniteorm/test_relationship_reexports.py b/fastapi_startkit/tests/masoniteorm/test_relationship_reexports.py new file mode 100644 index 00000000..3e891694 --- /dev/null +++ b/fastapi_startkit/tests/masoniteorm/test_relationship_reexports.py @@ -0,0 +1,25 @@ +import fastapi_startkit.masoniteorm as orm +from fastapi_startkit.masoniteorm import relationships + +RELATIONSHIP_CLASSES = [ + "BaseRelationship", + "BelongsTo", + "BelongsToMany", + "HasMany", + "HasManyThrough", + "HasOne", + "HasOneThrough", + "MorphMany", + "MorphOne", + "MorphTo", + "MorphToMany", +] + + +def test_relationship_classes_are_reexported_from_root(): + for name in RELATIONSHIP_CLASSES: + assert hasattr(orm, name), f"{name} is not re-exported from fastapi_startkit.masoniteorm" + assert name in orm.__all__, f"{name} missing from fastapi_startkit.masoniteorm.__all__" + assert getattr(orm, name) is getattr(relationships, name), ( + f"{name} re-export is not the same class object as in .relationships" + ) From 61a13db76f758e72ea8945ca004c4f8dbad9468d Mon Sep 17 00:00:00 2001 From: Bedram Tamang Date: Sat, 20 Jun 2026 09:35:27 -0700 Subject: [PATCH 2/2] test(masoniteorm): drop relationship re-export test --- .../test_relationship_reexports.py | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 fastapi_startkit/tests/masoniteorm/test_relationship_reexports.py diff --git a/fastapi_startkit/tests/masoniteorm/test_relationship_reexports.py b/fastapi_startkit/tests/masoniteorm/test_relationship_reexports.py deleted file mode 100644 index 3e891694..00000000 --- a/fastapi_startkit/tests/masoniteorm/test_relationship_reexports.py +++ /dev/null @@ -1,25 +0,0 @@ -import fastapi_startkit.masoniteorm as orm -from fastapi_startkit.masoniteorm import relationships - -RELATIONSHIP_CLASSES = [ - "BaseRelationship", - "BelongsTo", - "BelongsToMany", - "HasMany", - "HasManyThrough", - "HasOne", - "HasOneThrough", - "MorphMany", - "MorphOne", - "MorphTo", - "MorphToMany", -] - - -def test_relationship_classes_are_reexported_from_root(): - for name in RELATIONSHIP_CLASSES: - assert hasattr(orm, name), f"{name} is not re-exported from fastapi_startkit.masoniteorm" - assert name in orm.__all__, f"{name} missing from fastapi_startkit.masoniteorm.__all__" - assert getattr(orm, name) is getattr(relationships, name), ( - f"{name} re-export is not the same class object as in .relationships" - )