Abilian Development Tools (`abilian-devtools` or `adt`)
=======================================================
Abilian Development Tools (ADT) is a curated collection of Python development tools that includes formatters, testing frameworks, style checkers, type checkers, and supply chain audit tools. By adding `abilian-devtools = '*'` to your project's `requirements.in` or `pyproject.toml`, you can access over 40+ curated projects and plugins.
Proper configuration and usage in your project is still required.
Additionally, the package provides a command-line interface (CLI) called adt to help users get started with various development tasks such as running tests, security audits, and code formatting.
ADT was developped at [Abilian](https://abilian.com/) as a tool to help manage dozens of Python projects (open source or not). We hope it can be useful to others too.
What this is?
-------------
This is a curated, and opiniated, collection of best-of-breed Python development tools:
- Formatters (`black`, `isort`, `docformatter`)
- Testing frameworks (`pytest` and friends, `nox`)
- Style checkers (`ruff`, `flake8` and friends)
- Type checkers (`mypy`, `pyright`)
- Supply chain audit (`pip-audit`, `safety`, `reuse`, `vulture`, `deptry`)
- And more.
Obviously, all the credit goes to the creators and maintainers of these wonderful projects. You have all our gratitude!
Usage
-----
Instead of having to track all the 40+ projects and plugins we have curated, you just need to add `abilian-devtools = '*'` in your project's `requirements.in` or `pyproject.toml`.
You still need to properly configure and call them in your own projects.
For example configuration, see, for instance, <https://github.com/abilian/nua> (`Makefile`, `pyproject.toml`, `setup.cfg`, `tasks.py`, `noxfile.py`...).
CLI helper
----------
As a bonus, we're providing a CLI called `adt` which can help you get started:
```
$ adt
adt (0.5.x)
Usage:
adt <command> [options] [arguments]
Options:
-V Show version and exit
-d Enable debug mode
-v Increase verbosity
Available commands:
all Run everything (linters and tests).
audit Run security audit.
bump-version Bump version in pyproject.toml, commit & apply tag.
check Run checker/linters on specified files or directories.
clean Cleanup cruft.
cruft Run cruft audit.
format Format code in specified files or directories.
help-make Helper to generate the `make help` message.
test Run tests.
```
Why this?
---------
[We](https://abilian.com/) have created Abilian DevTools to help us maintain [our own projects](https://github.com/abilian/), and we thought it could be useful to others.
Here are some of the reasons why we have created this project:
- **Streamlined Tool Collection**: Abilian Devtools brings together a wide range of Python development tools in a single, curated package. This allows developers to focus on their work without spending time searching for and integrating individual tools.
- **Consistency**: By using a curated set of best-of-breed tools, our team can achieve a consistent level of code quality, style, and security across their projects.
- **Simplified Dependency Management**: Instead of managing individual dependencies for each tool, developers only need to add abilian-devtools to their project's `requirements.in` or `pyproject.toml`. This makes it easier to maintain and update dependencies over time.
- **Easy-to-use CLI**: The `adt` command-line utility simplifies common development tasks such as running tests, code formatting, and security audits. This can save time and effort, especially for those new to these tools.
- **Up-to-date Toolset**: Abilian Devtools aims to provide an up-to-date collection of tools, ensuring that developers have access to the latest features and improvements without having to manually track and update each tool.
Roadmap
-------
Here are some ideas for future improvements:
- **Support for additional tools**: for instance, tools that deal with changelogs (via [Conventional Commits](https://www.conventionalcommits.org/)), versioning, documentation...
- **Monorepo support**: Better support for monorepos.
- **Customization**: The curated nature of Abilian Devtools means that it comes with a predefined set of tools. Your project may require additional or alternative tools, or different settings. ADT could help managing (and updating) settings according to your own tastes and needs.
- **Generating configuration and supporting files**: Currently our projects are generated from a template by third-party tools ([Cruft](https://pypi.org/project/cruft/) or [Cookiecutter](https://pypi.org/project/cookiecutter/), using [this template](https://github.com/abilian/cookiecutter-abilian-python)). ADT could help generating configuration files for the various tools (`pyproject.toml`, `setup.cfg`, `noxfile.py`, `Makefile`, `tasks.py`...).
- **Updating configuration and supporting files**: As tools and best practices evolves, and for long-running projects, configuration need to be adapted over time, which can become quite time-consuming, specially when you are working on many small projects (or monorepos). Tools like [Cruft](https://pypi.org/project/cruft/) or [Medikit](https://python-medikit.github.io/)) can help, but in our experience are too fragile. ADT could help with this.
- **CI/CD**: ADT could help with CI/CD integration.
Discussion
----------
- [On GitHub](https://github.com/abilian/abilian-devtools/discussions) (evergreen)
- [On Reddit](https://www.reddit.com/r/Python/comments/136d7yd/abilian_development_tools_a_curated_collection_of/) (May 2023)
- [On AFPY Forum](https://discuss.afpy.org/t/abilian-development-tools-est-une-collection-doutils-de-developpement-python-qui-comprend-des-formateurs-des-frameworks-de-tests-des-verificateurs-de-style-des-verificateurs-de-type-et-des-outils-daudit-de-la-chaine-dapprovisionnement-logicielle/1548) (May 2023, in French)
References
----------
[This presentation from 2017](https://speakerdeck.com/sfermigier/python-quality-engineering-a-tour-of-best-practices) was given at the Paris Open Source Summit (POSS). Many tools have evolved or appeared since then, but the general principles are still valid.
[This presentation from 2005](https://speakerdeck.com/sfermigier/python-best-practices-rmll-2005) was given (in French) at the "Rencontres Mondiales du Logiciel Libre" in Bordeaux. It's obviously outdated, but kept for nostalgic reasons ;)
Raw data
{
"_id": null,
"home_page": "https://github.com/abilian/abilian-devtools",
"name": "abilian-devtools",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.9",
"maintainer_email": null,
"keywords": "qa, testing, linting, security, supply_chain",
"author": "Stefane Fermigier",
"author_email": "sf@abilian.com",
"download_url": "https://files.pythonhosted.org/packages/9f/e9/f2afbd6db94e0f471cc9e1a557bf388c6c4904ba672f05571983c82c8c90/abilian_devtools-0.5.21.tar.gz",
"platform": null,
"description": "Abilian Development Tools (`abilian-devtools` or `adt`)\n=======================================================\n\nAbilian Development Tools (ADT) is a curated collection of Python development tools that includes formatters, testing frameworks, style checkers, type checkers, and supply chain audit tools. By adding `abilian-devtools = '*'` to your project's `requirements.in` or `pyproject.toml`, you can access over 40+ curated projects and plugins.\nProper configuration and usage in your project is still required.\nAdditionally, the package provides a command-line interface (CLI) called adt to help users get started with various development tasks such as running tests, security audits, and code formatting.\nADT was developped at [Abilian](https://abilian.com/) as a tool to help manage dozens of Python projects (open source or not). We hope it can be useful to others too.\n\n\nWhat this is?\n-------------\n\nThis is a curated, and opiniated, collection of best-of-breed Python development tools:\n\n- Formatters (`black`, `isort`, `docformatter`)\n- Testing frameworks (`pytest` and friends, `nox`)\n- Style checkers (`ruff`, `flake8` and friends)\n- Type checkers (`mypy`, `pyright`)\n- Supply chain audit (`pip-audit`, `safety`, `reuse`, `vulture`, `deptry`)\n- And more.\n\nObviously, all the credit goes to the creators and maintainers of these wonderful projects. You have all our gratitude!\n\n\nUsage\n-----\n\nInstead of having to track all the 40+ projects and plugins we have curated, you just need to add `abilian-devtools = '*'` in your project's `requirements.in` or `pyproject.toml`.\n\nYou still need to properly configure and call them in your own projects.\n\nFor example configuration, see, for instance, <https://github.com/abilian/nua> (`Makefile`, `pyproject.toml`, `setup.cfg`, `tasks.py`, `noxfile.py`...).\n\n\nCLI helper\n----------\n\nAs a bonus, we're providing a CLI called `adt` which can help you get started:\n\n```\n$ adt\nadt (0.5.x)\n\nUsage:\n adt <command> [options] [arguments]\n\nOptions:\n -V Show version and exit\n -d Enable debug mode\n -v Increase verbosity\n\nAvailable commands:\n all Run everything (linters and tests).\n audit Run security audit.\n bump-version Bump version in pyproject.toml, commit & apply tag.\n check Run checker/linters on specified files or directories.\n clean Cleanup cruft.\n cruft Run cruft audit.\n format Format code in specified files or directories.\n help-make Helper to generate the `make help` message.\n test Run tests.\n```\n\n\nWhy this?\n---------\n\n[We](https://abilian.com/) have created Abilian DevTools to help us maintain [our own projects](https://github.com/abilian/), and we thought it could be useful to others.\n\nHere are some of the reasons why we have created this project:\n\n- **Streamlined Tool Collection**: Abilian Devtools brings together a wide range of Python development tools in a single, curated package. This allows developers to focus on their work without spending time searching for and integrating individual tools.\n\n- **Consistency**: By using a curated set of best-of-breed tools, our team can achieve a consistent level of code quality, style, and security across their projects.\n\n- **Simplified Dependency Management**: Instead of managing individual dependencies for each tool, developers only need to add abilian-devtools to their project's `requirements.in` or `pyproject.toml`. This makes it easier to maintain and update dependencies over time.\n\n- **Easy-to-use CLI**: The `adt` command-line utility simplifies common development tasks such as running tests, code formatting, and security audits. This can save time and effort, especially for those new to these tools.\n\n- **Up-to-date Toolset**: Abilian Devtools aims to provide an up-to-date collection of tools, ensuring that developers have access to the latest features and improvements without having to manually track and update each tool.\n\n\nRoadmap\n-------\n\nHere are some ideas for future improvements:\n\n- **Support for additional tools**: for instance, tools that deal with changelogs (via [Conventional Commits](https://www.conventionalcommits.org/)), versioning, documentation...\n\n- **Monorepo support**: Better support for monorepos.\n\n- **Customization**: The curated nature of Abilian Devtools means that it comes with a predefined set of tools. Your project may require additional or alternative tools, or different settings. ADT could help managing (and updating) settings according to your own tastes and needs.\n\n- **Generating configuration and supporting files**: Currently our projects are generated from a template by third-party tools ([Cruft](https://pypi.org/project/cruft/) or [Cookiecutter](https://pypi.org/project/cookiecutter/), using [this template](https://github.com/abilian/cookiecutter-abilian-python)). ADT could help generating configuration files for the various tools (`pyproject.toml`, `setup.cfg`, `noxfile.py`, `Makefile`, `tasks.py`...).\n\n- **Updating configuration and supporting files**: As tools and best practices evolves, and for long-running projects, configuration need to be adapted over time, which can become quite time-consuming, specially when you are working on many small projects (or monorepos). Tools like [Cruft](https://pypi.org/project/cruft/) or [Medikit](https://python-medikit.github.io/)) can help, but in our experience are too fragile. ADT could help with this.\n\n- **CI/CD**: ADT could help with CI/CD integration.\n\nDiscussion\n----------\n\n- [On GitHub](https://github.com/abilian/abilian-devtools/discussions) (evergreen)\n- [On Reddit](https://www.reddit.com/r/Python/comments/136d7yd/abilian_development_tools_a_curated_collection_of/) (May 2023)\n- [On AFPY Forum](https://discuss.afpy.org/t/abilian-development-tools-est-une-collection-doutils-de-developpement-python-qui-comprend-des-formateurs-des-frameworks-de-tests-des-verificateurs-de-style-des-verificateurs-de-type-et-des-outils-daudit-de-la-chaine-dapprovisionnement-logicielle/1548) (May 2023, in French)\n\nReferences\n----------\n\n[This presentation from 2017](https://speakerdeck.com/sfermigier/python-quality-engineering-a-tour-of-best-practices) was given at the Paris Open Source Summit (POSS). Many tools have evolved or appeared since then, but the general principles are still valid.\n\n[This presentation from 2005](https://speakerdeck.com/sfermigier/python-best-practices-rmll-2005) was given (in French) at the \"Rencontres Mondiales du Logiciel Libre\" in Bordeaux. It's obviously outdated, but kept for nostalgic reasons ;)\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A curated set of dependencies for quality software development",
"version": "0.5.21",
"project_urls": {
"Homepage": "https://github.com/abilian/abilian-devtools",
"Repository": "https://github.com/abilian/abilian-devtools"
},
"split_keywords": [
"qa",
" testing",
" linting",
" security",
" supply_chain"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6e1dcce4a2b07610409385fd097b872ad08fd0ae747e8e9b5ec6899ec0834241",
"md5": "28fad7dc7bd804718b902be06b5fe19b",
"sha256": "0546033b08014c0342335d4b50bd1f03ae00d3147f3a33b366c771f5f4f45eab"
},
"downloads": -1,
"filename": "abilian_devtools-0.5.21-py3-none-any.whl",
"has_sig": false,
"md5_digest": "28fad7dc7bd804718b902be06b5fe19b",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.9",
"size": 15020,
"upload_time": "2024-03-25T16:57:17",
"upload_time_iso_8601": "2024-03-25T16:57:17.654735Z",
"url": "https://files.pythonhosted.org/packages/6e/1d/cce4a2b07610409385fd097b872ad08fd0ae747e8e9b5ec6899ec0834241/abilian_devtools-0.5.21-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9fe9f2afbd6db94e0f471cc9e1a557bf388c6c4904ba672f05571983c82c8c90",
"md5": "a165b786048d5a754abc5d8f0695c713",
"sha256": "00dcd1a201c8d3f879654c403cb34fbac892fd71735d142eb5f0bc4795565d85"
},
"downloads": -1,
"filename": "abilian_devtools-0.5.21.tar.gz",
"has_sig": false,
"md5_digest": "a165b786048d5a754abc5d8f0695c713",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.9",
"size": 12931,
"upload_time": "2024-03-25T16:57:19",
"upload_time_iso_8601": "2024-03-25T16:57:19.141785Z",
"url": "https://files.pythonhosted.org/packages/9f/e9/f2afbd6db94e0f471cc9e1a557bf388c6c4904ba672f05571983c82c8c90/abilian_devtools-0.5.21.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-25 16:57:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "abilian",
"github_project": "abilian-devtools",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"tox": true,
"lcname": "abilian-devtools"
}