I'm currently writing documentation for my python package using Sphinx and the autodoc plugin.
For a function return value I can e.g. write :returns: int: count
which tells sphinx that there is a return value of type int, named count.
I now got a function which gets me predecessors of items in my database:
def get_previous_release(release_id):
""" Holt Vorgängeritem eines Items mit der ID release_id
:param release_id: ID des items für das Release
:type release_id: int
"""
if not isinstance(release_id, int):
raise ValueError('get_previous_release expects an Integer value for the parameter release_id')
try:
release = my_queries.core.get_by_id(release_id)
except IndexError:
raise LookupError('The item with id {} could no be found'.format(release_id))
if 'Alpha-Release' in release.name:
release = AlphaRelease(release.key, release.name, release.state)
elif 'Beta-Release' in release.name:
release = BetaRelease(release.key, release.name, release.state)
elif '-Release' in release.name:
release = VRelease(release.key, release.name, release.state)
else:
raise TypeError('The item with the id {} does not contain \'-Release\' in the Summary ' + \
'and is therefore not considered a Release')
previous_release = release.get_predecessor()
if not previous_release:
raise LookupError('Could not find a predecessor for item with id {}'.format(release_id))
return previous_release
As you can see, it fetches the original item and either returns an instance of class AlphaRelease
, BetaRelease
or VRelease
depending on the content of the field name
of the items.
What is best practice to define a return value with various possible types in the docstring?