stubs/sqlalchemy/orm/session.pyi (153 lines of code) (raw):
from typing import Any, Optional, Type, TypeVar, Union, overload
from sqlalchemy import Column
from sqlalchemy.orm.query import Query
class _SessionClassMethods(object):
    @classmethod
    def close_all(cls): ...
    @classmethod
    def identity_key(cls, *args, **kwargs): ...
    @classmethod
    def object_session(cls, instance): ...
class SessionTransaction(object):
    session: Any = ...
    nested: Any = ...
    def __init__(
        self, session, parent: Optional[Any] = ..., nested: bool = ...
    ) -> None: ...
    @property
    def parent(self): ...
    @property
    def is_active(self): ...
    def connection(self, bindkey, execution_options: Optional[Any] = ..., **kwargs): ...
    def prepare(self): ...
    def commit(self): ...
    def rollback(self, _capture_exception: bool = ...): ...
    def close(self, invalidate: bool = ...): ...
    def __enter__(self): ...
    def __exit__(self, type, value, traceback): ...
_T = TypeVar("_T")
class Session(_SessionClassMethods):
    public_methods: Any = ...
    identity_map: Any = ...
    bind: Any = ...
    transaction: Any = ...
    hash_key: Any = ...
    autoflush: Any = ...
    autocommit: Any = ...
    expire_on_commit: Any = ...
    twophase: Any = ...
    def __init__(
        self,
        bind: Optional[Any] = ...,
        autoflush: bool = ...,
        expire_on_commit: bool = ...,
        _enable_transaction_accounting: bool = ...,
        autocommit: bool = ...,
        twophase: bool = ...,
        weak_identity_map: bool = ...,
        binds: Optional[Any] = ...,
        extension: Optional[Any] = ...,
        info: Optional[Any] = ...,
        query_cls: Any = ...,
    ) -> None: ...
    connection_callable: Any = ...
    @property
    def info(self): ...
    def begin(
        self, subtransactions: bool = ..., nested: bool = ...
    ) -> SessionTransaction: ...
    def begin_nested(self) -> SessionTransaction: ...
    def rollback(self): ...
    def commit(self): ...
    def prepare(self): ...
    def connection(
        self,
        mapper: Optional[Any] = ...,
        clause: Optional[Any] = ...,
        bind: Optional[Any] = ...,
        close_with_result: bool = ...,
        execution_options: Optional[Any] = ...,
        **kw
    ): ...
    def execute(
        self,
        clause,
        params: Optional[Any] = ...,
        mapper: Optional[Any] = ...,
        bind: Optional[Any] = ...,
        **kw
    ): ...
    def scalar(
        self,
        clause,
        params: Optional[Any] = ...,
        mapper: Optional[Any] = ...,
        bind: Optional[Any] = ...,
        **kw
    ): ...
    def close(self): ...
    def invalidate(self): ...
    def expunge_all(self): ...
    def bind_mapper(self, mapper, bind): ...
    def bind_table(self, table, bind): ...
    def get_bind(self, mapper: Optional[Any] = ..., clause: Optional[Any] = ...): ...
    @overload
    def query(self, entity: Union[Type[_T], Column[_T]], **kwargs) -> Query[_T]: ...
    @overload
    def query(self, *entities, **kwargs) -> Query: ...
    @property
    def no_autoflush(self): ...
    def refresh(
        self,
        instance,
        attribute_names: Optional[Any] = ...,
        lockmode: Optional[Any] = ...,
    ): ...
    def expire_all(self): ...
    def expire(self, instance, attribute_names: Optional[Any] = ...): ...
    def prune(self): ...
    def expunge(self, instance): ...
    def add(self, instance, _warn: bool = ...): ...
    def add_all(self, instances): ...
    def delete(self, instance): ...
    def merge(self, instance, load: bool = ...): ...
    def enable_relationship_loading(self, obj): ...
    def __contains__(self, instance): ...
    def __iter__(self): ...
    def flush(self, objects: Optional[Any] = ...): ...
    def bulk_save_objects(
        self, objects, return_defaults: bool = ..., update_changed_only: bool = ...
    ): ...
    def bulk_insert_mappings(
        self, mapper, mappings, return_defaults: bool = ..., render_nulls: bool = ...
    ): ...
    def bulk_update_mappings(self, mapper, mappings): ...
    def is_modified(
        self, instance, include_collections: bool = ..., passive: bool = ...
    ): ...
    @property
    def is_active(self): ...
    @property
    def dirty(self): ...
    @property
    def deleted(self): ...
    @property
    def new(self): ...
class sessionmaker(_SessionClassMethods):
    kw: Any = ...
    class_: Any = ...
    def __init__(
        self,
        bind: Optional[Any] = ...,
        class_: Any = ...,
        autoflush: bool = ...,
        autocommit: bool = ...,
        expire_on_commit: bool = ...,
        info: Optional[Any] = ...,
        **kw
    ) -> None: ...
    def __call__(self, **local_kw): ...
    def configure(self, **new_kw): ...
def make_transient(instance) -> None: ...
def make_transient_to_detached(instance) -> None: ...
def object_session(instance): ...