Проверка типа Python в коде VS

Недавно я узнал о наборе модуля в Python (https://docs.python.org/3/library/typing.html) и ожидал использовать его для проверки статического типа и для лучшего intellisense в VS Code, например, он работает с TypeScript, но я не могу найти никаких инструментов/плагинов, которые на самом деле это делают.

Каковы мои варианты, если они есть?

Ответы

Ответ 1

от bash

mkdir test
cd test
python3 -m venv .env
source .env/bin/activate
python -m pip install flake8
python -m pip install flake8-mypy
code ./

установить плагин

затем установите это в VSCode https://marketplace.visualstudio.com/items?itemName=donjayamanne.python
и конфигурация

настройки

./.vscode/settings.json

{
    "python.envFile": "${workspaceRoot}/.env",
    "python.pythonPath": "${workspaceRoot}/.env/bin/python",
    "python.linting.flake8Enabled": true,
    "python.linting.pylintEnabled": false
}

./.vscode/launch.json

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python",
            "type": "python",
            "request": "launch",
            "stopOnEntry": false,
            "pythonPath": "${config:python.pythonPath}",
            "program": "${file}",
            "cwd": "${workspaceRoot}",
            "env": {},
            "envFile": "${workspaceRoot}/.env",
            "debugOptions": [
                "WaitOnAbnormalExit",
                "WaitOnNormalExit",
                "RedirectOutput"
            ]
        }
    ]
}

OMG, это только Python 3!

https://pypi.python.org/pypi/flake8-mypy/17.3.3

Да, это тоже. Расслабьтесь, вы можете запустить Flake8 со всеми популярными плагинами
как инструмент отлично под Python 3. 5+, даже если вы хотите проанализировать
Код Python 2. Таким образом, вы сможете проанализировать весь новый синтаксис
поддерживается на Python 3, а также эффективно весь синтаксис Python 2 при
в то же время.

Сделав код исключительно Python 3. 5+, я смог сосредоточиться на
качество проверок и повторное использование всех приятных функций нового
релизы (проверьте pathlib) вместо того, чтобы тратить деньги на Unicode
совместимость и т.д.

Интеграция IDE и Linter

https://github.com/python/mypy#ide--linter-integrations

Интеграция IDE и Linter

Mypy можно интегрировать в популярные IDE:

  • Vim: vim-mypy
  • Emacs: использование Flycheck и Flycheck-mypy
  • Sublime Text: SublimeLinter-contrib-mypy
  • Atom: linter-mypy
  • PyCharm: PyCharm объединяет собственную реализацию PEP 484.

Mypy также можно интегрировать в Flake8, используя flake8-mypy.

Ответ 2

Я добавил следующий код

{
    "name": "mypy",
    "type": "python",
    "request": "launch",
    "module": "mypy",
    "args": [
        "${file}"
    ],
    "console": "integratedTerminal"
}

в VS Code launch.json и теперь это видно в окне "DEBUG". Просто нажмите F5, и вы получите полный статический анализ текущего файла.