opensafely-core / opensafely-core/opensafely-cli

Distribute binary version that doesn't require a system python

Open
#145 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
2
Forks
5
Avg merge
2d 1h
Merged PRs (30d)
4

Description

We currently distribute opensafely-cli via pip. This is not great:

  1. it requires a user to have a system python installed
  2. it means we need to support a wider range of pythons (which means job-runner needs to also support the same range)
  3. it requires us to vendor all our dependencies to simplify the the UX, which increases maintenance costs, and prevent any C-level dependencies.

Ideally, we would distribute opensafely-cli as a binary, which:

a) includes the specific version of python we want to use
b) includes all the dependencies at build time
c) is platform specific so we can use C dependencies

One promising avenue for this is pyoxidizer. This is a rust tool chain that builds a platform specific binary with your code, deps, and a python interpreter (with only the parts of stdlib that your code uses).

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by evaluating PyOxidizer for opensafely-cli and determine the required platform-specific build outputs. Check how the current pip distribution handles Python and dependencies. Done means users can run binaries that include the selected Python version and dependencies without a system Python installation.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust
Domain
build-system, cli
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.