Skip to main content

A lightweight Python linter for checking unused docstrings.

Project description

pymport

GitHub tag PyPI CI versions codecov license Linter: ruff

About

A lightweight Python linter for checking unused imports in your Python files.

Features

  • 🧹 Detects unused or shadowed imports that linters like ruff may miss
  • 🚫 Use noqa comments 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 --ignore defaults to: .venv, .env, .git, .hg, .pytest_cache, .ruff_cache, __pycache__

[!TIP] Ignoring Unused Imports

Use a comment like # noqa: unused-import to 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 0 means no unused imports were found; exit code 1 indicates that unused imports were detected.
  • When no unused imports are found, success message is printed, unless --quiet is 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

pymport-0.0.3.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymport-0.0.3-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

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

Hashes for pymport-0.0.3.tar.gz
Algorithm Hash digest
SHA256 c7242cccfb4aa24e16b74dc66e290e37cb9bc9c5dbb67dc1b0b3c66f79d8565f
MD5 8c9e6b9ca044eed5d38bcc28d783a4db
BLAKE2b-256 b1d54afdfc523ef5d544d790d7c3e0c70e63e0a9d51e2d064c81cb6001890b3a

See more details on using hashes here.

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

Hashes for pymport-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 33ee754e49949158b708fce920baffaa08d9bd5a6113a3c580238d8295f4b0fa
MD5 78008ca946fa36dc60920f6077074418
BLAKE2b-256 79e3bda816a0ec898bbf797175ac92a6e5b390838aa753e4fd4d33359527c40f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page