Перейти к содержанию

Исключение файлов

ty автоматически обнаруживает все файлы Python в вашем проекте. Вы можете настроить, где именно ty выполняет поиск, с помощью параметров src.include и src.exclude.

Например, в следующей конфигурации ty проверяет все файлы Python в каталогах src и tests, за исключением файлов в каталоге src/generated:

pyproject.toml

[tool.ty.src]
include = ["src", "tests"]
exclude = ["src/generated"]

Исключения по умолчанию

По умолчанию ty исключает ряд часто игнорируемых директорий. Если вы хотите включить одну из таких директорий, можно сделать это, добавив отрицательное правило exclude с ведущим !:

pyproject.toml

[tool.ty.src]
# Убрать `build` из списка исключённых директорий.
exclude = ["!**/build/"]

По умолчанию ty игнорирует файлы, перечисленные в .ignore или .gitignore. Чтобы отключить эту функциональность, установите параметр respect-ignore-files в значение false.

Явные цели

Вы можете явно передавать пути, которые ty должен проверить, например:

ty check src scripts/benchmark.py

Пути, переданные как позиционные аргументы в ty check, будут включены в проверку даже в том случае, если они в противном случае были бы проигнорированы через фильтры exclude или файл игнорирования.

Синтаксис include и exclude

И include, и exclude поддерживают glob‑шаблоны в стиле gitignore:

  • [abc] — совпадает с любым символом из скобок. Последовательности символов также могут задавать диапазоны символов в порядке Unicode, например, [0-9] задаёт любой символ между 0 и 9 включительно. Незакрытая скобка считается недопустимой.
  • ? — совпадает с любым одиночным символом, кроме /.
  • ** — совпадает с нулём или более компонентов пути. Эта последовательность должна образовывать один компонент пути, поэтому ./**a и ./b**/ недопустимы и приведут к ошибке. Последовательность из более чем двух подряд идущих символов * также недопустима.
  • * — совпадает с любой (возможно, пустой) последовательностью символов (кроме /).
  • src — совпадает с файлом или директорией (включая её содержимое) с именем src.
  • src/ — совпадает с директорией (включая её содержимое) с именем src.

Все шаблоны «якорятся» к корню: шаблон src включает только /src, но не, например, /test/src. Чтобы включить любую директорию с именем src, используйте префиксный шаблон **/src. То же самое относится и к шаблонам исключения: src исключает только /src, но не /test/src.

Warning

Префиксный шаблон include вроде **/src может заметно замедлить обнаружение файлов Python.

Все поля, принимающие шаблоны, используют урезанный переносимый синтаксис glob из PEP 639 с добавлением того, что символы можно экранировать обратным слешем.

Исключение файлов виртуальных окружений

В Python 3.13+ модуль venv добавляет файл .gitignore в корень виртуального окружения, и ty не будет выводить диагностику для его файлов. Однако при использовании более старой версии Python ty может включать диагностику для файлов внутри виртуального окружения.

Вы можете исправить это, добавив .gitignore в окружение, например, для виртуального окружения с именем .venv:

echo "*" > .venv/.gitignore

Либо добавьте ваше виртуальное окружение в .gitignore или .ignore.