pysen
Python linting made easy. Also a casual yet honorific way to address individuals who have entered an organization prior to you.
Decision gist · record as of 2026-08-14
Yes. Actively maintained with no known vulnerabilities and low install friction. Worth installing if you want to centralize linter configuration and reduce boilerplate across multiple tools. The main trade-off is that you must manage linter versions separately; this package does not lock them for you. If your team already uses multiple linters and wants a single source of truth for their settings, the benefit is substantial.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires Python 3.10 or later.
- Only checks files tracked in git by default; untracked files are skipped unless PYSEN_IGNORE_GIT=1 is set.
- Low friction: pure Python wheel with five runtime dependencies (colorlog, dacite, gitpython, tomlkit, unidiff).
License · maintenance · safety
MIT (permissive) — MIT license permits commercial and private use with minimal restrictions; you may use and modify freely in most contexts.
last release 2026-07-21 (24 days) · last repo commit 2026-07-21 · 492 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 1,249,674 downloads/mo, #4,162 on PyPI
Alternatives
Verify before relying
pip install "pysen[lint]"
Create pysen.toml:
[tool.pysen]
version = "0.12"
[tool.pysen.lint]
enable_black = true
enable_flake8 = true
enable_isort = true
enable_mypy = true
Then run:
pysen run lint
pysen run format- Whether separately-installed linter versions are reliably compatible with the orchestration layer
- Performance impact on large codebases with many files
- Extent of customization possible through the plugin interface beyond documented examples
- How mypy_preset="strict" interacts with other mypy configuration options
What it is and what it does
This package is a configuration and execution layer for Python linting tools. Instead of managing separate configuration files for black, flake8, isort, and mypy, you write a single configuration (in pysen.toml or pyproject.toml) that describes linting preferences at a higher level of abstraction. The package then generates the appropriate tool-specific configuration files on the fly and runs each linter with those settings.
The package does not install or manage linter versions itself—you install those separately via pip, pipenv, or poetry—but it coordinates their execution and ensures their configurations align with your declared preferences. It supports both CLI usage and programmatic configuration through Python scripts, and integrates with editors. The package is not a linter itself; it is a wrapper and orchestrator that reduces configuration boilerplate across a team's toolchain.
Use it for
- Set up consistent linting across a team by committing a single configuration file instead of managing multiple separate linter configs.
- Run format and lint checks in CI/CD pipelines with a single command that applies all configured tools.
- Generate persistent linter configuration files for IDE integration, then point your editor to those files.
- Extend with custom plugins to orchestrate additional tools or customize how existing linters are invoked.
- Enforce a strict mypy preset across a codebase while keeping other linter settings flexible.
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes.
Actively maintained with no known vulnerabilities and low install friction. Worth installing if you want to centralize linter configuration and reduce boilerplate across multiple tools. The main trade-off is that you must manage linter versions separately; this package does not lock them for you. If your team already uses multiple linters and wants a single source of truth for their settings, the benefit is substantial.
Install
pysen on PyPI
Before you install
Low friction: pure Python wheel with five runtime dependencies (colorlog, dacite, gitpython, tomlkit, unidiff). Actively maintained with recent release and no known vulnerabilities.
Requires Python 3.10 or later. Only checks files tracked in git by default; untracked files are skipped unless PYSEN_IGNORE_GIT=1 is set.
License in practice
MIT license permits commercial and private use with minimal restrictions; you may use and modify freely in most contexts.
Quickstart
pip install "pysen[lint]"
Create pysen.toml:
[tool.pysen]
version = "0.12"
[tool.pysen.lint]
enable_black = true
enable_flake8 = true
enable_isort = true
enable_mypy = true
Then run:
pysen run lint
pysen run format
Verify before relying
- Whether separately-installed linter versions are reliably compatible with the orchestration layer
- Performance impact on large codebases with many files
- Extent of customization possible through the plugin interface beyond documented examples
- How mypy_preset="strict" interacts with other mypy configuration options
Package facts
| License | MIT permissive |
| Python support | Supports the current Python release >=3.10 |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 5 packagescolorlogdacitegitpythontomlkitunidiff |
| Maintenance | Actively maintained 24 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 1,249,674 / month, #4,162 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: MIT LicenseOperating System :: MacOSOperating System :: POSIXOperating System :: UnixProgramming Language :: PythonProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14 |
Evidence: pysen-0.12.1-py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “python linter orchestration”
- pysenOrchestrates multiple Python linters (black, flake8, isort, mypy)…
- lintrunnerLintrunner orchestrates and runs multiple linters across a codebase,…
- lintrunner-adaptersProvides adapter integrations for lintrunner, enabling unified…
Give your agent the search over MCP, or paste the wish link into any chat.
More Quality Assurance packages
Coverage.py measures which lines of Python code are executed during test runs, reporting coverage percentages and identifying untested code paths.
Install it if you want to measure test completeness or enforce coverage thresholds in your project.
Ruff is a Python linter and code formatter written in Rust that combines linting, formatting, and code fixing into a single tool, replacing Flake8, Black, isort, and related utilities.
Pexpect spawns and controls interactive console applications by sending input and matching output patterns, automating tasks that would otherwise require manual interaction.
Black reformats Python source code to a consistent style by parsing entire files and rewriting them according to an opinionated, deterministic set of rules, eliminating manual formatting decisions.
pytest-xdist distributes pytest tests across multiple CPU cores or machines to speed up test execution, with the simplest usage being `pytest -n auto` to spawn workers equal to available CPUs.
Install it if your test suite takes long enough that parallelization would save meaningful time.
Validates AWS CloudFormation templates in YAML or JSON format against resource provider schemas and best practices, checking property values and configuration correctness.
Install it if you work with CloudFormation templates.
See also lintrunner · lintrunner-adapters · nbqa · Flake8-pyproject · pyproject-flake8 · import-linter · flake8-isort · python-lsp-server · dlint