I have some 'constants' in a Python module (vengeance.directions
) for which I am trying to generate sensible documentation using Sphinx. The values of these 'constants' are objects (of type: Direction
) rather than literal values and don't generate particularly useful documentation:
#: North (opposite: SOUTH).
NORTH = _NORTH_SOUTH.direction
#: South (opposite: NORTH).
SOUTH = _NORTH_SOUTH.opposite
#: East (opposite: WEST).
EAST = _EAST_WEST.direction
#: West (opposite: EAST).
WEST = _EAST_WEST.opposite
The .rst
file contains this:
.. automodule:: vengeance.directions
:members:
:undoc-members:
:show-inheritance:
And the generated output looks (more or less) like this:
vengeance.directions.EAST =
<vengeance.game.Direction object at 0x1046fd690>
East (opposite: WEST).
vengeance.directions.NORTH =
<vengeance.game.Direction object at 0x1046fd750>
North (opposite: SOUTH).
vengeance.directions.SOUTH =
<vengeance.game.Direction object at 0x1046fd790>
South (opposite: NORTH).
vengeance.directions.WEST =
<vengeance.game.Direction object at 0x1046fd6d0>
West (opposite: EAST).
Literal values produce much more helpful documentation, for example:
vengeance.directions.EAST = 2
I'd like to be able to produce something similar, removing the <vengeance.game.Direction object at ...>
and perhaps replacing it with the value of the Direction.__str__()
method. This would also prevent having to add additional documentation. In other words I'd like to be able to simply write:
NORTH = _NORTH_SOUTH.direction
SOUTH = _NORTH_SOUTH.opposite
EAST = _EAST_WEST.direction
WEST = _EAST_WEST.opposite
to generate:
vengeance.directions.EAST = East (opposite: WEST)
vengeance.directions.NORTH = North (opposite: SOUTH)
vengeance.directions.SOUTH = South (opposite: NORTH)
vengeance.directions.WEST = West (opposite: EAST)
How can I achieve this?