diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-07-08 13:39:56 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-07-08 13:39:56 -0400 |
commit | 02a81707dc8b7c4d69551cad195fb16ca6955df1 (patch) | |
tree | feda05ad7e0ce7bef057b9ee9d55d3273d8d008a /lib/sqlalchemy/util/compat.py | |
parent | db68ecff12f790fd129f03b8676b317fa17e5f28 (diff) | |
download | sqlalchemy-02a81707dc8b7c4d69551cad195fb16ca6955df1.tar.gz |
- create a new system where we can decorate an event method
with @_legacy_signature, will inspect incoming listener functions
to see if they match an older signature, will wrap into a newer sig
- add an event listen argument named=True, will send all args as
kw args so that event listeners can be written with **kw, any combination
of names
- add a doc system to events that writes out the various calling styles
for a given event, produces deprecation messages automatically.
a little concerned that it's a bit verbose but will look at it up
on RTD for awhile to get a feel.
- change the calling signature for bulk update/delete events - we have
the BulkUD object right there, and there's at least six or seven things
people might want to see, so just send the whole BulkUD in
[ticket:2775]
Diffstat (limited to 'lib/sqlalchemy/util/compat.py')
-rw-r--r-- | lib/sqlalchemy/util/compat.py | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/sqlalchemy/util/compat.py b/lib/sqlalchemy/util/compat.py index d866534ab..a89762b4e 100644 --- a/lib/sqlalchemy/util/compat.py +++ b/lib/sqlalchemy/util/compat.py @@ -22,7 +22,7 @@ pypy = hasattr(sys, 'pypy_version_info') win32 = sys.platform.startswith('win') cpython = not pypy and not jython # TODO: something better for this ? - +import collections next = next if py3k: @@ -33,6 +33,9 @@ else: except ImportError: import pickle +ArgSpec = collections.namedtuple("ArgSpec", + ["args", "varargs", "keywords", "defaults"]) + if py3k: import builtins @@ -43,6 +46,10 @@ if py3k: from io import BytesIO as byte_buffer + def inspect_getargspec(func): + return ArgSpec( + *inspect_getfullargspec(func)[0:4] + ) string_types = str, binary_type = bytes @@ -87,6 +94,7 @@ if py3k: else: from inspect import getargspec as inspect_getfullargspec + inspect_getargspec = inspect_getfullargspec from urllib import quote_plus, unquote_plus from urlparse import parse_qsl import ConfigParser as configparser |