Skip to main content

mulled-biopixi

Python CI

mulled-biopixi turns a Biopixi-compatible Pixi environment into a local mulled container build. It reads pixi.toml from the current directory by default, uses the linux-64 solve in pixi.lock to pin the direct Conda dependencies, publishes direct L1 path packages into an indexed local channel, and calls Galaxy's mull_targets implementation.

Installation

Until the package is published to PyPI, install it directly from GitHub:

uv tool install git+https://github.com/jmchilton/mulled-biopixi.git

Then run it in a Biopixi-compatible project:

mulled-biopixi --dry-run
mulled-biopixi --command build-and-test --test 'samtools --version'

The dry run is useful on any host. A real build needs Docker. With current stable galaxy-tool-util, the CLI downloads a checksum-pinned Involucro 1.2.0 into the project's ignored .mulled-biopixi/ cache and injects --platform linux/amd64, allowing Docker Desktop to emulate the Biopixi profile platform on Apple Silicon. Galaxy's development implementation exposes this platform directly, and the compatibility path switches off automatically when that API is present. The shim also pre-pulls the amd64 Conda and destination base images with the modern Docker CLI; this avoids Involucro's older embedded Docker client attempting a pull against newer daemons. The pre-pull safeguard remains active when Galaxy supplies native platform support because its current Involucro 1.2.0 binary has the same Docker 29 limitation.

Translation contract

  • The manifest selects the effective direct dependencies: [dependencies] plus Linux target overrides from [target.linux-64.dependencies].
  • The lock supplies exact registry-package versions and build strings. Manifest ranges alone are not reproducible container inputs.
  • Explicit dependency channel qualifiers are preserved in the mulled package name.
  • A direct path dependency gets its concrete version from its package pixi.toml, is built with pixi publish --target-channel ... --target-platform linux-64, and is then resolved by mulled from that local file:// channel.
  • Only roots are passed to mulled. Conda resolves their transitive closure inside the image, which matches the Biopixi L4 target-set rule.

This is intentionally not another complete Biopixi validator. It rejects unsupported shapes when they would make the build ambiguous, while relying on the caller's L1-or-higher assumption for the full profile contract.

Current limits

  • Recursive path-package graphs are detected but not published. Supporting them needs a proper topological package publication workflow and a decision about rewriting source dependencies.
  • The local channel lives at .mulled-biopixi/channel by default and is not pushed anywhere.
  • osx-arm64 can be present in the workspace, but container construction always uses the profile's linux-64 environment and produces linux/amd64. Foreign-architecture builds depend on the Docker daemon's binfmt/QEMU support and will be slower than native builds.
  • The integration uses Galaxy's importable mull_targets function. That API is practical and tested within Galaxy, but is not documented as a separately versioned public library contract.
  • Galaxy's base-image selection performs one full Conda metadata search per root. Under amd64 emulation this can dominate build time even when the eventual package solve and image wrap are quick.

Development

Create the locked development environment and run the complete local CI suite:

uv sync
make ci

The individual commands are make format, make lint, make typing, make test, and make dist. Install the repository hook with make pre-commit. Maintainers can follow the release checklist to publish a version through PyPI Trusted Publishing.

This project is licensed under the MIT License.

Download files

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

Source Distribution

mulled_biopixi-0.1.0.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

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

mulled_biopixi-0.1.0-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

File details

Details for the file mulled_biopixi-0.1.0.tar.gz.

File metadata

  • Download URL: mulled_biopixi-0.1.0.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mulled_biopixi-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0cb549479ac848786b73632fce99c6b6e5db0f63d7f83dd224fab174dd4f8ff5
MD5 2e430c2b71b6f563f6666bb72704e191
BLAKE2b-256 11a8fefd1abfffcaa8eb5e07ce6d177e916728ab49666b80f18c62ad8452e4be

See more details on using hashes here.

Provenance

The following attestation bundles were made for mulled_biopixi-0.1.0.tar.gz:

Publisher: release.yml on jmchilton/mulled-biopixi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mulled_biopixi-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: mulled_biopixi-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mulled_biopixi-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 78e105dccea19edc7375350f45d3a5526ce2efd558342e32ac32ccac98ca3883
MD5 ae816547b3edd5d7292509a281748033
BLAKE2b-256 8806fc809d7efbb7a35838039e2440211f1eccc5345381a1241fcdd33de4f45d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mulled_biopixi-0.1.0-py3-none-any.whl:

Publisher: release.yml on jmchilton/mulled-biopixi

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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