Sphinx_pytype_substitution

Tutorial

First add the sphinx_pytype_substitution to the extensions list in config.py.

# Add any Sphinx extension module names here, as strings. They can be
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
# ones.
extensions = [
    'sphinx_pytype_substitution',
    'sphinx_rtd_theme',
    'sphinx.ext.autodoc',
    'sphinx.ext.autosummary',
    'sphinx.ext.doctest',
    'sphinx.ext.mathjax',
    'sphinx.ext.viewcode',
    'sphinx.ext.napoleon'
]

Then set the module to reference (here datetime) by appending it the following in config.py

# -- Config for pytype_substitution extension ------------------------------

pytype_substitutions = datetime,  # package, module or class to reference to

This will generate and add something like (full list follows below)

.. |datetime|                                     replace:: :py:mod:`datetime`
.. |datetime.MAXYEAR|                             replace:: :py:const:`datetime.MAXYEAR`
.. |datetime.MINYEAR|                             replace:: :py:const:`datetime.MINYEAR`
.. |datetime.date|                                replace:: :py:class:`datetime.date`
.. |datetime.date()|                              replace:: :py:class:`datetime.date`
.. |datetime.date().day|                          replace:: :py:attr:`datetime.date.day`
.. |datetime.date().max|                          replace:: :py:attr:`datetime.date.max`
.. |datetime.date().min|                          replace:: :py:attr:`datetime.date.min`
.. |datetime.date().month|                        replace:: :py:attr:`datetime.date.month`
.. |datetime.date().resolution|                   replace:: :py:attr:`datetime.date.resolution`
.. |datetime.date().year|                         replace:: :py:attr:`datetime.date.year`
.. |datetime.date().timetuple()|                  replace:: :py:func:`datetime.date.timetuple`
.. |datetime.date().today()|                      replace:: :py:func:`datetime.date.today`
.. |datetime.date().toordinal()|                  replace:: :py:func:`datetime.date.toordinal`
.. |datetime.date().weekday()|                    replace:: :py:func:`datetime.date.weekday`

and more…

But

# -- Config for pytype_substitution extension ------------------------------

pytype_substitutions = datetime,  # package, module or class to reference to
pytype_short_ref = True  # drop module from reference (if it does not conflict)

will generate and add something like

.. |datetime|                                     replace:: :py:mod:`datetime`
.. |MAXYEAR|                             replace:: :py:const:`datetime.MAXYEAR`
.. |MINYEAR|                             replace:: :py:const:`datetime.MINYEAR`
.. |date|                                replace:: :py:class:`datetime.date`
.. |date()|                              replace:: :py:class:`datetime.date`
.. |date().day|                          replace:: :py:attr:`datetime.date.day`
.. |date().max|                          replace:: :py:attr:`datetime.date.max`
.. |date().min|                          replace:: :py:attr:`datetime.date.min`
.. |date().month|                        replace:: :py:attr:`datetime.date.month`
.. |date().resolution|                   replace:: :py:attr:`datetime.date.resolution`
.. |date().year|                         replace:: :py:attr:`datetime.date.year`
.. |date().timetuple()|                  replace:: :py:func:`datetime.date.timetuple`
.. |date().today()|                      replace:: :py:func:`datetime.date.today`
.. |date().toordinal()|                  replace:: :py:func:`datetime.date.toordinal`
.. |date().weekday()|                    replace:: :py:func:`datetime.date.weekday`

Full datetime reference substitutions

.. |datetime.date().day|                          replace:: :py:attr:`datetime.date.day`
.. |datetime.date().max|                          replace:: :py:attr:`datetime.date.max`
.. |datetime.date().min|                          replace:: :py:attr:`datetime.date.min`
.. |datetime.date().month|                        replace:: :py:attr:`datetime.date.month`
.. |datetime.date().resolution|                   replace:: :py:attr:`datetime.date.resolution`
.. |datetime.date().year|                         replace:: :py:attr:`datetime.date.year`
.. |datetime.datetime().day|                      replace:: :py:attr:`datetime.datetime.day`
.. |datetime.datetime().fold|                     replace:: :py:attr:`datetime.datetime.fold`
.. |datetime.datetime().hour|                     replace:: :py:attr:`datetime.datetime.hour`
.. |datetime.datetime().max|                      replace:: :py:attr:`datetime.datetime.max`
.. |datetime.datetime().microsecond|              replace:: :py:attr:`datetime.datetime.microsecond`
.. |datetime.datetime().min|                      replace:: :py:attr:`datetime.datetime.min`
.. |datetime.datetime().minute|                   replace:: :py:attr:`datetime.datetime.minute`
.. |datetime.datetime().month|                    replace:: :py:attr:`datetime.datetime.month`
.. |datetime.datetime().resolution|               replace:: :py:attr:`datetime.datetime.resolution`
.. |datetime.datetime().second|                   replace:: :py:attr:`datetime.datetime.second`
.. |datetime.datetime().tzinfo|                   replace:: :py:attr:`datetime.datetime.tzinfo`
.. |datetime.datetime().year|                     replace:: :py:attr:`datetime.datetime.year`
.. |datetime.datetime_CAPI|                       replace:: :py:attr:`datetime.datetime_CAPI`
.. |datetime.time().fold|                         replace:: :py:attr:`datetime.time.fold`
.. |datetime.time().hour|                         replace:: :py:attr:`datetime.time.hour`
.. |datetime.time().max|                          replace:: :py:attr:`datetime.time.max`
.. |datetime.time().microsecond|                  replace:: :py:attr:`datetime.time.microsecond`
.. |datetime.time().min|                          replace:: :py:attr:`datetime.time.min`
.. |datetime.time().minute|                       replace:: :py:attr:`datetime.time.minute`
.. |datetime.time().resolution|                   replace:: :py:attr:`datetime.time.resolution`
.. |datetime.time().second|                       replace:: :py:attr:`datetime.time.second`
.. |datetime.time().tzinfo|                       replace:: :py:attr:`datetime.time.tzinfo`
.. |datetime.timedelta().days|                    replace:: :py:attr:`datetime.timedelta.days`
.. |datetime.timedelta().max|                     replace:: :py:attr:`datetime.timedelta.max`
.. |datetime.timedelta().microseconds|            replace:: :py:attr:`datetime.timedelta.microseconds`
.. |datetime.timedelta().min|                     replace:: :py:attr:`datetime.timedelta.min`
.. |datetime.timedelta().resolution|              replace:: :py:attr:`datetime.timedelta.resolution`
.. |datetime.timedelta().seconds|                 replace:: :py:attr:`datetime.timedelta.seconds`
.. |datetime.timezone().max|                      replace:: :py:attr:`datetime.timezone.max`
.. |datetime.timezone().min|                      replace:: :py:attr:`datetime.timezone.min`
.. |datetime.timezone().utc|                      replace:: :py:attr:`datetime.timezone.utc`
.. |datetime.date|                                replace:: :py:class:`datetime.date`
.. |datetime.date()|                              replace:: :py:class:`datetime.date`
.. |datetime.datetime|                            replace:: :py:class:`datetime.datetime`
.. |datetime.datetime()|                          replace:: :py:class:`datetime.datetime`
.. |datetime.time|                                replace:: :py:class:`datetime.time`
.. |datetime.time()|                              replace:: :py:class:`datetime.time`
.. |datetime.timedelta|                           replace:: :py:class:`datetime.timedelta`
.. |datetime.timedelta()|                         replace:: :py:class:`datetime.timedelta`
.. |datetime.timezone|                            replace:: :py:class:`datetime.timezone`
.. |datetime.timezone()|                          replace:: :py:class:`datetime.timezone`
.. |datetime.tzinfo|                              replace:: :py:class:`datetime.tzinfo`
.. |datetime.tzinfo()|                            replace:: :py:class:`datetime.tzinfo`
.. |datetime.MAXYEAR|                             replace:: :py:const:`datetime.MAXYEAR`
.. |datetime.MINYEAR|                             replace:: :py:const:`datetime.MINYEAR`
.. |datetime.date().ctime()|                      replace:: :py:func:`datetime.date.ctime`
.. |datetime.date().fromisocalendar()|            replace:: :py:func:`datetime.date.fromisocalendar`
.. |datetime.date().fromisoformat()|              replace:: :py:func:`datetime.date.fromisoformat`
.. |datetime.date().fromordinal()|                replace:: :py:func:`datetime.date.fromordinal`
.. |datetime.date().fromtimestamp()|              replace:: :py:func:`datetime.date.fromtimestamp`
.. |datetime.date().isocalendar()|                replace:: :py:func:`datetime.date.isocalendar`
.. |datetime.date().isoformat()|                  replace:: :py:func:`datetime.date.isoformat`
.. |datetime.date().isoweekday()|                 replace:: :py:func:`datetime.date.isoweekday`
.. |datetime.date().replace()|                    replace:: :py:func:`datetime.date.replace`
.. |datetime.date().strftime()|                   replace:: :py:func:`datetime.date.strftime`
.. |datetime.date().timetuple()|                  replace:: :py:func:`datetime.date.timetuple`
.. |datetime.date().today()|                      replace:: :py:func:`datetime.date.today`
.. |datetime.date().toordinal()|                  replace:: :py:func:`datetime.date.toordinal`
.. |datetime.date().weekday()|                    replace:: :py:func:`datetime.date.weekday`
.. |datetime.datetime().astimezone()|             replace:: :py:func:`datetime.datetime.astimezone`
.. |datetime.datetime().combine()|                replace:: :py:func:`datetime.datetime.combine`
.. |datetime.datetime().ctime()|                  replace:: :py:func:`datetime.datetime.ctime`
.. |datetime.datetime().date()|                   replace:: :py:func:`datetime.datetime.date`
.. |datetime.datetime().dst()|                    replace:: :py:func:`datetime.datetime.dst`
.. |datetime.datetime().fromisocalendar()|        replace:: :py:func:`datetime.datetime.fromisocalendar`
.. |datetime.datetime().fromisoformat()|          replace:: :py:func:`datetime.datetime.fromisoformat`
.. |datetime.datetime().fromordinal()|            replace:: :py:func:`datetime.datetime.fromordinal`
.. |datetime.datetime().fromtimestamp()|          replace:: :py:func:`datetime.datetime.fromtimestamp`
.. |datetime.datetime().isocalendar()|            replace:: :py:func:`datetime.datetime.isocalendar`
.. |datetime.datetime().isoformat()|              replace:: :py:func:`datetime.datetime.isoformat`
.. |datetime.datetime().isoweekday()|             replace:: :py:func:`datetime.datetime.isoweekday`
.. |datetime.datetime().now()|                    replace:: :py:func:`datetime.datetime.now`
.. |datetime.datetime().replace()|                replace:: :py:func:`datetime.datetime.replace`
.. |datetime.datetime().strftime()|               replace:: :py:func:`datetime.datetime.strftime`
.. |datetime.datetime().strptime()|               replace:: :py:func:`datetime.datetime.strptime`
.. |datetime.datetime().time()|                   replace:: :py:func:`datetime.datetime.time`
.. |datetime.datetime().timestamp()|              replace:: :py:func:`datetime.datetime.timestamp`
.. |datetime.datetime().timetuple()|              replace:: :py:func:`datetime.datetime.timetuple`
.. |datetime.datetime().timetz()|                 replace:: :py:func:`datetime.datetime.timetz`
.. |datetime.datetime().today()|                  replace:: :py:func:`datetime.datetime.today`
.. |datetime.datetime().toordinal()|              replace:: :py:func:`datetime.datetime.toordinal`
.. |datetime.datetime().tzname()|                 replace:: :py:func:`datetime.datetime.tzname`
.. |datetime.datetime().utcfromtimestamp()|       replace:: :py:func:`datetime.datetime.utcfromtimestamp`
.. |datetime.datetime().utcnow()|                 replace:: :py:func:`datetime.datetime.utcnow`
.. |datetime.datetime().utcoffset()|              replace:: :py:func:`datetime.datetime.utcoffset`
.. |datetime.datetime().utctimetuple()|           replace:: :py:func:`datetime.datetime.utctimetuple`
.. |datetime.datetime().weekday()|                replace:: :py:func:`datetime.datetime.weekday`
.. |datetime.time().dst()|                        replace:: :py:func:`datetime.time.dst`
.. |datetime.time().fromisoformat()|              replace:: :py:func:`datetime.time.fromisoformat`
.. |datetime.time().isoformat()|                  replace:: :py:func:`datetime.time.isoformat`
.. |datetime.time().replace()|                    replace:: :py:func:`datetime.time.replace`
.. |datetime.time().strftime()|                   replace:: :py:func:`datetime.time.strftime`
.. |datetime.time().tzname()|                     replace:: :py:func:`datetime.time.tzname`
.. |datetime.time().utcoffset()|                  replace:: :py:func:`datetime.time.utcoffset`
.. |datetime.timedelta().total_seconds()|         replace:: :py:func:`datetime.timedelta.total_seconds`
.. |datetime.timezone().dst()|                    replace:: :py:func:`datetime.timezone.dst`
.. |datetime.timezone().fromutc()|                replace:: :py:func:`datetime.timezone.fromutc`
.. |datetime.timezone().tzname()|                 replace:: :py:func:`datetime.timezone.tzname`
.. |datetime.timezone().utcoffset()|              replace:: :py:func:`datetime.timezone.utcoffset`
.. |datetime.tzinfo().dst()|                      replace:: :py:func:`datetime.tzinfo.dst`
.. |datetime.tzinfo().fromutc()|                  replace:: :py:func:`datetime.tzinfo.fromutc`
.. |datetime.tzinfo().tzname()|                   replace:: :py:func:`datetime.tzinfo.tzname`
.. |datetime.tzinfo().utcoffset()|                replace:: :py:func:`datetime.tzinfo.utcoffset`
.. |datetime|                                     replace:: :py:mod:`datetime`
.. |datetime.date().day|                          replace:: :py:attr:`datetime.date.day`
.. |datetime.date().max|                          replace:: :py:attr:`datetime.date.max`
.. |datetime.date().min|                          replace:: :py:attr:`datetime.date.min`
.. |datetime.date().month|                        replace:: :py:attr:`datetime.date.month`
.. |datetime.date().resolution|                   replace:: :py:attr:`datetime.date.resolution`
.. |datetime.date().year|                         replace:: :py:attr:`datetime.date.year`
.. |datetime.datetime().day|                      replace:: :py:attr:`datetime.datetime.day`
.. |datetime.datetime().fold|                     replace:: :py:attr:`datetime.datetime.fold`
.. |datetime.datetime().hour|                     replace:: :py:attr:`datetime.datetime.hour`
.. |datetime.datetime().max|                      replace:: :py:attr:`datetime.datetime.max`
.. |datetime.datetime().microsecond|              replace:: :py:attr:`datetime.datetime.microsecond`
.. |datetime.datetime().min|                      replace:: :py:attr:`datetime.datetime.min`
.. |datetime.datetime().minute|                   replace:: :py:attr:`datetime.datetime.minute`
.. |datetime.datetime().month|                    replace:: :py:attr:`datetime.datetime.month`
.. |datetime.datetime().resolution|               replace:: :py:attr:`datetime.datetime.resolution`
.. |datetime.datetime().second|                   replace:: :py:attr:`datetime.datetime.second`
.. |datetime.datetime().tzinfo|                   replace:: :py:attr:`datetime.datetime.tzinfo`
.. |datetime.datetime().year|                     replace:: :py:attr:`datetime.datetime.year`
.. |datetime.datetime_CAPI|                       replace:: :py:attr:`datetime.datetime_CAPI`
.. |datetime.time().fold|                         replace:: :py:attr:`datetime.time.fold`
.. |datetime.time().hour|                         replace:: :py:attr:`datetime.time.hour`
.. |datetime.time().max|                          replace:: :py:attr:`datetime.time.max`
.. |datetime.time().microsecond|                  replace:: :py:attr:`datetime.time.microsecond`
.. |datetime.time().min|                          replace:: :py:attr:`datetime.time.min`
.. |datetime.time().minute|                       replace:: :py:attr:`datetime.time.minute`
.. |datetime.time().resolution|                   replace:: :py:attr:`datetime.time.resolution`
.. |datetime.time().second|                       replace:: :py:attr:`datetime.time.second`
.. |datetime.time().tzinfo|                       replace:: :py:attr:`datetime.time.tzinfo`
.. |datetime.timedelta().days|                    replace:: :py:attr:`datetime.timedelta.days`
.. |datetime.timedelta().max|                     replace:: :py:attr:`datetime.timedelta.max`
.. |datetime.timedelta().microseconds|            replace:: :py:attr:`datetime.timedelta.microseconds`
.. |datetime.timedelta().min|                     replace:: :py:attr:`datetime.timedelta.min`
.. |datetime.timedelta().resolution|              replace:: :py:attr:`datetime.timedelta.resolution`
.. |datetime.timedelta().seconds|                 replace:: :py:attr:`datetime.timedelta.seconds`
.. |datetime.timezone().max|                      replace:: :py:attr:`datetime.timezone.max`
.. |datetime.timezone().min|                      replace:: :py:attr:`datetime.timezone.min`
.. |datetime.timezone().utc|                      replace:: :py:attr:`datetime.timezone.utc`
.. |datetime.date|                                replace:: :py:class:`datetime.date`
.. |datetime.date()|                              replace:: :py:class:`datetime.date`
.. |datetime.datetime|                            replace:: :py:class:`datetime.datetime`
.. |datetime.datetime()|                          replace:: :py:class:`datetime.datetime`
.. |datetime.time|                                replace:: :py:class:`datetime.time`
.. |datetime.time()|                              replace:: :py:class:`datetime.time`
.. |datetime.timedelta|                           replace:: :py:class:`datetime.timedelta`
.. |datetime.timedelta()|                         replace:: :py:class:`datetime.timedelta`
.. |datetime.timezone|                            replace:: :py:class:`datetime.timezone`
.. |datetime.timezone()|                          replace:: :py:class:`datetime.timezone`
.. |datetime.tzinfo|                              replace:: :py:class:`datetime.tzinfo`
.. |datetime.tzinfo()|                            replace:: :py:class:`datetime.tzinfo`
.. |datetime.MAXYEAR|                             replace:: :py:const:`datetime.MAXYEAR`
.. |datetime.MINYEAR|                             replace:: :py:const:`datetime.MINYEAR`
.. |datetime.date().ctime()|                      replace:: :py:func:`datetime.date.ctime`
.. |datetime.date().fromisocalendar()|            replace:: :py:func:`datetime.date.fromisocalendar`
.. |datetime.date().fromisoformat()|              replace:: :py:func:`datetime.date.fromisoformat`
.. |datetime.date().fromordinal()|                replace:: :py:func:`datetime.date.fromordinal`
.. |datetime.date().fromtimestamp()|              replace:: :py:func:`datetime.date.fromtimestamp`
.. |datetime.date().isocalendar()|                replace:: :py:func:`datetime.date.isocalendar`
.. |datetime.date().isoformat()|                  replace:: :py:func:`datetime.date.isoformat`
.. |datetime.date().isoweekday()|                 replace:: :py:func:`datetime.date.isoweekday`
.. |datetime.date().replace()|                    replace:: :py:func:`datetime.date.replace`
.. |datetime.date().strftime()|                   replace:: :py:func:`datetime.date.strftime`
.. |datetime.date().timetuple()|                  replace:: :py:func:`datetime.date.timetuple`
.. |datetime.date().today()|                      replace:: :py:func:`datetime.date.today`
.. |datetime.date().toordinal()|                  replace:: :py:func:`datetime.date.toordinal`
.. |datetime.date().weekday()|                    replace:: :py:func:`datetime.date.weekday`
.. |datetime.datetime().astimezone()|             replace:: :py:func:`datetime.datetime.astimezone`
.. |datetime.datetime().combine()|                replace:: :py:func:`datetime.datetime.combine`
.. |datetime.datetime().ctime()|                  replace:: :py:func:`datetime.datetime.ctime`
.. |datetime.datetime().date()|                   replace:: :py:func:`datetime.datetime.date`
.. |datetime.datetime().dst()|                    replace:: :py:func:`datetime.datetime.dst`
.. |datetime.datetime().fromisocalendar()|        replace:: :py:func:`datetime.datetime.fromisocalendar`
.. |datetime.datetime().fromisoformat()|          replace:: :py:func:`datetime.datetime.fromisoformat`
.. |datetime.datetime().fromordinal()|            replace:: :py:func:`datetime.datetime.fromordinal`
.. |datetime.datetime().fromtimestamp()|          replace:: :py:func:`datetime.datetime.fromtimestamp`
.. |datetime.datetime().isocalendar()|            replace:: :py:func:`datetime.datetime.isocalendar`
.. |datetime.datetime().isoformat()|              replace:: :py:func:`datetime.datetime.isoformat`
.. |datetime.datetime().isoweekday()|             replace:: :py:func:`datetime.datetime.isoweekday`
.. |datetime.datetime().now()|                    replace:: :py:func:`datetime.datetime.now`
.. |datetime.datetime().replace()|                replace:: :py:func:`datetime.datetime.replace`
.. |datetime.datetime().strftime()|               replace:: :py:func:`datetime.datetime.strftime`
.. |datetime.datetime().strptime()|               replace:: :py:func:`datetime.datetime.strptime`
.. |datetime.datetime().time()|                   replace:: :py:func:`datetime.datetime.time`
.. |datetime.datetime().timestamp()|              replace:: :py:func:`datetime.datetime.timestamp`
.. |datetime.datetime().timetuple()|              replace:: :py:func:`datetime.datetime.timetuple`
.. |datetime.datetime().timetz()|                 replace:: :py:func:`datetime.datetime.timetz`
.. |datetime.datetime().today()|                  replace:: :py:func:`datetime.datetime.today`
.. |datetime.datetime().toordinal()|              replace:: :py:func:`datetime.datetime.toordinal`
.. |datetime.datetime().tzname()|                 replace:: :py:func:`datetime.datetime.tzname`
.. |datetime.datetime().utcfromtimestamp()|       replace:: :py:func:`datetime.datetime.utcfromtimestamp`
.. |datetime.datetime().utcnow()|                 replace:: :py:func:`datetime.datetime.utcnow`
.. |datetime.datetime().utcoffset()|              replace:: :py:func:`datetime.datetime.utcoffset`
.. |datetime.datetime().utctimetuple()|           replace:: :py:func:`datetime.datetime.utctimetuple`
.. |datetime.datetime().weekday()|                replace:: :py:func:`datetime.datetime.weekday`
.. |datetime.time().dst()|                        replace:: :py:func:`datetime.time.dst`
.. |datetime.time().fromisoformat()|              replace:: :py:func:`datetime.time.fromisoformat`
.. |datetime.time().isoformat()|                  replace:: :py:func:`datetime.time.isoformat`
.. |datetime.time().replace()|                    replace:: :py:func:`datetime.time.replace`
.. |datetime.time().strftime()|                   replace:: :py:func:`datetime.time.strftime`
.. |datetime.time().tzname()|                     replace:: :py:func:`datetime.time.tzname`
.. |datetime.time().utcoffset()|                  replace:: :py:func:`datetime.time.utcoffset`
.. |datetime.timedelta().total_seconds()|         replace:: :py:func:`datetime.timedelta.total_seconds`
.. |datetime.timezone().dst()|                    replace:: :py:func:`datetime.timezone.dst`
.. |datetime.timezone().fromutc()|                replace:: :py:func:`datetime.timezone.fromutc`
.. |datetime.timezone().tzname()|                 replace:: :py:func:`datetime.timezone.tzname`
.. |datetime.timezone().utcoffset()|              replace:: :py:func:`datetime.timezone.utcoffset`
.. |datetime.tzinfo().dst()|                      replace:: :py:func:`datetime.tzinfo.dst`
.. |datetime.tzinfo().fromutc()|                  replace:: :py:func:`datetime.tzinfo.fromutc`
.. |datetime.tzinfo().tzname()|                   replace:: :py:func:`datetime.tzinfo.tzname`
.. |datetime.tzinfo().utcoffset()|                replace:: :py:func:`datetime.tzinfo.utcoffset`
.. |datetime|                                     replace:: :py:mod:`datetime`