def get_subtask_fields(config_class):
    """Get all configurable subtask fields from a Config class.

    Parameters
    ----------
    config_class : ``lsst.pipe.base.Config``-type
        The configuration class (not an instance) corresponding to a Task.

    Returns
    -------
    subtask_fields : `dict`
        Mapping where keys are the config attribute names and values are
        subclasses of ``lsst.pex.config.ConfigurableField`` or
        ``RegistryField``). The mapping is alphabetically ordered by
        attribute name.
    """
    from lsst.pex.config import ConfigurableField, RegistryField

    def is_subtask_field(obj):
        return isinstance(obj, (ConfigurableField, RegistryField))

    return _get_alphabetical_members(config_class, is_subtask_field)
Get all configurable subtask fields from a Config class.

    Parameters
    ----------
    config_class : ``lsst.pipe.base.Config``-type
        The configuration class (not an instance) corresponding to a Task.

    Returns
    -------
    subtask_fields : `dict`
        Mapping where keys are the config attribute names and values are
        subclasses of ``lsst.pex.config.ConfigurableField`` or
        ``RegistryField``). The mapping is alphabetically ordered by
        attribute name.