Skip to content

pip install -e ".[dev]" fails to resolve mosaic-shared #112

Description

@meyer-nils

Summary

The documented pip-based dev setup does not work: the dev extra depends on mosaic-shared, which is a uv workspace member rather than a published package. pip does not read [tool.uv.sources], so it looks for mosaic-shared on PyPI, where it does not exist.

Reproduction

$ python3 -m venv /tmp/pipcheck
$ /tmp/pipcheck/bin/pip install --dry-run -e ".[dev]"
...
ERROR: Could not find a version that satisfies the requirement mosaic-shared; extra == "dev" (from mosaic-bench[dev]) (from versions: none)
ERROR: No matching distribution found for mosaic-shared; extra == "dev"

Reproduced with pip 26.1.2 / CPython 3.10 on macOS arm64, but nothing here is platform- or version-specific: it is purely dependency resolution against the package index.

Cause

pyproject.toml declares:

[project.optional-dependencies]
dev = [..., "mosaic-shared"]

[tool.uv.workspace]
members = ["mosaic/mosaic_shared"]

[tool.uv.sources]
mosaic-shared = { workspace = true }

[tool.uv.workspace] and [tool.uv.sources] are uv-specific tables. Under uv the requirement resolves to the local workspace member; under pip it falls through to PyPI and fails. CI does not catch this because every workflow uses uv (ci.yml:43: cp production.uv.lock uv.lock && uv sync --frozen --extra dev), so the pip path is never exercised.

Only the dev extra is affected — pip install -e . with no extras resolves and installs fine, so README.md:94 (uv sync # or: pip install -e .) is correct as written.

Possible fixes

  1. Document uv sync --extra dev as the supported dev setup and drop the pip variant.

  2. Keep pip working by installing the workspace member first — the two-step form already appears in the repo for standalone tesseract use (README.md:164, docs/standalone.qmd:31):

    $ pip install -e ./mosaic/mosaic_shared
    $ pip install -e ".[dev]"
  3. Publish mosaic-shared to PyPI.

Happy to send a PR for whichever option you prefer.

Activity

  1. dionhaefner commented on Jul 21, 2026

    @dionhaefner
    Contributor

    Thanks @meyer-nils for the thorough report! I agree, this is a sharp edge across a few experimental Tesseract-based repos... Will keep looking for a solution, for now we should at least document the workaround (2). Feel free to submit a PR :)

  2. added theissue type on Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions