Skip to content

feat: verify installed wheels, Odoo.sh submodule checks, PyPI auto-update - #34

Merged
bosd merged 3 commits into
mainfrom
feat/installed
Oct 13, 2026
Merged

bosd merged 3 commits into
mainfrom
feat/installed

Conversation

@bosd

@bosd bosd commented Oct 13, 2026

Copy link
Copy Markdown
Member

Phase 5, the remaining verification and update pieces (three commits).

odx verify --installed <venv or site-packages>

  • For every installed distribution uv.lock knows: the locked version; the locked commit for git packages (direct_url.json); for index packages the files of the locked wheel (its RECORD, fetched hash-checked from cache or index, against the installed RECORD), so a substituted wheel with the same version is found; files changed after installation (installed RECORD hashes).
  • Local directory sources and unknown distributions are skipped.
  • Tried on a real uv sync venv with two OCA 17.0 wheels: passes; an edited manifest is reported.

Odoo.sh

  • odx verify: a .gitmodules entry without a committed gitlink is unpinned; a submodule at a locked repository's target_dir must pin a commit whose tree is the locked result.
  • odx verify --requirements (odoo-sh): refuses name @ git+…, -e and other option lines.
  • odx vendor --requirements works without groups.

odx lock --auto-update

  • Index addon packages in uv.lock matching allow/not deny; releases from ODX_PYPI_URL (default PyPI JSON API, file:// for mirrors and tests).
  • Only fifth-segment updates (OCA post-releases included); with content_check, locked and new wheel compared, manifest version line ignored, every changed path must match allowed_paths.
  • Exact == pins in [project], extras and dependency groups move along (formatting kept), then uv lock --upgrade-package.
  • Tried for real against PyPI: account_statement_base 17.0.1.5.0 → 17.0.1.5.0.2 (translations only) auto-updated with real uv; web_responsive 17.0.1.1.8 → 17.0.1.1.10 held for review (JS/XML changes).

set_manifest_version moved to odx-analyze; odx_vendor::archive::get shared for HTTP/file reads.

bosd added 3 commits October 13, 2026 15:06
odx verify --installed <venv or site-packages> checks every distribution
uv.lock knows: the locked version, the locked commit for packages from
git, and for packages from an index the files of the locked wheel (its
RECORD, from the cache or downloaded and hash-checked, against the
installed RECORD), so a substituted wheel with the same version is found.
Files changed after installation are reported too.
odx verify reports a submodule that .gitmodules names without a committed
commit, and checks that a submodule at a locked repository's target_dir
pins a commit whose tree is the locked result. For the odoo-sh profile,
odx verify --requirements refuses lines Odoo.sh cannot install. odx vendor
--requirements works without groups to vendor into.
odx lock --auto-update asks the index (ODX_PYPI_URL, default PyPI) for
newer releases of every allowed index addon package in uv.lock. Only an
update of the fifth version segment (OCA post-releases included) is taken,
and with content_check only when every changed addon file matches
allowed_paths (the manifest version line excepted); the locked and the new
wheel are downloaded hash-checked. Exact pins in pyproject.toml move along
before uv lock --upgrade-package. The rest is listed for review.
@github-actions github-actions Bot added the enhancement New feature label Oct 13, 2026
@read-the-docs-community

Copy link
Copy Markdown

Documentation build overview

📚 odx | 🛠️ Build #35117747 | 📁 Comparing 58139f8 against latest (6a00259)

  🔍 Preview build  

1 file changed
± cli.html

@bosd
bosd merged commit 9a1491c into main Oct 13, 2026
26 checks passed
@bosd
bosd deleted the feat/installed branch October 13, 2026 13:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant