summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2022-07-23 10:07:58 -0400
committermike bayer <mike_mp@zzzcomputing.com>2022-07-23 21:59:03 +0000
commit210ad24cc938865539808e2359b7942d55893978 (patch)
tree533b6bcbafbe2679d86b5b024a116ab5b82ab051 /lib/sqlalchemy
parent4fe222d9412df30fc15ace3d7a7fd4365eb9e05a (diff)
downloadsqlalchemy-210ad24cc938865539808e2359b7942d55893978.tar.gz
set up Literal for synchronize_session
Fixes: #8280 Change-Id: I59bc6cc0483375f79e17952188e0c2cde926502c
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/persistence.py4
-rw-r--r--lib/sqlalchemy/orm/query.py7
2 files changed, 9 insertions, 2 deletions
diff --git a/lib/sqlalchemy/orm/persistence.py b/lib/sqlalchemy/orm/persistence.py
index 0c035e7cf..c10f4701e 100644
--- a/lib/sqlalchemy/orm/persistence.py
+++ b/lib/sqlalchemy/orm/persistence.py
@@ -55,6 +55,7 @@ from ..sql.dml import InsertDMLState
from ..sql.dml import UpdateDMLState
from ..sql.elements import BooleanClauseList
from ..sql.selectable import LABEL_STYLE_TABLENAME_PLUS_COL
+from ..util.typing import Literal
if TYPE_CHECKING:
from .mapper import Mapper
@@ -65,6 +66,9 @@ if TYPE_CHECKING:
_O = TypeVar("_O", bound=object)
+_SynchronizeSessionArgument = Literal[False, "evaluate", "fetch"]
+
+
def _bulk_insert(
mapper: Mapper[_O],
mappings: Union[Iterable[InstanceState[_O]], Iterable[Dict[str, Any]]],
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index a29e368b6..99131e3e9 100644
--- a/lib/sqlalchemy/orm/query.py
+++ b/lib/sqlalchemy/orm/query.py
@@ -99,6 +99,7 @@ if TYPE_CHECKING:
from ._typing import _InternalEntityType
from .mapper import Mapper
from .path_registry import PathRegistry
+ from .persistence import _SynchronizeSessionArgument
from .session import _PKIdentityArgument
from .session import Session
from .state import InstanceState
@@ -2969,7 +2970,9 @@ class Query(
self._legacy_from_self(col).enable_eagerloads(False).scalar()
)
- def delete(self, synchronize_session: str = "evaluate") -> int:
+ def delete(
+ self, synchronize_session: _SynchronizeSessionArgument = "evaluate"
+ ) -> int:
r"""Perform a DELETE with an arbitrary WHERE clause.
Deletes rows matched by this query from the database.
@@ -3030,7 +3033,7 @@ class Query(
def update(
self,
values: Dict[_DMLColumnArgument, Any],
- synchronize_session: str = "evaluate",
+ synchronize_session: _SynchronizeSessionArgument = "evaluate",
update_args: Optional[Dict[Any, Any]] = None,
) -> int:
r"""Perform an UPDATE with an arbitrary WHERE clause.