diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-12-03 14:35:30 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2020-12-19 12:43:16 -0500 |
| commit | 9625adba3553803acd5488660d65c8e675a61fa6 (patch) | |
| tree | 23106014c9c6ed76ab2a81502cafa2ce99cbe0b5 /lib/sqlalchemy/util | |
| parent | 27766512b2d037a8f0048dccc6e2f02c281fbc9a (diff) | |
| download | sqlalchemy-9625adba3553803acd5488660d65c8e675a61fa6.tar.gz | |
Allow Declarative to extract class attr from field
Added an alternate resolution scheme to Declarative that will extract the
SQLAlchemy column or mapped property from the "metadata" dictionary of a
dataclasses.Field object. This allows full declarative mappings to be
combined with dataclass fields.
Fixes: #5745
Change-Id: I1165bc025246a4cb9fc099b1b7c46a6b0f799b23
Diffstat (limited to 'lib/sqlalchemy/util')
| -rw-r--r-- | lib/sqlalchemy/util/__init__.py | 1 | ||||
| -rw-r--r-- | lib/sqlalchemy/util/compat.py | 16 |
2 files changed, 17 insertions, 0 deletions
diff --git a/lib/sqlalchemy/util/__init__.py b/lib/sqlalchemy/util/__init__.py index f4363d03c..2e3f68722 100644 --- a/lib/sqlalchemy/util/__init__.py +++ b/lib/sqlalchemy/util/__init__.py @@ -57,6 +57,7 @@ from .compat import byte_buffer # noqa from .compat import callable # noqa from .compat import cmp # noqa from .compat import cpython # noqa +from .compat import dataclass_fields # noqa from .compat import decode_backslashreplace # noqa from .compat import dottedgetter # noqa from .compat import has_refcount_gc # noqa diff --git a/lib/sqlalchemy/util/compat.py b/lib/sqlalchemy/util/compat.py index e8c488047..77c913640 100644 --- a/lib/sqlalchemy/util/compat.py +++ b/lib/sqlalchemy/util/compat.py @@ -421,6 +421,22 @@ else: import collections as collections_abc # noqa +if py37: + import dataclasses + + def dataclass_fields(cls): + if dataclasses.is_dataclass(cls): + return dataclasses.fields(cls) + else: + return [] + + +else: + + def dataclass_fields(cls): + return [] + + def raise_from_cause(exception, exc_info=None): r"""legacy. use raise\_()""" |
