{"id":28569648,"url":"https://github.com/abilian/abilian-devtools","last_synced_at":"2025-06-10T17:15:53.542Z","repository":{"id":168283578,"uuid":"570934706","full_name":"abilian/abilian-devtools","owner":"abilian","description":"A curated set of dependencies for quality software development","archived":false,"fork":false,"pushed_at":"2025-04-22T10:11:02.000Z","size":403,"stargazers_count":11,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-22T11:25:42.444Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abilian.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSES/MIT.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-26T15:58:08.000Z","updated_at":"2025-04-22T10:11:04.000Z","dependencies_parsed_at":"2024-01-26T18:28:26.757Z","dependency_job_id":"2c15cdfd-b4e4-4ded-85af-b8c68f865b72","html_url":"https://github.com/abilian/abilian-devtools","commit_stats":null,"previous_names":["abilian/abilian-devtools"],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abilian%2Fabilian-devtools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abilian%2Fabilian-devtools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abilian%2Fabilian-devtools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abilian%2Fabilian-devtools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abilian","download_url":"https://codeload.github.com/abilian/abilian-devtools/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abilian%2Fabilian-devtools/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259114712,"owners_count":22807256,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-10T17:15:20.739Z","updated_at":"2025-06-10T17:15:53.534Z","avatar_url":"https://github.com/abilian.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"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, \u003chttps://github.com/abilian/nua\u003e (`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 \u003ccommand\u003e [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 \u0026 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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabilian%2Fabilian-devtools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabilian%2Fabilian-devtools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabilian%2Fabilian-devtools/lists"}