Photo by Jongsun Leed / Unsplash
Inspecting dependency inference results
Photo by Agence Olloweb / Unsplash
Pants 2.19.0 is released!
Photo by Erol Ahmed / Unsplash
Pants 2.18.0 is released!
Photo by Joseph Barrientos / Unsplash
Pants 2.17.0 is released!
Photo by Ankush Minda / Unsplash
Sharing Pants plugins
Photo by Elaine Casap / Unsplash
If you need to make some functionality available to all engineers in your company, you can author and release a Pants plugin (either internally or via a public PyPI index) independently of the rest of the codebase...
Pants 2.16.0 is here!
This bird is called a ... Ruff! Just so you know. Photo by peterichman used under CC BY 2.0
Visibility features coming in Pants 2.16
Photo by Ben Hershey / Unsplash
Pants 2.16 introduces visibility features. These can be vital for keeping a monorepo's repository structure under control as the codebase grows. You'll benefit from having cleaner architecture and a dependency graph that is easier to reason about.
Tada, it's our new chat archive!
Photo by Nana Smirnova / Unsplash
Welcome to our new chat mirror, with all six of the current Slack public channels being mirrored to the web.
Two hermetic Pythons
Photo by Hamish Duncan / Unsplash
Make builds more reliable and save time doing so. The upcoming Pants 2.16 introduces a couple of exciting changes to make Pants safer, faster, and more user-friendly. Here we preview a pair of changes which increase hermeticity.
Environments: simpler multi-platform workflows
Photo by Milada Vigerova / Unsplash
Now you can cross-test or cross-build your code on multiple different platforms concurrently, using Environments. Pants uses its precise knowledge of your build's deps to run exactly the relevant processes inside reusable Docker containers (or evenly remotely on a cluster of workers)…
What we mean by "contributing" to Pants
Photo by Simon Maage / Unsplash
We embrace that open source is not code alone. We truly value a wide spectrum of contributions to Pants project and to the thriving community that underlies it. Here are some of the many ways anyone can potentially contribute to the vitality of Pants...
Write (or speak) about any of Pants community's favorite topics!
Photo by Unseen Studio / Unsplash
Linting Python at warp speed with Pants+Ruff
Photo by Mathew Schwartz / Unsplash
Now that Pants 2.15 is out, let's whet your appetite for 2.16: lint your Python monorepo faster than ever with Pants and Ruff, two projects that share a passion for combining the raw power of Rust with the elegance of Python.
Challenges in choosing a Python packaging format
Photo by Kira auf der Heide / Unsplash
Alexey reviews the Python packaging landscape. You'll learn more about the options you have, their pros and cons, and how to find the best approach to distribute your Python applications.
Pants 2.15: Easier multi-platform workflows, Docker build support, automatic code cleanup, and more!
"Blue Bill Duck" by Richard Ashurst licensed under CC BY 2.0
The 2.15 series represents the biggest change to Pants since version 2.0, and we're excited to share how it can let you complete more workflows, more easily, in more places. Including cross-platform builds, containerized builds with Docker, and easier configuration for local builds…
Pantsbuild Community Survey 2023
The pants launcher binary - a much simpler way to install and run Pants
Photo by Granada, used under the CC Attribution-ShareAlike 4.0 International license
My experience as a Pantsbuild maintainer
Photo by Xavi Cabrera / Unsplash
A Pants maintainer's personal and professional retrospective on nearly two years of involvement in the project, starting as a curious newcomer.
Tweag case study: From adopting Pants, to generalizing our CI to multiple Python versions
At Tweag we have a lot of experience with Bazel, as we maintain the Haskell rules. However, I had feedback that Bazel's Python support was not ideal. In contrast, Python is Pants' strong point. My client's fear of boilerplate also made Bazel unappealing. Whereas, Pants reduces boilerplate…
How we get quick feedback on new features via "experimental" backends
Image by NTNU, Faculty of Natural Sciences (license)
Pants balances release velocity and end-user stability via judicious use of deprecation cycles. Experimental backends are a way to get quick feedback on new functionality, before "graduating" it to the formal deprecation policy. Experimental features are still well-supported, and not to be feared!
Case Study: Introducing Pants to Oxbotica
Photo by Jake Blucker / Unsplash
A year in, builds take only a few minutes (~150K LOC, ~1500 tests), PRs have become smaller as devs no longer try to squeeze as much as code as possible into a single change, code reviews get completed much faster (and are more likely to provide useful feedback), development velocity has increased…
Celebrating two years of Pants 2
"Happy Birthday Balloon" by Shelley & Dave is licensed under CC BY-NC 2.0.
Pants 2's design incorporated many lessons learned from the first version of Pants, and many of its contemporary build systems. On Pants 2's 2nd anniversary, we return to some of the earliest decisions we made when rewriting Pants and look back at how they've helped us evolve at a remarkable pace…
Dependency inference: Pants's special sauce
Unlike earlier build systems, Pants v2 automatically infers your code's internal and external dependencies. And it does this at the file level, so that you get optimal invalidation, caching, and concurrency performance without having to manually create and maintain mountains of BUILD file metadata.
Pants 2.14: Less boilerplate, more Rust, better support for Go monorepos, interactive debugging support, and more!
Photo by James Wainscoat / Unsplash
Highlights include: less boilerplate via hierarchical defaults for target field values, better Golang monorepo support, with multiple go.mod
s, do more of your workflows in Pants with the experimental deploy
goal (with initial support for Helm), and much more…
Skipping GitHub Actions jobs while keeping branch protection rules that require them
How we worked around some quirks and limitations of GitHub Actions to skip CI jobs that aren't necessary in certain scenarios, without breaking branch protection rules that normally require those CI jobs to succeed.
Visualize your dependencies with Graph My Repo
GraphMyRepo.com in action, graphing the dependencies and code structure of pantsbuild/pants. Source: Toolchain.com
To make it easier to understand the value and power of dependency inference, Toolchain (the lead sponsor of Pants) has built a new site: Graph My Repo. As its name suggests, Graph My Repo shows you an interactive graph of a public GitHub repo of your choice…
Meet our newest Maintainer: A. Alonso Dominguez
I was born in the early 80's in a small fishing town in the Spanish Atlantic Coast, far away from the big urban sprawls and common traits of miles-long beaches, year-round summertime and chill out vibes normally identified with life in Spain. This is the autonomous region named Galicia…
Pants 2.13: Easier at the command line, easier parallel execution in CI, Kotlin support, and better Python and JVM support!
Photo by Henry & Co. / Unsplash
We're pleased to announce Pants 2.13.0. Highlights include better command line arguments for file sets, improved JVM support, easier access to parallel execution in CI, and lower barriers to adoption for Python projects that currently use existing distribution and build tools.
Astranis Case Study: Wrangling Python In a Monorepo
Monorepository linting via Pants's project introspection
Pantsbuild provides a common interface to run all code quality tools in parallel. This post explores how Pants augments excellent linters such as bandit, flake8, shellcheck, etc. by offering its own linting mechanisms, too, including regex matches, dependency analysis, and metadata checks.
Optimizing Python + Docker deploys using Pants
The Python and Docker logos, with a plus sign between them
Pants can build a PEX file, an executable zip file containing your Python code and all transitive dependencies. Deploying your application is as simple as copying the file. This post elaborates on how to get best performance out of the powerful combination of Pants+PEX+Docker.
Better CI/CD caching with Pants
Terminal output of a Pants run that retrieved test results from a remote cache instead of having to run the tests.
Pants 2.12: Improved performance for common cases, IDE support for Java and Scala
How we streamlined Apple M1 Support with self-hosted Github Actions runners
We ended up setting up a self-hosted GitHub Actions runner, on a hosted Mac M1. Getting the machine itself up and running was easy, thanks to MacStadium's simple, effective UX. But setting up the GHA runner on it was a little trickier, for a couple of reasons...
Multiple lockfiles in Python repos
Photo by Georgia de Lotz / Unsplash
Rather than forcing global or per-project lockfiles, Pants uses a hybrid approach...This allows a repo to operate with the minimum number of lockfiles required to support their conflicting library versions, without necessarily going to the costly extreme of per-project lockfiles.
Pants 2.11 adds Go Protobuf codegen, Pex lockfiles for Python, and parametrization
Talk Notes: PyCon US 2022 - Hermetic Environments in Pantsbuild
Photo by Charles Salutan / Unsplash
Pants 2.10 adds multiple Python lockfile support, PyOxidizer, Thrift codegen, and better linter parallelization
The 2022 annual community survey is a wrap, and the results are in!
Effective monorepos with Pants
Image by Markus Spiske / CC0 1.0
Working effectively in a monorepo requires appropriate tooling. While Pants can be a really useful system in repos of all sizes and architectures, it has some features that make it particularly appealing in a monorepo setting…
The monorepo approach to code management
Pants 2.10 adds Apache Thrift support for Python
Photo by Alexander Sinn / Unsplash
Pants's codegen support solves one of the biggest problems with code generation: how to make sure that local developers, CI, and production are using the same generated code?
Meet our newest Maintainer: Alexey Tereshenkov
Packaging Python with the PyOxidizer Pants Plugin
Meet our newest Maintainer: Joshua Cannon
Choosing a Python interpreter for a Pants project
Photo by Javier Allegue Barros / Unsplash
Choosing a compatible Python interpreter carefully is important not only for developers, but for the Pants repository administrators as well. Developers using Pants build system in their project may see various errors and have different behaviors depending on the Python interpreter...
Pants 2.9: Alpha support for Java and Scala, improvements for Docker and Go, and more
We're pleased to announce Pants 2.9.0, the latest release of Pants: the scalable and ergonomic build system!
You can call us Pantsbuild (or Pants, whichever you prefer)
Updating Pants BUILD files programmatically
Happy new year!
Photo by Anastasiia Rozumna / Unsplash
Docs improvements
Photo credit: pages by Amy Loves Ya, used under CC BY 2.0 license
Automatically unlocking concurrent builds and fine-grained caching on the JVM with dependency inference
Photo by Samantha Lam / Unsplash
pants-vs-bazel
Photo by Jeremy Bezanger / Unsplash
Many considerations go into evaluating and adopting a new build system: performance, scalability language and framework support, ease of adoption and use, extensibility, compatibility with existing practices, and more.…
Pants 2.8 adds Autoflake & Pyupgrade, Docker publishing, Golang, and Google Cloud Functions
Pants 2.8 adds experimental Golang support
Why Pants for Golang? A consistent interface for all languages & tools, integration with Git + advanced project introspection, and remote caching and execution. All with minimal boilerplate.
Pants supports PEP 517
Photo by Alessandra Caretto / Unsplash
Podcasting Pants
Streamline your Docker builds with Pants
Photo by Ian Taylor / Unsplash
Docker support in Pants 2.7
Photo by Ian Taylor / Unsplash
My experience contributing YAPF formatter support to Pants 2.7
Photo by Brent Ninaber / Unsplash
Introducing Pants 2.7: Python tool lockfiles, Yapf, Docker, and ./pants peek
Photo by Joakim Honkasalo / Unsplash
Meet our newest Maintainer: Andreas Stenius
Andreas lives in Visby, the main city of Gotland, which in turn is the biggest island in Sweden, and home to world-famous rauks. He is mostly self-taught as a developer, and has experience working with embedded systems and hardware engineering.
Introducing Pants 2.6: Poetry support, third-party type stubs, and linter reports
Photo by Elisa Calvet B. / Unsplash
Poetry support for Pants 2.6
Photo by Trust "Tru" Katsande / Unsplash
Pants 2.6 can now understand Poetry's pyproject.toml configuration for third-party dependency management, addressing one of our most requested features in the last year!
Pants Contributor Liam Wilson delves into this new feature as well as his experiences developing the macro as a Toolchain intern.
PyDev of the Week
How we added Apple Silicon support to Pants
Photo by Thomas Ciszewski / Unsplash
Successful open source projects are full of tradeoffs between purity vs. pragmatism. We often remind ourselves "Do not let perfect be the enemy of good".
Introducing Pants 2.5: Shell support, config autodiscovery, and incremental tool adoption
Photo by Giulia May / Unsplash
It's PyCon US Time!
Photo by Marcos Luiz Photograph / Unsplash
Introducing Pants Build 2.4.0
Photo by Nicholas Cappello / Unsplash
Monorepos and performance: Pants Build maintainer Benjy Weinberger's conversation with SemaphoreCI
Photo by Will Francis / Unsplash
Introducing Pants Build 2.3.0
Photo by Darling Arias / Unsplash
Tailoring Pants to your codebase
Photo by Yasamine June / Unsplash
Pants 2.2 adds dependency inference for Protobuf
Photo by Simon Wilkes / Unsplash
As of Pants 2.2, Pants now knows how to use dependency inference with Protobuf! This includes:
- Protobuf imports of other Protobuf files
- Python imports of generated Protobuf code, including gRPC.
fast-incremental-builds-speculation-cancellation
Photo by Craventure Media / Unsplash
Fast incremental re-builds are critical in large codebases and monorepos. Thanks to deep support for cancellation and a side-effect free execution model, Pants is able to further reduce re-build latency by speculatively re-executing work.
Talking Pants
Photo by Jonathan Farber / Unsplash
Unlocking incremental Python 3 migrations with Pants
Photo by Volodymyr Hryshchenko / Unsplash
How the Pants build tool empowers incremental migrations by:
- giving fine-grained insights into your migration with minimal boilerplate, and
- running all your tests and linters, in parallel, with the correct interpreter for each part of your code.
Dependency inference: Precise caching and concurrency, without the boilerplate
Photo by Martin Sanchez / Unsplash
Scalable build tools have historically meant a significant boilerplate burden.
But it doesn't have to be that way! Pants v2 supports all of the caching, concurrency, and introspection you need to scale your repository, with significantly less boilerplate, thanks to… Dependency inference!
Introducing Pants v2
Photo by Jess Bailey / Unsplash
There are so many tools in the Python development ecosystem. Installing, configuring and orchestrating them—all while not re-executing work unnecessarily—is a hard problem, especially as your codebase grows.
Fortunately, there is now a tailor-made (pun intended) solution: Pants v2!