update changelog, add lazy= to parent_children()

This commit is contained in:
Yusur 2025-08-23 14:54:58 +02:00
parent ddb28d089c
commit a66f591997
2 changed files with 9 additions and 4 deletions

View file

@ -4,6 +4,11 @@
👀
## 0.3.8
- Fixed return types for `.sqlalchemy` module.
- `sqlalchemy.parent_children()` now takes a `lazy` parameter. Backported from 0.5.0.
## 0.3.7
- Fixed a bug in `b64decode()` padding handling which made the function inconsistent and non injective. Now, leading `'A'` is NEVER stripped.

View file

@ -21,7 +21,7 @@ from functools import wraps
from typing import Callable, Iterable, Never, TypeVar
import warnings
from sqlalchemy import BigInteger, CheckConstraint, Date, Dialect, ForeignKey, LargeBinary, Column, MetaData, SmallInteger, String, create_engine, select, text
from sqlalchemy.orm import DeclarativeBase, Session, declarative_base as _declarative_base, relationship
from sqlalchemy.orm import DeclarativeBase, Relationship, Session, declarative_base as _declarative_base, relationship
from .snowflake import SnowflakeGen
from .itertools import kwargs_prefix, makelist
@ -194,7 +194,7 @@ def age_pair(*, nullable: bool = False, **ka) -> tuple[Column, Column]:
return (date_col, acc_col)
def parent_children(keyword: str, /, **kwargs):
def parent_children(keyword: str, /, lazy='selectin', **kwargs) -> tuple[Incomplete[Relationship], Incomplete[Relationship]]:
"""
Self-referential one-to-many relationship pair.
Parent comes first, children come later.
@ -209,8 +209,8 @@ def parent_children(keyword: str, /, **kwargs):
parent_kwargs = kwargs_prefix(kwargs, 'parent_')
child_kwargs = kwargs_prefix(kwargs, 'child_')
parent = Incomplete(relationship, Wanted(lambda o, n: o.__name__), back_populates=f'child_{keyword}s', **parent_kwargs)
child = Incomplete(relationship, Wanted(lambda o, n: o.__name__), back_populates=f'parent_{keyword}', **child_kwargs)
parent = Incomplete(relationship, Wanted(lambda o, n: o.__name__), back_populates=f'child_{keyword}s', lazy=lazy, **parent_kwargs)
child = Incomplete(relationship, Wanted(lambda o, n: o.__name__), back_populates=f'parent_{keyword}', lazy=lazy, **child_kwargs)
return parent, child