summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/orm/loading.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/orm/loading.py')
-rw-r--r--lib/sqlalchemy/orm/loading.py18
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: