Coverage for python/lsst/utils/inheritDoc.py : 9%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# This file is part of utils.
2#
3# Developed for the LSST Data Management System.
4# This product includes software developed by the LSST Project
5# (http://www.lsst.org).
6# See the COPYRIGHT file at the top-level directory of this distribution
7# for details of code ownership.
8#
9# This program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
23def inheritDoc(klass):
24 """Extends existing documentation for a method that exists in another
25 class and extend it with any additional documentation defined.
27 This decorator takes a class from which to draw documentation from as an
28 argument. This is so that any class may be used as a source of documentation
29 and not just the immediate parent of a class. This is useful when there may
30 be a long inheritance chain, or in the case of mixins.
32 Parameters
33 ----------
34 klass : object
35 The class to inherit documentation from.
37 Returns
38 -------
39 decorator : callable
40 Intermediate decorator used in the documentation process.
41 """
42 def tmpDecorator(method):
43 """Decorator to update the documentation from a class with the same method
44 """
45 methodName = method.__name__
46 if not hasattr(klass, methodName):
47 raise AttributeError(f"{klass} has no method named {methodName} to inherit from")
48 appendText = method.__doc__ or ""
49 method.__doc__ = getattr(klass, methodName).__doc__ + appendText
50 return method
51 return tmpDecorator