Сортировка членов без учета регистра в sphinx-autodoc - PullRequest
1 голос
/ 06 апреля 2020

Из sphinx.ext.autodo c документации , autodoc_member_order может быть alphabetical, groupwise или bysource. Можно ли сортировать по алфавиту без учета регистра? Я бы хотел отсортировать «Ratio» перед «RGB».

1 Ответ

1 голос
/ 06 апреля 2020

Насколько мне известно, в Sphinx, к сожалению, для этого нет встроенной опции.

Результаты проверки объекта отсортированы в этой функции :

def safe_getmembers(object, predicate=None, attr_getter=safe_getattr):
    # type: (Any, Callable[[unicode], bool], Callable) -> List[Tuple[unicode, Any]]
    """A version of inspect.getmembers() that uses safe_getattr()."""
    results = []  # type: List[Tuple[unicode, Any]]
    for key in dir(object):
        try:
            value = attr_getter(object, key, None)
        except AttributeError:
            continue
        if not predicate or predicate(value):
            results.append((key, value))
    results.sort()
    return results

Вы можете попробовать переопределить функцию, выполнив следующее:

from sphinx.util import inspect

def custom_safe_getmembers(object, predicate=None, attr_getter=safe_getattr):
    # type: (Any, Callable[[unicode], bool], Callable) -> List[Tuple[unicode, Any]]
    """A version of inspect.getmembers() that uses safe_getattr()."""
    results = []  # type: List[Tuple[unicode, Any]]
    for key in dir(object):
        try:
            value = attr_getter(object, key, None)
        except AttributeError:
            continue
        if not predicate or predicate(value):
            results.append((key, value))
    results.sort(lambda (k, v): (k.lower(), v))
    return results

inspect.safe_getmembers = custom_safe_getmembers

У меня еще не было возможности попробовать это, так что будьте осторожны!

...