awesome-pyproject
An Awesome List of projects using the pyproject.toml Python configuration file.
https://github.com/carlosperate/awesome-pyproject
Last synced: 18 days ago
JSON representation
Articles
- Clarifying PEP 518 (a.k.a. pyproject.toml)
- What the heck is pyproject.toml?
- pyproject.toml Reference - Python Developer Tooling Handbook - A reference guide to pyproject.toml covering its role in Python packaging, key sections, and how tools use it.
Code Analysis
- Bandit - A tool designed to find common security issues in Python code.
- FlakeHell - Flake8 wrapper to make it nice, legacy-friendly, configurable.
- import-linter - Import Linter defines and enforces rules for the imports within and between Python packages.
- interrogate - Interrogate a codebase for docstring coverage.
- Mypy - An optional static type checker for Python (PEP 484).
- Nitpick - Flake8 plugin to enforce the same tool configuration (flake8, isort, mypy, Pylint...) across multiple Python projects.
- pydocstyle - A static analysis tool for checking compliance with Python docstring conventions.
- Pyright - Static type checker for Python.
- pytest-pylint - A pytest plugin for running pylint against your codebase.
- Robocop - Tool for static code analysis of Robot Framework language.
- rstcheck - Checks syntax of reStructuredText and code blocks nested within it.
- wemake-python-styleguide - The strictest and most opinionated python linter ever!
- deptry - A command line tool to check for issues with dependencies in a Python project, such as obsolete or missing dependencies.
- Refurb - A tool for refurbishing and modernizing Python codebases.
- Unimport - Detects unused python libraries.
Code Formatting
- Black - The uncompromising Python code formatter.
- Blue - The slightly less uncompromising Python code formatter.
- flake8-isort - flake8 plugin that integrates isort.
- isort - A Python utility / library to sort imports alphabetically, and automatically separated into sections.
- autoflake - Removes unused imports and unused variables as reported by pyflakes.
- autoimport - Automatically add missing imports and remove unused imports.
- Darker - Apply black reformatting to Python files only in regions changed since a given commit.
- YAPF - A formatter for Python files.
- autopep8 - A tool that automatically formats Python code to conform to the PEP 8 style guide.
Open PEPs
Rejected/Withdrawn/Superseded
Other Tools
- Commitizen - Create commiting rules for projects, auto bump versions and auto changelog generation.
- datamodel-code-generator - Creates Pydantic data-model code from OpenAPI/JSON Schema files.
- ini2toml - Automatically translates .ini/.cfg files into TOML.
- Python License Checker - Check python packages from requirement.txt/pyproject.toml and report issues.
- Tartufo - Searches through git repositories and their history for high entropy strings and secrets.
- zsh-autoswitch-virtualenv - ZSH plugin to automatically switch python virtualenvs and Pipenvs as you move between directories.
- django-pyproject - Django package to store some or all of your settings in your pyproject.toml file.
- Poe the Poet - A task runner that works well with Poetry.
- Poetrify - Convert a Pipfile (or requirements.txt) to pyproject.toml for Poetry.
- poetry-version - Python library for extracting version from poetry pyproject.toml file.
- towncrier - A utility to produce useful, summarised news files for your project.
- Vendy - A tool for vendoring third-party packages into your project.
- Autohooks - Library for managing git hooks.
- poetry-setup - Generate setup.py (setuptools) from pyproject.toml.
Packaging & Project Management
- BeeWare Briefcase - Tools to support converting a Python project into a standalone native application.
- DepHell - Project management for Python. Manage packages: convert between formats, lock, install, resolve, isolate, test, build graph, show outdated, audit. Manage venvs, build package, bump version.
- Hatch - Modern, extensible Python project manager.
- Maturin - Build and publish crates with pyo3, rust-cpython and cffi bindings as well as rust binaries as python packages.
- pip - The package installer for Python. You can use pip to install packages from the Python Package Index and other indexes.
- check-wheel-contents - Check your wheels have the right contents.
-
FawltyDeps
- Find undeclared and unused dependencies in your Python project. Verify that your declared dependencies (in
pyproject.tomlor elsewhere) match what you actuallyimportin your code. - Pyflow - An installation and dependency system for Python.
- setuptools_scm - Handles managing your Python package versions in SCM metadata instead of declaring them as the version argument or in a SCM managed file.
Projects discussing the use of `pyproject.toml`
Rejected/Withdrawn/Superseded
- Alembic - A database migrations tool for SQLAlchemy.
- Briefcase Bootstrap Template - A template for starting a Python app that will be deployed using briefcase.
- bumpversion - Version-bump your software with a single command.
- bump2version - An interim fork with the intent to merge back to the original project.
- Dependency Parser - A parser for Python dependency files.
- flake8 - A python tool that glues together pep8, pyflakes, mccabe, and third-party plugins to check the style and quality of some python code.
- gitlint - Linting for your git commit messages.
- Invoke - Library for managing shell-oriented subprocesses and organizing executable Python code into CLI-invokable tasks.
- mach-nix - Create highly reproducible python environments.
- nose2 - The successor to nose. Its purpose is to extend unittest to make testing nicer and easier to understand.
- pycodestyle - A tool to check your Python code against some of the style conventions in PEP 8.
- pyenv - Simple Python version management.
- pytest-benchmark - A pytest fixture for benchmarking code.
- Pylama - Code audit tool for Python and JavaScript. Pylama wraps these tools: pycodestyle, pydocstyle, PyFlakes, Mccabe, Pylint, Radon, gjslint, eradicate, mypy.
- PyOxidizer - A modern Python application packaging and distribution tool.
- pypyr - Task-runner cli & api for automation pipelines. Automate anything by combining commands, different scripts in different languages & applications into one pipeline process.
- pytype - A static type analyzer for Python code.
- pyup - tool to update your project's dependencies on GitHub. Runs on pyup.io, comes with a command line interface.
- Radon - A Python tool that computes various metrics from the source code.
- readthedocs.org - Read the Docs hosts documentation for the open source community.
- Spack - A flexible package manager that supports multiple versions, configurations, platforms, and compilers.
- zest.releaser - Python software releasing made easy and repeatable.
- prospector - A tool to analyse Python code and output information about errors, potential problems, convention violations and complexity.
Project Templates
- cookiecutter-poetry - A modern cookiecutter template for Python projects that use Poetry for their dependency management.
- cookiecutter-pylibrary - Cookiecutter template for a Python python library.
- Hypermodern Cookiecutter - Cookiecutter template for a Python package based on the Hypermodern Python article series.
- Jace's Python Template - A template for new Python libraries.
- PyPA Sample Project - A sample project that exists for PyPUG's "Tutorial on Packaging and Distributing Projects".
- PyScaffold - Python project template generator with batteries included.
- Python Packages Project Generator - Cookiecutter template with state-of-the-art libraries and best development practices for Python.
- Tyrannosaurus - An opinionated, 2021+ Python template and project generator with many integrations and an automated CI/CD workflow triggered only through Git and GitHub.
- wemake-django-template - Bleeding edge django template focused on code quality and security.
- wemake-python-package - Bleeding edge cookiecutter template to create new python packages.
Testing
- Coverage.py - Code coverage measurement for Python.
- pytest - A testing framework that makes it easy to write small tests, yet scales to support complex functional testing.
- Ward - A modern Python test framework designed to help you find and fix flaws faster.
- ptr - Python Test Runner (ptr) was born to run tests in an opinionated way, within arbitrary code repositories.
- pytest-env - A pytest plugin that enables you to set environment variables in a pyproject.toml file.