]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Merge "implement column._merge()" into main
authormike bayer <mike_mp@zzzcomputing.com>
Sun, 17 Jul 2022 01:14:39 +0000 (01:14 +0000)
committerGerrit Code Review <gerrit@ci3.zzzcomputing.com>
Sun, 17 Jul 2022 01:14:39 +0000 (01:14 +0000)
1  2 
lib/sqlalchemy/orm/_orm_constructors.py
lib/sqlalchemy/orm/properties.py

index 051b6df8b45602188191bda1935c56aacd0c11d5,caf9ff3af8230a2f6359718b2ed05c52defbe2b0..d11d3af552c5aea75cf42bbb963aa946a4076243
@@@ -485,9 -485,8 +485,10 @@@ class MappedColumn
          "_creation_order",
          "foreign_keys",
          "_has_nullable",
+         "_has_insert_default",
          "deferred",
 +        "deferred_group",
 +        "deferred_raiseload",
          "_attribute_options",
          "_has_dataclass_arguments",
      )
              ):
                  self._has_dataclass_arguments = True
  
-         kw["default"] = kw.pop("insert_default", None)
+         insert_default = kw.pop("insert_default", _NoArg.NO_ARG)
+         self._has_insert_default = insert_default is not _NoArg.NO_ARG
+         if self._has_insert_default:
+             kw["default"] = insert_default
+         elif attr_opts.dataclasses_default is not _NoArg.NO_ARG:
+             kw["default"] = attr_opts.dataclasses_default
  
 -        self.deferred = kw.pop("deferred", False)
 +        self.deferred_group = kw.pop("deferred_group", None)
 +        self.deferred_raiseload = kw.pop("deferred_raiseload", None)
 +        self.deferred = kw.pop("deferred", _NoArg.NO_ARG)
 +        if self.deferred is _NoArg.NO_ARG:
 +            self.deferred = bool(
 +                self.deferred_group or self.deferred_raiseload
 +            )
 +
          self.column = cast("Column[_T]", Column(*arg, **kw))
          self.foreign_keys = self.column.foreign_keys
          self._has_nullable = "nullable" in kw and kw.get("nullable") not in (