A lightweight Python linter for checking unused docstrings.
Project description
pymport
About
A lightweight Python linter for checking unused imports in your Python files.
Features
- 🧹 Detects unused or shadowed
importsthat linters like ruff may miss - 🚫 Use
noqacomments to ignore imports you want to keep - ⚙️ Minimalist CLI interface for easy integration in CI/CD pipelines
- 🐍 No external dependencies beyond the Python standard library
- ✅ 100% test coverage with automated tests
[!IMPORTANT] False positives
This tool is not possible to assure a 100% false positive free result due to the possible collateral execution effects when importing a module. This is, importing a module can affect or enable some feature needed somewhere else, so not using anything from that imported package/module does not necessarily mean is not needed.
A minimal typical example could be:
import os.path
print(os.curdir)
📦 Installation
To install pymport using pip, run the following command:
pip install pymport --upgrade
⚡ Quick Start
To run the linter on the current directory, use the following command:
pymport .
- This will check all Python files in the current directory and its subdirectories.
Command-Line Interface
Usage: pymport [FILE] [--help] [--quiet] [--ignore=DIR]
| Argument / Option | Description |
|---|---|
[FILE] |
Files or directories to lint. (Need at least one file or dir to check.) |
[--help] |
Show help message and exit. |
[--quiet] |
Decrease verbosity. |
[--ignore] |
Directory basename to ignore. Can be used multiple times. |
[!NOTE]
Option
--ignoredefaults to:.venv, .env, .git, .hg, .pytest_cache, .ruff_cache, __pycache__
[!TIP] Ignoring Unused Imports
Use a comment like
# noqa: unused-importto ignore the line.
Output
When unused imports are detected, they will be reported in the following format:
path/to/file.py:LINE-NUMBER: UNUSED-IMPORT-NAME
[!NOTE]
- Exit code
0means no unused imports were found; exit code1indicates that unused imports were detected.- When no unused imports are found, success message is printed, unless
--quietis used.
🛠️ Development
To contribute to the project, you can run the following commands for testing and documentation:
First, ensure you have the latest version of pip:
python -m pip install --upgrade pip
Running Tests
pip install --group=test --upgrade # Install test dependencies, skip if already installed
python -m pytest tests/ # Run all tests
python -m pytest tests/ --cov # Run tests with coverage
Running Linter
pip install --group=lint --upgrade # Install lint dependencies, skip if already installed
ruff check . # Run linter
🗒️ License
This project is licensed under the MIT license.
Project details
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pymport-0.0.3.tar.gz.
File metadata
- Download URL: pymport-0.0.3.tar.gz
- Upload date:
- Size: 7.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7242cccfb4aa24e16b74dc66e290e37cb9bc9c5dbb67dc1b0b3c66f79d8565f
|
|
| MD5 |
8c9e6b9ca044eed5d38bcc28d783a4db
|
|
| BLAKE2b-256 |
b1d54afdfc523ef5d544d790d7c3e0c70e63e0a9d51e2d064c81cb6001890b3a
|
File details
Details for the file pymport-0.0.3-py3-none-any.whl.
File metadata
- Download URL: pymport-0.0.3-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33ee754e49949158b708fce920baffaa08d9bd5a6113a3c580238d8295f4b0fa
|
|
| MD5 |
78008ca946fa36dc60920f6077074418
|
|
| BLAKE2b-256 |
79e3bda816a0ec898bbf797175ac92a6e5b390838aa753e4fd4d33359527c40f
|