Issue 15731: Mechanism for inheriting docstrings and signatures (original) (raw)
Issue15731
Created on 2012-08-20 04:37 by ncoghlan, last changed 2022-04-11 14:57 by admin. This issue is now closed.
Messages (5) | ||
---|---|---|
msg168618 - (view) | Author: Alyssa Coghlan (ncoghlan) * ![]() |
Date: 2012-08-20 04:37 |
While working on #8810, I was reminded of the problem of wanting to inherit docstrings while replacing a method implementation. The abstract base class method docstrings for tzinfo.utcoffset and tzinfo.dst are also correct for the concrete subclasses in the pure Python and the C versions. However, the docstrings currently need to be duplicated in all 3 places manually. functools.wraps already plays in this space, but arguably asserts *too much* about the relationship between components A couple of descriptors on bound and unbound methods (for __doc__ and __signature__) could have dealt with this fairly easily, but we don't have unbound methods any more :( | ||
msg168619 - (view) | Author: Alyssa Coghlan (ncoghlan) * ![]() |
Date: 2012-08-20 04:40 |
Slight correction: turns out this docstring appears in a lot of other places, too. | ||
msg209706 - (view) | Author: Yury Selivanov (yselivanov) * ![]() |
Date: 2014-01-30 06:20 |
Perhaps, something like @functools.inherit decorator could help: https://gist.github.com/1st1/8703533 (just a quick illustration). | ||
msg259796 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * ![]() |
Date: 2016-02-07 18:20 |
After , is it still actual? | ||
msg259813 - (view) | Author: Alyssa Coghlan (ncoghlan) * ![]() |
Date: 2016-02-08 04:28 |
Agreed, making it easy to follow the inheritance chains at docstring lookup time means it would be redundant to duplicate them at class definition time. Code that interrogates __doc__ directly rather than using inspect.getdoc won't benefit from the new behaviour, but that's a quality of implementation question in the code handling the introspection. |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-11 14:57:34 | admin | set | github: 59936 |
2016-02-08 04:28:11 | ncoghlan | set | status: open -> closedresolution: out of datemessages: + stage: resolved |
2016-02-07 18:20:32 | serhiy.storchaka | set | messages: + |
2014-01-30 06:20:02 | yselivanov | set | messages: + |
2014-01-30 05:55:10 | yselivanov | set | nosy: + yselivanovversions: + Python 3.5, - Python 3.4 |
2013-01-26 15:20:39 | serhiy.storchaka | set | nosy: + serhiy.storchaka |
2012-08-26 20:13:06 | Arfrever | set | nosy: + Arfrever |
2012-08-25 02:01:00 | cvrebert | set | nosy: + cvrebert |
2012-08-20 11:17:49 | ncoghlan | set | files: - issue8810_reconcile_docs.patch |
2012-08-20 11:17:09 | ncoghlan | set | messages: - |
2012-08-20 11:17:04 | ncoghlan | set | messages: - |
2012-08-20 10:41:25 | asvetlov | set | nosy: + asvetlov |
2012-08-20 06:42:39 | bignose | set | messages: + |
2012-08-20 06:25:34 | bignose | set | files: + issue8810_reconcile_docs.patchnosy: + bignosemessages: + keywords: + patch |
2012-08-20 04:40:40 | ncoghlan | set | messages: + |
2012-08-20 04:37:11 | ncoghlan | create |