This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author hardkrash
Recipients hardkrash
Date 2013-12-17.21:49:52
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1387316995.02.0.931185950843.issue20009@psf.upfronthosting.co.za>
In-reply-to
Content
When using the @property decorator the wrapped functions are not exposed for source introspection. (At least I can't see how they are.)

The issue is then that Ipython "%psource" will show the source for the @property as opposed to the function that it wraps.

By implementing the __wrapped__ attribute you can set the wrapped function to fget and then the source for that function can me identified for source introspection.

I perform this hack in code to overcome this issue.

class qproperty(property):
    # Fix for ipython ? and ?? (%pdef, %psource)
    # Omitting the class doc string prevents ipython from showing the
    # doctoring for the property builtin class; I suspect this is a
    # bug.
    def __init__(self, fget=None, fset=None, fdel=None, doc=None):
        super(qproperty, self).__init__(fget, fset, fdel, doc)
        self.__wrapped__ = fget

# Overwrite property with qproperty so that in the future this hack might
# be easily removed.
property = qproperty

This is related to issue #5982.
History
Date User Action Args
2013-12-17 21:49:55hardkrashsetrecipients: + hardkrash
2013-12-17 21:49:55hardkrashsetmessageid: <1387316995.02.0.931185950843.issue20009@psf.upfronthosting.co.za>
2013-12-17 21:49:54hardkrashlinkissue20009 messages
2013-12-17 21:49:52hardkrashcreate