Skip to content

Commit 2f05949

Browse files
authored
Merge pull request #196 from expobrain/remove_bidirectional_unused_argument
Removed bidirectional keyword and simplified code
2 parents 3aa7b7a + fbcd190 commit 2f05949

File tree

2 files changed

+7
-32
lines changed

2 files changed

+7
-32
lines changed

sqlalchemy_to_json_schema/schema_factory.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,8 @@ def overrides(self, basedict: dict[str, Any], /) -> None:
212212

213213

214214
class ChildFactory:
215-
def __init__(self, *, splitter: str = ".", bidirectional: bool = False) -> None:
215+
def __init__(self, *, splitter: str = ".") -> None:
216216
self.splitter = splitter
217-
self.bidirectional = bidirectional
218217

219218
def default_excludes(self, prop: MapperProperty, /) -> list[str]:
220219
nullable_excludes = [
@@ -243,12 +242,13 @@ def child_walker(
243242
history: Any | None = None,
244243
) -> AbstractWalker:
245244
name = prop.key
245+
includes = get_children(name, walker.includes, splitter=self.splitter)
246246
excludes = get_children(name, walker.includes, splitter=self.splitter, default=[])
247-
if not self.bidirectional:
248-
if excludes is None:
249-
raise RuntimeError("excludes is None")
247+
248+
if excludes is None:
249+
excludes = self.default_excludes(prop)
250+
else:
250251
excludes.extend(self.default_excludes(prop))
251-
includes = get_children(name, walker.includes, splitter=self.splitter)
252252

253253
return walker.clone(
254254
name,

tests/test_relation.py

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,7 @@
99
from sqlalchemy.orm import Mapped, declarative_base
1010

1111
from sqlalchemy_to_json_schema.decisions import UseForeignKeyIfPossibleDecision
12-
from sqlalchemy_to_json_schema.schema_factory import (
13-
ChildFactory,
14-
RelationDecision,
15-
SchemaFactory,
16-
)
12+
from sqlalchemy_to_json_schema.schema_factory import RelationDecision, SchemaFactory
1713
from sqlalchemy_to_json_schema.walkers import (
1814
AbstractWalker,
1915
ForeignKeyWalker,
@@ -102,27 +98,6 @@ def test_properties__include_ManytoOne_backref() -> None:
10298
}
10399

104100

105-
def test_properties__include_ManytoOne_backref__bidirectional_is_true() -> None:
106-
target = _makeOne(StructuralWalker, child_factory=ChildFactory(bidirectional=True))
107-
result = target(Group)
108-
109-
assert "required" in result
110-
assert list(sorted(result["properties"])) == ["name", "pk", "users"]
111-
assert result["properties"]["users"] == {
112-
"type": "array",
113-
"items": {"$ref": "#/definitions/User"},
114-
}
115-
assert result["definitions"]["User"] == {
116-
"type": "object",
117-
"required": ["pk"],
118-
"properties": {
119-
"name": {"maxLength": 255, "type": "string"},
120-
"group": {"$ref": "#/definitions/Group"},
121-
"pk": {"description": "primary key", "type": "integer"},
122-
},
123-
}
124-
125-
126101
# depth
127102
class A0(Base):
128103
__tablename__ = "A0"

0 commit comments

Comments
 (0)