define Python-local attribute behavior options common to all :class:`.MapperProperty` objects. Currently this includes dataclass-generation arguments. .. versionadded:: 2.0
| 212 | |
| 213 | |
| 214 | class _AttributeOptions(NamedTuple): |
| 215 | class="st">"""define Python-local attribute behavior options common to all |
| 216 | :class:`.MapperProperty` objects. |
| 217 | |
| 218 | Currently this includes dataclass-generation arguments. |
| 219 | |
| 220 | .. versionadded:: 2.0 |
| 221 | |
| 222 | class="st">""" |
| 223 | |
| 224 | dataclasses_init: Union[_NoArg, bool] |
| 225 | dataclasses_repr: Union[_NoArg, bool] |
| 226 | dataclasses_default: Union[_NoArg, Any] |
| 227 | dataclasses_default_factory: Union[_NoArg, Callable[[], Any]] |
| 228 | dataclasses_compare: Union[_NoArg, bool] |
| 229 | dataclasses_kw_only: Union[_NoArg, bool] |
| 230 | dataclasses_hash: Union[_NoArg, bool, None] |
| 231 | dataclasses_dataclass_metadata: Union[_NoArg, Mapping[Any, Any], None] |
| 232 | |
| 233 | def _as_dataclass_field( |
| 234 | self, key: str, dataclass_setup_arguments: _DataclassArguments |
| 235 | ) -> Any: |
| 236 | class="st">""class="st">"Return a ``dataclasses.Field`` object given these arguments."class="st">"" |
| 237 | |
| 238 | kw: Dict[str, Any] = {} |
| 239 | if self.dataclasses_default_factory is not _NoArg.NO_ARG: |
| 240 | kw[class="st">"default_factory"] = self.dataclasses_default_factory |
| 241 | if self.dataclasses_default is not _NoArg.NO_ARG: |
| 242 | kw[class="st">"default"] = self.dataclasses_default |
| 243 | if self.dataclasses_init is not _NoArg.NO_ARG: |
| 244 | kw[class="st">"init"] = self.dataclasses_init |
| 245 | if self.dataclasses_repr is not _NoArg.NO_ARG: |
| 246 | kw[class="st">"repr"] = self.dataclasses_repr |
| 247 | if self.dataclasses_compare is not _NoArg.NO_ARG: |
| 248 | kw[class="st">"compare"] = self.dataclasses_compare |
| 249 | if self.dataclasses_kw_only is not _NoArg.NO_ARG: |
| 250 | kw[class="st">"kw_only"] = self.dataclasses_kw_only |
| 251 | if self.dataclasses_hash is not _NoArg.NO_ARG: |
| 252 | kw[class="st">"hash"] = self.dataclasses_hash |
| 253 | if self.dataclasses_dataclass_metadata is not _NoArg.NO_ARG: |
| 254 | kw[class="st">"metadata"] = self.dataclasses_dataclass_metadata |
| 255 | |
| 256 | if class="st">"default" in kw and callable(kw[class="st">"default"]): |
| 257 | class="cm"># callable defaults are ambiguous. deprecate them in favour of |
| 258 | class="cm"># insert_default or default_factory. #9936 |
| 259 | warn_deprecated( |
| 260 | fclass="st">"Callable object passed to the ``default`` parameter for " |
| 261 | fclass="st">"attribute {key!r} in a ORM-mapped Dataclasses context is " |
| 262 | class="st">"ambiguous, " |
| 263 | class="st">"and this use will raise an error in a future release. " |
| 264 | class="st">"If this callable is intended to produce Core level INSERT " |
| 265 | class="st">"default values for an underlying ``Column``, use " |
| 266 | class="st">"the ``mapped_column.insert_default`` parameter instead. " |
| 267 | class="st">"To establish this callable as providing a default value " |
| 268 | class="st">"for instances of the dataclass itself, use the " |
| 269 | class="st">"``default_factory`` dataclasses parameter.", |
| 270 | class="st">"2.0", |
| 271 | ) |
no outgoing calls
no test coverage detected