-
Notifications
You must be signed in to change notification settings - Fork 35
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Blog post about moving rattler to the conda organization (#211)
Co-authored-by: Bas Zalmstra <[email protected]> Co-authored-by: jaimergp <[email protected]> Co-authored-by: Bianca Henderson <[email protected]> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
- Loading branch information
1 parent
e062aa0
commit e5d8ab8
Showing
3 changed files
with
91 additions
and
18 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
--- | ||
title: "Rattler is moving to the conda organization" | ||
slug: "2024-10-01-rattler-to-conda" | ||
authors: [wolfv, baszalmstra] | ||
tags: [announcement] | ||
description: Rattler, a set of Rust libraries for managing conda environments, is moving to the conda organization. | ||
image: img/blog/2024-10-rattler/banner.png | ||
--- | ||
|
||
We're happy to announce that rattler, a suite of Rust crates with Python bindings for conda package management, has officially joined the conda community organization. This move marks a significant milestone in the evolution of the conda ecosystem. The conda community is a multi-stakeholder organization for the conda ecosystem, and the defining body that sets forth new standards. | ||
|
||
## What is `rattler`? | ||
|
||
The rattler crates were originally created by [Bas Zalmstra](https://github.com/baszalmstra) and further developed at [prefix.dev](https://prefix.dev). | ||
|
||
Its key features include: | ||
|
||
- A clean, expressive API for Rust developers | ||
- Well-designed Python bindings and documentation | ||
- The fastest SAT solver in the conda ecosystem (resolvo) | ||
|
||
Rattler's functionality spans from reading index metadata and searching packages to resolving, downloading, installing, and even writing packages. At [prefix.dev](https://prefix.dev) all next-generation tools for the conda ecosystem are built upon rattler, such as: | ||
|
||
- [Pixi](https://pixi.sh): A modern package manager for conda & PyPI packages | ||
- [rattler-build](https://prefix-dev.github.io/rattler-build): A new and very fast tool for building conda packages with a community-designed, revamped recipe format | ||
|
||
## Adoption and Python bindings | ||
|
||
Rattler is already widely used to build custom tooling (as is done by large organizations such as [Palantir](https://www.palantir.com/docs/foundry/announcements/2024-06/), [QuantCo](https://github.com/quantco/pixi-pack) and the [Chicago Trading Company](https://github.com/AaronOpfer/conda_curation) among others). | ||
|
||
The Python bindings to rattler, originally developed by [Tarun Pratap Singh](https://github.com/Wackyator) are one of the easiest ways to programmatically deal with conda packages. They can be installed from [`conda-forge`](https://prefix.dev/channels/conda-forge/packages/py-rattler) or [`PyPI`](https://pypi.org/project/py-rattler/)! | ||
|
||
```python | ||
import asyncio | ||
import tempfile | ||
from rattler import solve, install, VirtualPackage | ||
|
||
async def main() -> None: | ||
# Let's solve the environment | ||
print("started solving the environment") | ||
solved_records = await solve( | ||
# Channels to use for solving | ||
channels=["conda-forge"], | ||
# The specs to solve for | ||
specs=["python 3.12.*", "pip", "requests 2.31.*"], | ||
# Virtual packages define the specifications of the environment | ||
virtual_packages=VirtualPackage.detect(), | ||
) | ||
print("solved required dependencies") | ||
|
||
# Install the packages into a new environment (or updates it if it already existed). | ||
env_path = tempfile.mkdtemp() | ||
await install( | ||
records=solved_records, | ||
target_prefix=env_path, | ||
) | ||
|
||
print(f"created environment: {env_path}") | ||
|
||
if __name__ == "__main__": | ||
asyncio.run(main()) | ||
``` | ||
|
||
## The move to the Conda Community | ||
|
||
By joining the conda community as a new community project, the `rattler` project now falls under community governance. This transition opens up new opportunities for the wider conda ecosystem to leverage and contribute to this powerful toolset. The development continues to be led by the team at prefix.dev who will continue with high velocity on lots of innovations for the conda ecosystem. | ||
|
||
## What is the Conda Community? | ||
|
||
The conda community is an open source software community that is engaged in the development of the tooling around conda packages. Members of the conda community are employees of prefix.dev, Anaconda, Quansight, NVIDIA, Voltron Data and other companies that have a vested interest in the conda ecosystem. | ||
|
||
If you are a tool developer and interested in the capabilities of `rattler` or `py-rattler`, you can find the documentation here: | ||
|
||
- [Rust documentation for `rattler`](https://docs.rs/rattler) (Note: each create has its own documentation) | ||
- [Documentation for the Python bindings to rattler](https://conda.github.io/rattler/py-rattler/) | ||
|
||
You can find the authors of rattler on the [prefix.dev Discord](https://discord.gg/kKV8ZxyzY4) - feel free to connect and ask questions! We are – of course – also active on the conda community channels (such as Element). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.