diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/sqlalchemy/util/langhelpers.py | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/lib/sqlalchemy/util/langhelpers.py b/lib/sqlalchemy/util/langhelpers.py index bd10a33a6..8d6c2d8ee 100644 --- a/lib/sqlalchemy/util/langhelpers.py +++ b/lib/sqlalchemy/util/langhelpers.py @@ -235,17 +235,12 @@ def public_factory(target, location, class_location=None): location, ) ) - linked_to_target = target else: fn = callable_ = target doc = ( "This function is mirrored; see :func:`sqlalchemy%s` " "for a description of arguments." % location ) - if compat.py2k or hasattr(fn, "__func__"): - linked_to_target = fn.__func__ - else: - linked_to_target = fn location_name = location.split(".")[-1] spec = compat.inspect_getfullargspec(fn) @@ -263,8 +258,8 @@ def %(name)s(%(args)s): exec(code, env) decorated = env[location_name] - if hasattr(linked_to_target, "_linked_to"): - linked_to, linked_to_location = linked_to_target._linked_to + if hasattr(fn, "_linked_to"): + linked_to, linked_to_location = fn._linked_to linked_to_doc = linked_to.__doc__ if class_location is None: class_location = "%s.%s" % (target.__module__, target.__name__) @@ -290,13 +285,14 @@ def %(name)s(%(args)s): % (decorated.__module__,) ) - if not hasattr(linked_to_target, "_linked_to"): - linked_to_target._linked_to = (decorated, location) - if compat.py2k or hasattr(fn, "__func__"): fn.__func__.__doc__ = doc + if not hasattr(fn.__func__, "_linked_to"): + fn.__func__._linked_to = (decorated, location) else: fn.__doc__ = doc + if not hasattr(fn, "_linked_to"): + fn._linked_to = (decorated, location) return decorated |
