Skip to content

third_party/README.md says the tree ships in wheels, and docs/SETUP.md omits third_party from what a wheel install resolves #146

Open

Description

@argszero

Both statements about where an installed copy finds third_party/ are wrong, measured on
the wheel built from 1cfe254 and installed into a throwaway venv.

  1. third_party/README.md:4 says the tree "is included in wheels so setup works outside
    a source checkout". The wheel contains no third_party entry at all.
  2. docs/SETUP.md:160-165 lists the directories a wheel installation resolves from its
    working directory — .env, dependencies/, runs/ — but not third_party/, which
    harness2/config.py:25 resolves from there too. A user following SETUP exactly still
    hits "7 of 7 missing under third_party/".

Measurements

$ uv build --wheel
$ unzip -l dist/harness2-0.1.0-py3-none-any.whl | grep -c third_party
0
$ unzip -l dist/harness2-0.1.0-py3-none-any.whl | awk 'NR>3 && $4!="" {print $4}' \
    | grep -v '/$' | cut -d/ -f1 | sort | uniq -c
  39 harness2
   6 harness2-0.1.0.dist-info

Installed into a fresh venv and probed from an empty directory outside any checkout:

$ cd /tmp/nowhere && python -c "from harness2 import config; \
    print(config.ROOT); print(config.THIRD_PARTY, config.THIRD_PARTY.exists())"
/private/tmp/nowhere
/private/tmp/nowhere/third_party False

install.missing_runners() (harness2/install.py:45-62) then returns "benchmark runners and
patches are not included in this copy (7 of 7 missing under third_party/); see
third_party/README.md" — and that README is not in the wheel either, so an installed user
cannot read the file the error message names.

Shipping the tree inside the wheel would not fix this on its own

harness2/config.py:24-25:

ROOT = PKG.parent if (PKG.parent / "pyproject.toml").is_file() else Path.cwd()
THIRD_PARTY = ROOT / "third_party"

For a wheel installation PKG.parent is site-packages, which has no pyproject.toml, so
ROOT is the working directory — never site-packages. A copy bundled as package data
would therefore stay invisible to THIRD_PARTY, and missing_runners() would keep
reporting 7 of 7 missing. The false claim cannot be made true by packaging alone.

What I propose

If you would rather the wheel carried the tree (package data plus a resolution fallback in
config.py), that is a different and larger change and I would send that instead — a word on
which direction you want is enough.

I'd like to work on this: the two-file documentation fix unless you prefer the
wheel-carries-the-tree direction. This is adjacent to #144 / #145, which made the sdist carry
the tree and its provenance manifest; the wheel side is what is left.

Activity

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

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions