{"id":13502865,"url":"https://github.com/prefix-dev/rip","last_synced_at":"2025-03-29T12:33:10.911Z","repository":{"id":196953998,"uuid":"664724397","full_name":"prefix-dev/rip","owner":"prefix-dev","description":"Solve and install Python packages quickly with rip (pip in Rust)","archived":false,"fork":false,"pushed_at":"2024-07-05T13:59:02.000Z","size":5073,"stargazers_count":648,"open_issues_count":21,"forks_count":23,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-10-13T23:37:12.967Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://prefix.dev","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/prefix-dev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-10T15:50:01.000Z","updated_at":"2024-10-13T14:36:10.000Z","dependencies_parsed_at":"2023-10-12T19:17:18.152Z","dependency_job_id":"b8c387b8-a038-4c4f-8617-14940fcd7725","html_url":"https://github.com/prefix-dev/rip","commit_stats":null,"previous_names":["prefix-dev/rip"],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prefix-dev%2Frip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prefix-dev%2Frip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prefix-dev%2Frip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/prefix-dev%2Frip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/prefix-dev","download_url":"https://codeload.github.com/prefix-dev/rip/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":222495237,"owners_count":16993288,"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":"2024-07-31T22:02:27.652Z","updated_at":"2024-10-31T22:30:58.230Z","avatar_url":"https://github.com/prefix-dev.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"\u003ca href=\"https://github.com/prefix-dev/pixi/\"\u003e\n    \u003cpicture\u003e\n      \u003csource srcset=\"https://github.com/prefix-dev/rip/assets/4995967/aab133a8-b335-4942-bf56-335071c76db2\" type=\"image/webp\"\u003e\n      \u003csource srcset=\"https://github.com/prefix-dev/rip/assets/4995967/3599ae56-42c5-4f3f-9db7-d844fa9558c9\" type=\"image/png\"\u003e\n      \u003cimg src=\"https://github.com/prefix-dev/rip/assets/4995967/3599ae56-42c5-4f3f-9db7-d844fa9558c9\" alt=\"banner\"\u003e\n    \u003c/picture\u003e\n\u003c/a\u003e\n\n# RIP: Fast, barebones **pip** implementation in Rust\n\n![License][license-badge]\n[![Build Status][build-badge]][build]\n[![Project Chat][chat-badge]][chat-url]\n[![docs main][docs-main-badge]][docs-main]\n\n# Introduction\n\n`rip` is a library that allows the resolving and installing of Python [PyPI](https://pypi.org/) packages from Rust into a virtual environment.\nIt's based on our experience with building [rattler] and aims to provide the same\nexperience but for PyPI instead of Conda.\n\n## What should I use this for?\n\nLike [rattler], `rip` should be fast and easy to use. This library is not a package manager itself but provides the low-level plumbing to be used in one.\nTo see an example of this take a look at our package manager: [pixi](https://github.com/prefix-dev/pixi) 📦\n\n`rip` is based on the quite excellent work of [posy](https://github.com/njsmith/posy) and we have tried to credit\nthe authors where possible.\n\n# Showcase\n\n`rip` has a very incomplete pip-like binary that can be used to test package installs.\nLet's resolve and install the `flask` python package. Running `cargo run install flask /tmp/flask` we get something like this:\n\n![rip-install](https://github.com/prefix-dev/rip/assets/417374/1d55754f-de3a-474f-8ee8-06f7dd098eea)\n\nThis showcases the downloading and caching of metadata from PyPI. As well as the package resolution using our incremental SAT solver: [Resolvo](https://github.com/mamba-org/resolvo), more on this below.\nFinally, after resolution it installs the package into a venv.\nWe cache everything locally so that we can reuse the PyPI metadata.\n\n## Features\n\nThis is a list of current features of `rip`, the biggest are listed below:\n\n- [x] Async downloading and aggressive caching of PyPI metadata.\n- [x] Resolving of PyPI packages using [Resolvo](https://github.com/mamba-org/resolvo).\n- [x] Installation of wheel files.\n- [x] Support sdist files (must currently adhere to the `PEP 517` and `PEP 518` standards).\n- [x] Caching of locally built wheels.\n\nMore intricacies of the PyPI ecosystem need to be implemented, see our [GitHub issues](https://github.com/prefix-dev/rip/issues) for more details.\n\n# Details\n\n## Resolving\n\nWe have integrated the stand-alone packaging SAT solver [Resolvo](https://github.com/mamba-org/resolvo), to resolve PyPI packages.\nThis solver is incremental and adds packaging metadata during resolution of the SAT problem.\nThis feature can be enabled with the `resolvo` feature flag.\n\n## Installation\n\nWe have very simple installation support for the resolved packages.\nThis should be used for testing purposes exclusively\ne.g. `cargo run -- install flask /tmp/flask_env` to create a venv and install the flask and it's into it.\nAfter which you can run:\n\n1.  `/tmp/flask_env/bin/python` to start python in the venv.\n2.  `import flask #`, this should import the flask package from the venv.\n    There is no detection of existing packages in the venv yet, although this should be relatively straightforward.\n\n# Contributing 😍\n\nWe would love to have you contribute!\nSee the [CONTRIBUTING.md](./CONTRIBUTING.md) for more info.\n\nFor questions, requests or a casual chat, we are very active on our [Discord server][chat-url].\n\n[//]: # \"[![crates.io][crates-badge]][crates]\"\n[license-badge]: https://img.shields.io/badge/license-BSD--3--Clause-blue?style=flat-square\n[build-badge]: https://img.shields.io/github/actions/workflow/status/prefix-dev/rip/rust-compile.yml?style=flat-square\u0026branch=main\n[build]: https://github.com/prefix-dev/rip/actions\n[chat-badge]: https://img.shields.io/discord/1082332781146800168.svg?label=\u0026logo=discord\u0026logoColor=ffffff\u0026color=7389D8\u0026labelColor=6A7EC2\u0026style=flat-square\n[chat-url]: https://discord.gg/kKV8ZxyzY4\n[docs-main-badge]: https://img.shields.io/badge/docs-main-yellow.svg?style=flat-square\n[docs-main]: https://prefix-dev.github.io/rip\n[crates]: https://crates.io/crates/rattler_installs_packages\n[crates-badge]: https://img.shields.io/crates/v/rattler_installs_packages.svg\n[rattler]: https://github.com/mamba-org/rattler\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprefix-dev%2Frip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fprefix-dev%2Frip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fprefix-dev%2Frip/lists"}