Похоже, что Pyright (средство проверки типов Python, созданное Microsoft) можно использовать только как инструмент командной строки. или из VS Code. Но можно ли вызвать пирайт из кода (как API)?

Например, mypy поддерживает использование типа:

import sys
from mypy import api

result = api.run("your code")
0
laike9m 30 Окт 2023 в 09:46
Вы пробовали использовать subprocess для вызова командной строки?
 – 
willwrighteng
30 Окт 2023 в 09:48
1
Зачем вам это нужно? То есть ваш вопрос звучит как типичная «проблема XY», где вы, вероятно, по какой-то причине захотите это сделать, когда есть лучший способ достичь той же цели.
 – 
Grismar
30 Окт 2023 в 09:49
В отличие от mypy на основе Python, Pyright написан на TypeScript, поэтому вы не можете напрямую интегрировать Pyright в код Python без использования инструмента CLI.
 – 
blhsing
30 Окт 2023 в 09:59

2 ответа

Как сказал @Grismar, это может быть проблема xy... если нет, вот общее решение:

import subprocess

command = ['pyright', 'path/to/your/file.py']
result = subprocess.run(command, capture_output=True, text=True)
output = result.stdout

print(output)
0
willwrighteng 30 Окт 2023 в 09:51

Также вы можете использовать это решение:

import subprocess


try:
    command = ['pyright', 'path/to/your/file.py']
    result = subprocess.run(command, capture_output=True, text=True, shell=True)
    if result.returncode !=0:
        print(f'Return Code Not Zero : {result.returncode}')
        print(f'Stderror : {result.stderr}')
    output = result.stdout
    print(f'Stdout :{output}')
except subprocess.CalledProcessError as e:
    print(f"[CalledProcessError]: {e}")
except FileNotFoundError as e:
    print(f"[FileNotFoundError]: {e}")
except Exception as e:
    print(f"[Other error occurred]: {e}")
-1
Mahdi Salehi 30 Окт 2023 в 10:05
Ваш ответ можно улучшить, добавив дополнительную вспомогательную информацию. измените, добавив дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в Справочном центре.
 – 
Community
30 Окт 2023 в 15:53