Skip to content

fix: forward :python option from compile-time config to uv fetch/init#48

Open
AJReade wants to merge 1 commit into
livebook-dev:mainfrom
AJReade:main
Open

fix: forward :python option from compile-time config to uv fetch/init#48
AJReade wants to merge 1 commit into
livebook-dev:mainfrom
AJReade:main

Conversation

@AJReade
Copy link
Copy Markdown

@AJReade AJReade commented May 16, 2026

Summary

  • The :python option (e.g., "3.14t" for free-threaded builds) set via config :pythonx, :uv_init is read from Application.compile_env but never forwarded to Pythonx.Uv.fetch/3 or Pythonx.Uv.init/3
  • This causes uv sync to download the regular Python build instead of the requested variant

Context

PR #45 added the :python option to Pythonx.uv_init/2 (the runtime function), which works correctly. However, the compile-time config path in application.ex was not updated to forward this option. Users following the recommended Mix project setup via config :pythonx, :uv_init silently get the wrong Python variant.

Change

One line in lib/pythonx/application.ex — read :python from the config and include it in the opts passed to fetch/3 and init/3:

# Before
opts = [uv_version: uv_version]

# After
python = uv_init_env[:python]
opts = [uv_version: uv_version, python: python]

Verification

Tested on macOS aarch64. Before the fix, config :pythonx, :uv_init, python: "3.14t" downloads cpython-3.14.3-macos-aarch64-none (regular). After the fix, it downloads cpython-3.14.3+freethreaded-macos-aarch64-none and confirms GIL disabled.

The :python option (e.g., "3.14t" for free-threaded builds) was read
from Application.compile_env but never forwarded to Pythonx.Uv.fetch/3
or Pythonx.Uv.init/3. This caused uv to download the regular Python
build instead of the free-threaded variant.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant