Skip to content

Publish bead to conda-forge for conda/mamba installation #2

@korenmiklos

Description

@korenmiklos

Goal

Make bead installable via conda install -c conda-forge bead or mamba install bead by publishing to conda-forge.

Dependencies

Current Status

  • Package uses modern pyproject.toml configuration
  • Has clear dependencies listed
  • Python 3.10+ requirement is conda-friendly

Required Steps

1. Prerequisites

2. Generate Initial Recipe with Grayskull

# Install grayskull
conda create -n grayskull
conda activate grayskull
conda install -c conda-forge grayskull

# Generate recipe from PyPI
grayskull pypi --strict-conda-forge bead

3. Review and Adjust Recipe

The generated meta.yaml will need review for:

  • Verify all dependencies are available on conda-forge
  • Check if argcomplete needs special activation scripts
  • Ensure entry point bead is correctly specified
  • Add appropriate test commands including pip check
  • Set proper license identifier (The Unlicense → Unlicense)

4. Fork and Submit to staged-recipes

5. Create Pull Request

  • Submit PR to conda-forge/staged-recipes
  • Address reviewer feedback
  • Wait for CI checks (Azure Pipelines) to pass
  • Get approval from conda-forge reviewers

6. Post-Acceptance

Once the PR is merged:

  • Bot creates dedicated feedstock repo: bead-feedstock
  • Package builds automatically for multiple platforms
  • Available on conda-forge channel within hours

7. Maintenance

  • Become feedstock maintainer
  • Set up automated updates via regro-cf-autotick-bot
  • Monitor for dependency updates

Recipe Template (Starting Point)

{% set name = "bead" %}
{% set version = "0.8.1" %}

package:
  name: {{ name|lower }}
  version: {{ version }}

source:
  url: https://pypi.io/packages/source/{{ name[0] }}/{{ name }}/{{ name }}-{{ version }}.tar.gz
  sha256: <TO_BE_FILLED_FROM_PYPI>

build:
  noarch: python
  number: 0
  entry_points:
    - bead = bead_cli.main:main
  script: {{ PYTHON }} -m pip install . -vv

requirements:
  host:
    - python >=3.10
    - pip
    - flit-core
  run:
    - python >=3.10
    - appdirs
    - argcomplete >=3.6.2
    - attrs
    - cached-property
    - pip >=25.1.1

test:
  imports:
    - bead
    - bead_cli
  commands:
    - pip check
    - bead --help

about:
  home: https://github.com/codedthinking/bead
  summary: Linked frozen computations
  license: Unlicense
  license_file: LICENSE
  description: |
    BEAD is a format for freezing and storing computations while bead 
    is a tool that helps capturing and managing computations in BEAD formats.

extra:
  recipe-maintainers:
    - <YOUR_GITHUB_USERNAME>

Benefits of conda-forge

  • Cross-platform binary packages (Windows, macOS, Linux)
  • Automatic dependency resolution
  • Integration with scientific Python ecosystem
  • Works with both conda and mamba
  • Automated rebuilds when dependencies update
  • Community maintenance support

Timeline Estimate

  1. After PyPI publication: 1-2 days to prepare recipe
  2. PR review: 3-7 days typically
  3. Post-merge availability: 2-6 hours

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions