diff options
author | mike bayer <mike_mp@zzzcomputing.com> | 2022-05-16 02:32:44 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@ci3.zzzcomputing.com> | 2022-05-16 02:32:44 +0000 |
commit | 5d080d17464712d33c0215d12513e529d848ee8c (patch) | |
tree | eec56f3138a48f55f2585a64f01b4fd9c14451b7 /lib/sqlalchemy/orm/loading.py | |
parent | c4dad3695f4ab9fef3a4cb05893492afbec811f7 (diff) | |
parent | 18a73fb1d1c267842ead5dacd05a49f4344d8b22 (diff) | |
download | sqlalchemy-5d080d17464712d33c0215d12513e529d848ee8c.tar.gz |
Merge "revenge of pep 484" into main
Diffstat (limited to 'lib/sqlalchemy/orm/loading.py')
-rw-r--r-- | lib/sqlalchemy/orm/loading.py | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/sqlalchemy/orm/loading.py b/lib/sqlalchemy/orm/loading.py index 75887367e..1a5ea5fe6 100644 --- a/lib/sqlalchemy/orm/loading.py +++ b/lib/sqlalchemy/orm/loading.py @@ -54,11 +54,15 @@ from ..sql.selectable import SelectState if TYPE_CHECKING: from ._typing import _IdentityKeyType from .base import LoaderCallableStatus + from .context import QueryContext from .interfaces import ORMOption from .mapper import Mapper + from .query import Query from .session import Session from .state import InstanceState + from ..engine.cursor import CursorResult from ..engine.interfaces import _ExecuteOptions + from ..engine.result import Result from ..sql import Select _T = TypeVar("_T", bound=Any) @@ -69,7 +73,7 @@ _new_runid = util.counter() _PopulatorDict = Dict[str, List[Tuple[str, Any]]] -def instances(cursor, context): +def instances(cursor: CursorResult[Any], context: QueryContext) -> Result[Any]: """Return a :class:`.Result` given an ORM query context. :param cursor: a :class:`.CursorResult`, generated by a statement @@ -152,7 +156,7 @@ def instances(cursor, context): unique_filters = [ _no_unique if context.yield_per - else _not_hashable(ent.column.type) + else _not_hashable(ent.column.type) # type: ignore if (not ent.use_id_for_hash and ent._non_hashable_value) else id if ent.use_id_for_hash @@ -164,7 +168,7 @@ def instances(cursor, context): labels, extra, _unique_filters=unique_filters ) - def chunks(size): + def chunks(size): # type: ignore while True: yield_per = size @@ -302,7 +306,11 @@ def merge_frozen_result(session, statement, frozen_result, load=True): "is superseded by the :func:`_orm.merge_frozen_result` function.", ) @util.preload_module("sqlalchemy.orm.context") -def merge_result(query, iterator, load=True): +def merge_result( + query: Query[Any], + iterator: Union[FrozenResult, Iterable[Sequence[Any]], Iterable[object]], + load: bool = True, +) -> Union[FrozenResult, Iterable[Any]]: """Merge a result into the given :class:`.Query` object's Session. See :meth:`_orm.Query.merge_result` for top-level documentation on this @@ -375,7 +383,7 @@ def merge_result(query, iterator, load=True): result.append(keyed_tuple(newrow)) if frozen_result: - return frozen_result.with_data(result) + return frozen_result.with_new_rows(result) else: return iter(result) finally: |