Skip to main content

A package manager to handle R environments

Project description

Roo - manages environments and dependencies in R

Build Flake8 Maturity Level

Description

Roo is a python program that handles R dependencies and R environments, ensuring environment reproducibility that satisfy dependency constraints. If you are familiar with python poetry or pip it aims at being the same.

Motivation

Roo was born out of frustration at the current R environment handling tools that are not up to expected needs when it's time to ensure a reproducible environment that is guaranteed to have dependencies satisfied. Utilities such as packrat and renv, and the general status of CRAN, do not favour such reliability.

Most R programmers always use the most recent code available on CRAN, but this is not going to work for validated applications that need a specified environment that is unchanged even if a reinstallation happens at a later date. While you could argue that packrat or renv freezes the packages in the current environment, unfortunately the mechanism with which those packages are discovered to begin with has potential issues.

Subdependency conflicts, and why it's a problem

Say for example that you want to install two packages, A and B. Both depend on package C. However, A depends on C >= 2, and B depends on C < 2.

It is obvious that there is no version of C that satisfies the constraints, therefore the environment cannot be created. This is an important point that one wants to be aware of, because validation depends on a reliable and consistent environment.

There are effective techniques to deal with this so called "dependency hell". Roo is not as performant as tools such as conda and poetry for python, but it satisfies the basic need I currently have to ensure the environment is stable, reproducible, and consistent (of course, assuming that the annotations in the packages are correct!)

Roo does a lot more than this, and it's basically a work in progress. As a data scientist you are unlikely to need Roo in your daily work, because Roo is mostly focused on production-level rather than exploratory coding. However, if time allows, an R interface will be written to at least install from a roo lock file.

Requirements and Installation

Roo is written in python and requires python 3.8 or above. It runs on any platform, and it can be installed from pypi with:

pip install roo

Dependencies will be installed automatically.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

roo-0.13.2.tar.gz (54.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

roo-0.13.2-py3-none-any.whl (77.3 kB view details)

Uploaded Python 3

File details

Details for the file roo-0.13.2.tar.gz.

File metadata

  • Download URL: roo-0.13.2.tar.gz
  • Upload date:
  • Size: 54.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.9.12 Darwin/20.6.0

File hashes

Hashes for roo-0.13.2.tar.gz
Algorithm Hash digest
SHA256 57545db95c0f9764ef43b92875f8d461868825d314d5c38b47a2dd69a78e3c06
MD5 0c5b062a6d2b4aee5683d2a8874e4dca
BLAKE2b-256 e1716733d243fdde409ab824c08cfd16e0c4843d0535d83ac0b52357095227e0

See more details on using hashes here.

File details

Details for the file roo-0.13.2-py3-none-any.whl.

File metadata

  • Download URL: roo-0.13.2-py3-none-any.whl
  • Upload date:
  • Size: 77.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.4 CPython/3.9.12 Darwin/20.6.0

File hashes

Hashes for roo-0.13.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0712429553885c7e28129f36995e801f8b3d6ae351690b9fbd9973641c01ee19
MD5 5f5eff2689b6bc841c3bcb9c371d37cc
BLAKE2b-256 01c07182b18bd3d14d17a0570b91881721404d53f171511f6505442c6deb8ae2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page