0 purchases
pyrightpolite 1.0.5
pyright-polite
pyright-polite is an intelligent cross-platform wrapper for pyright that makes
it less noisy.
Force pyright to be more respectful with your attention :rotating_light:
What does it do?
With pyright-polite:
$ pyright-polite
Found 7 source files
0 errors, 0 warnings, 0 informations
Without:
$ pyright
WARNING: there is a new pyright version available (v1.1.300 -> v1.1.301).
Please install the new version or set PYRIGHT_PYTHON_FORCE_VERSION to `latest`
No configuration file found.
pyproject.toml file found at /projects/pyright_polite.
Loading pyproject.toml file at /projects/pyright_polite/pyproject.toml
Assuming Python version 3.11
Assuming Python platform Linux
Auto-excluding **/node_modules
Auto-excluding **/__pycache__
Auto-excluding **/.*
stubPath /projects/pyright_polite/typings is not a valid directory.
Searching for source files
Found 7 source files
pyright 1.1.300
0 errors, 0 warnings, 0 informations
Completed in 1.006sec
Now pyright is just as polite as your other tools:
$ hatch run lint
cmd [1] | - ruff check .
cmd [2] | - black --quiet --check --diff .
cmd [3] | - pyright-polite
Found 8 source files
0 errors, 0 warnings, 0 informations
cmd [4] | - ssort --check --diff .
8 files would be left unchanged
Error messages are still shown (eg, if your pyright config file is invalid).
Installation
You need pyright installed (ie, available somewhere in your PATH).
See pyright's installation instructions here. Usually people install
either the pyright npm or the pyright PyPI package.
$ npm install pyright # alternatively: pip install pyright
$ pip install pyright-polite
Linux, macOS and Windows are all supported.
Usage
pyright-polite takes the same arguments as pyright.
$ pyright-polite -h
Usage: pyright-polite [options] files...
Options:
--createstub <IMPORT> Create type stub file(s) for import
--dependencies Emit import dependency information
-h,--help Show this help message
--ignoreexternal Ignore external imports for --verifytypes
--lib Use library code to infer types when stubs are missing
--level <LEVEL> Minimum diagnostic level (error or warning)
--outputjson Output results in JSON format
-p,--project <FILE OR DIRECTORY> Use the configuration file at this location
--pythonplatform <PLATFORM> Analyze for a specific platform (Darwin, Linux, Windows)
--pythonversion <VERSION> Analyze for a specific version (3.3, 3.4, etc.)
--skipunannotated Skip analysis of functions with no type annotations
--stats Print detailed performance stats
-t,--typeshed-path <DIRECTORY> Use typeshed type stubs at this location
-v,--venv-path <DIRECTORY> Directory that contains virtual environments
--verbose Emit verbose diagnostics
--verifytypes <PACKAGE> Verify type completeness of a py.typed package
--version Print Pyright version
--warnings Use exit code of 1 if warnings are reported
-w,--watch Continue to run and watch for changes
Note: pyright-polite does not filter output from `--dependencies` or `--stats`.
How does it work?
pyright-polite is hilariously over-engineered, but robust.
It aims to display everything in exactly the same format and colorisation as pyright
(minus the useless messages), and takes advantage of pyright's --outputjson option
when possible. It launches pyright as a subprocess and reads from both stderr and
stdout using asyncio tasks, which means that --watch is also supported.
For insight into what messages get hidden, see the print_filtered
method.
Isn't this a bit overkill?
Yes :rofl:
It was primarily a fun weekend project to learn asyncio.
Why is pyright so noisy?
If you're wondering why pyright has to remind us that typings is not a valid directory (among other useless messages) on literally every single launch, see
pyright #4594 for what the developers have to say:
The current information output by the cli is there for a reason.
License
pyright-polite is distributed under the terms of the MIT license.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.