From: mike bayer Date: Sun, 17 Jul 2022 01:14:39 +0000 (+0000) Subject: Merge "implement column._merge()" into main X-Git-Tag: rel_2_0_0b1~174 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1dff43a825fe779d52e12d9a823ede0edef9bb0;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Merge "implement column._merge()" into main --- f1dff43a825fe779d52e12d9a823ede0edef9bb0 diff --cc lib/sqlalchemy/orm/properties.py index 051b6df8b4,caf9ff3af8..d11d3af552 --- a/lib/sqlalchemy/orm/properties.py +++ b/lib/sqlalchemy/orm/properties.py @@@ -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", ) @@@ -517,16 -513,15 +518,22 @@@ ): 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 (