py.test plugin to check import ordering using isort
Project description
Support
Python 3.7, 3.8, 3.9 and 3.10. pytest>=5.
Usage
install using pip:
pip install pytest-isort
Activate isort checks when calling py.test:
py.test --isort
This will execute an isort check against every .py file (if its not ignored).
Example
Given you have some files with incorrect sorted imports:
# content of file1.py import os import sys import random # content of file2.py import json import sys import os
If you run py.test and activate the isort plugin you’ll se something like this:
$ py.test --isort ========================= test session starts ========================== platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4 plugins: isort collected 2 items file1.py F file2.py F =============================== FAILURES =============================== _____________________________ isort-check ______________________________ ERROR: file1.py Imports are incorrectly sorted. import os +import random import sys -import random _____________________________ isort-check ______________________________ ERROR: file2.py Imports are incorrectly sorted. import json +import os import sys -import os ======================= 2 failed in 0.02 seconds =======================
If you can’t change the import ordering for file2.py, you have the option to exclude file2.py from isort checks.
Simply add the isort_ignore setting to your py.test configuration file:
[pytest] isort_ignore = file2.py
Then re-run the tests:
$ py.test --isort ========================= test session starts ========================== platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4 plugins: isort collected 1 items file1.py F =============================== FAILURES =============================== _____________________________ isort-check ______________________________ ERROR: file1.py Imports are incorrectly sorted. import os +import random import sys -import random ======================= 1 failed in 0.02 seconds =======================
As you can see, file2.py is ignored and not checked. Now fix the import ordering in file1.py and re-run the tests:
$ py.test --isort ========================= test session starts ========================== platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4 plugins: isort collected 1 items file1.py . ======================= 1 passed in 0.01 seconds ======================
Everything is properly again. Congratulations!
If you run your testsuite again and again, py.test will only check changed files to speed up. You see this by adding -rs to your py.test options:
$ py.test --isort -rs ========================= test session starts ========================== platform darwin -- Python 2.7.9 -- py-1.4.26 -- pytest-2.6.4 plugins: isort collected 1 items file1.py s ======================= short test summary info ======================== SKIP [1] pytest_isort.py:145: file(s) previously passed isort checks ====================== 1 skipped in 0.01 seconds ======================
Configuration
You can exclude files from isort checks by using the isort_ignore setting in your py.test configuration file (e.g. pytest.ini):
# content of setup.cfg [pytest] isort_ignore = docs/conf.py *migrations/*.py
This will ignore the conf.py python file inside the docs folder and also ignore any python file in migrations folders.
In addition, excluded files in isort’s configuration will be ignored too.
Notes
You can use isort to rewrite your python files and re-order the imports but this is not part of this plugin.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pytest_isort-4.0.0.tar.gz
.
File metadata
- Download URL: pytest_isort-4.0.0.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.2 Linux/6.5.0-1015-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 00e99642e282b00b849cf9b49d9102a02ab8c4ec549ace57d7868b723713aaa9 |
|
MD5 | c2b49b086976c98194b8d4da3bc01ce1 |
|
BLAKE2b-256 | 69f0024f4a2ee0b4799a720f352dd7ef9a99077b48bd2c050ff2b08c14feb41d |
File details
Details for the file pytest_isort-4.0.0-py3-none-any.whl
.
File metadata
- Download URL: pytest_isort-4.0.0-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.12.2 Linux/6.5.0-1015-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 14bb3281bab587d6beb53129481e8885232249ec5cfeaf5d903a561ff0589620 |
|
MD5 | ad6d22c21c26359ae0d1d4a6859f5481 |
|
BLAKE2b-256 | f1a6848a7bdec751e5648e7200c0e5339398eb9607666d83848840c8c1553a80 |