Как фильтровать каталоги с помощью флага match-dir для pydocstyle?

Я хотел бы использовать pydocstyle как pre-commit hook для проверки строк документации исходного кода проекта, то есть файлов .py, расположенных внутри папки / src, когда сделан новый коммит git. Чтобы проверить только папку src, я использовал match-dir, однако, похоже, он не работает, и есть открытый Проблема с GitHub.

Следуя документации pydocstyle при использовании ловушки перед фиксацией я добавил pydocstyle в файл .pre-commit-config.yaml следующим образом:

repos:
- repo: https://github.com/pycqa/pydocstyle
  rev: 5.1.1
  hooks:
  - id: pydocstyle

Отсюда я попробовал два метода настройки параметра match-dir: в качестве аргумента командной строки и в файле конфигурации. Чтобы передать match-dir в качестве аргумента командной строки, я использовал ключ args в . pre-commit-config.yaml следующим образом:

repos:
- repo: https://github.com/pycqa/pydocstyle
  rev: 5.1.1
  hooks:
  - id: pydocstyle
    args:
    - --match-dir='^(src)'

Для метода файла конфигурации я создал .pydocstyle в корне проекта со следующим содержимым:

[pydocstyle]
match_dir = ^(src)

Оба метода не влияют на каталоги, которые проверяются при выполнении предварительной фиксации, а pydocstyle проверяет все файлы в проекте. Любая помощь с этим будет очень признательна!


person consoledotlog    schedule 28.12.2020    source источник
comment
Попробуйте pydocstyle --match-dir='^(src)' из командной строки - вообще работает? Попробуй pydocstyle - берет ли match_dir от .pydocstyle?   -  person phd    schedule 28.12.2020
comment
@phd Я установил pydocstyle в виртуальную среду, используя поэзию: poetry add pydocstyle. Это установленная версия 5.1.1, такая же, как и версия, используемая при предварительной фиксации. Оба аргумента командной строки и методы файла конфигурации работают и проверяют только папку src. Это говорит о том, что существует проблема с передачей аргументов в pydocstyle при использовании в качестве ловушки перед фиксацией. Пример в документации с флаг игнорирования работает правильно. Поэтому я не уверен, почему match-dir не работает.   -  person consoledotlog    schedule 28.12.2020


Ответы (1)


pre-commit передает имена файлов в качестве позиционных аргументов для хуков

Принимая любую из ваших попыток, это означает, что он называет это как:

pydocstyle --match-dir=^(src) file1.py file2.py src/file1.py src/file2.py

or

# with the configuration adjacent
pydocstyle file1.py file2.py src/file1.py src/file2.py

вы заметите, что pydocstyle всегда запускает файлы, которые ему передаются, независимо от --match-dir (который используется только при рекурсии)

вы можете использовать exclude / _ 7_, чтобы ограничить то, что передается базовому инструменту:

repos:
- repo: https://github.com/pycqa/pydocstyle
  rev: 5.1.1
  hooks:
  - id: pydocstyle
    files: ^src/

отказ от ответственности: я являюсь автором предварительной фиксации

person Anthony Sottile    schedule 28.12.2020