Как документировать kwargs с помощью эпитекста для подсказки автоматического завершения в PyCharm?

Можно ли получить дополнительную подсказку для kwargs, которая даст вам примеры предопределенных возможных аргументов ключевого слова? Может эпитекст его не поддерживает?

class Person():
    def __init__(self, **kwargs):
        """
        @param name: Name
        @type name: str
        @param age: Age
        @type age: int
        @param connections: Connections to other persons
        @type connections: [Person]
        .
        .
        . # I know this is not working
        """
        self.name = kwargs[name] if name in kwargs
        self.age  = kwargs[age] if age in kwargs
        # and so on ...

Было бы здорово, если бы я получил что-то вроде этого в подсказке завершения (извините, мне пришлось удалить картинки):

  • > я, имя, возраст, связи

С Quick Doku, выглядящим так:

  • Нет изображения*

Мне очень нравится иметь глобальные классы с общими классами в качестве родителей. Это значительно упрощает повторное использование. Итак, вот небольшой пример фрагмента:

class common():
    PERSON_DETAILS = dict( name       = ' ',
                           age        = 1,
                           connection = []  )

С немного другим определенным классом Person:

class Person(common):

    def setDetail(self, **kwargs):
        """
        Set some detail information about the person.
        """
        argErrors = []
        for arg, value in kwargs.iteritems():
            if arg in self.PERSON_DETAILS:
                if type(value)==type(self.PERSON_DETAILS[arg]):
                    self.doSomething() # I don't want to go deeper here
                else:
                    raise ValueError("setDetails(%s) the type of '%s' needs to be %s, %s found" % (arg,arg,type(self.PERSON_DETAILS[arg]),type(value)))
            else:
                raise TypeError("setDetails() got an unexpected keyword argument '%s'" %arg )



person = Person()
person.setDetails()

Следующее (изображение удалено) показывает, что я получаю в качестве подсказки завершения (что совершенно правильно), но было бы здорово иметь развернутый список аргументов из kwargs (как в первом примере):

  • > сам, **кваргс

Я знаю, что реализация строк документации для определений и подсказок автодополнения ограничена, но, возможно, кто-то знает другой способ получить то, что я хочу, в PyCharm.


person MagSec    schedule 09.12.2014    source источник
comment
Весь смысл **kwargs в том, что вы можете передавать любые произвольные аргументы ключевого слова. Насколько я знаю, вы можете намекнуть только на @param kwargs в целом в epytext, иначе он не знает, на какие параметры вы ссылаетесь.   -  person jonrsharpe    schedule 09.12.2014


Ответы (1)


Согласно документации Epytext, вы сможете добиться этого, используя @keyword.

Поля @param следует использовать для документирования любого явного параметра (включая параметр ключевого слова). @keywordfields следует использовать только для неявных параметров ключевого слова:

Кроме того, @kwarg p: ... и @kwparam p: ... являются синонимами.

person Azman0101    schedule 18.12.2014
comment
Вам нужен настроенный Python 2 SDK для отображения строк документации Epydoc. Разве нет стандартного способа? Я даже пытался копировать строки документации из некоторых классов, но я не получаю подсказок, когда применяю строку документации к своим методам класса. - person TheRealChx101; 13.08.2019