summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2023-02-26 15:34:57 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2023-02-26 20:09:07 -0500
commit3b8123965bca6b854ccdeca79713b27136233d9a (patch)
treee39e4595e54f96667a68b9f277ad61fd81160c9b /lib/sqlalchemy/sql
parent16d3dad4490fc4915096b7963f21e6b591b15ba7 (diff)
downloadsqlalchemy-3b8123965bca6b854ccdeca79713b27136233d9a.tar.gz
use read-only Mapping for values dictionary type
Improved typing for the mapping passed to :meth:`.UpdateBase.values` to be more open-ended about collection type, by indicating read-only ``Mapping`` instead of writeable ``Dict``, the latter of which would error out under typing tools on too limited of a key type. Fixes: #9376 Change-Id: Ib7fdbba05ca7e1082409e1b5616e6a010262f032
Diffstat (limited to 'lib/sqlalchemy/sql')
-rw-r--r--lib/sqlalchemy/sql/_typing.py4
-rw-r--r--lib/sqlalchemy/sql/dml.py3
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/sqlalchemy/sql/_typing.py b/lib/sqlalchemy/sql/_typing.py
index 6bf9a5a1f..a828d6a0f 100644
--- a/lib/sqlalchemy/sql/_typing.py
+++ b/lib/sqlalchemy/sql/_typing.py
@@ -11,6 +11,7 @@ import operator
from typing import Any
from typing import Callable
from typing import Dict
+from typing import Mapping
from typing import Set
from typing import Tuple
from typing import Type
@@ -238,6 +239,9 @@ the DMLColumnRole to be able to accommodate.
"""
+_DMLKey = TypeVar("_DMLKey", bound=_DMLColumnArgument)
+_DMLColumnKeyMapping = Mapping[_DMLKey, Any]
+
_DDLColumnArgument = Union[str, "Column[Any]", roles.DDLConstraintColumnRole]
"""DDL column.
diff --git a/lib/sqlalchemy/sql/dml.py b/lib/sqlalchemy/sql/dml.py
index 9042fdff7..dbbf09f1b 100644
--- a/lib/sqlalchemy/sql/dml.py
+++ b/lib/sqlalchemy/sql/dml.py
@@ -72,6 +72,7 @@ if TYPE_CHECKING:
from ._typing import _ColumnExpressionArgument
from ._typing import _ColumnsClauseArgument
from ._typing import _DMLColumnArgument
+ from ._typing import _DMLColumnKeyMapping
from ._typing import _DMLTableArgument
from ._typing import _T0 # noqa
from ._typing import _T1 # noqa
@@ -944,7 +945,7 @@ class ValuesBase(UpdateBase):
def values(
self,
*args: Union[
- Dict[_DMLColumnArgument, Any],
+ _DMLColumnKeyMapping[Any],
Sequence[Any],
],
**kwargs: Any,