Skip to content

feat(dev): development workspace and package develop mode - #37

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

bosd merged 3 commits into
mainfrom
feat/dev

Conversation

@bosd

@bosd bosd commented Oct 13, 2026

Copy link
Copy Markdown
Member

Phase 6, first part: odx dev.

Workspace mode (odx dev [--no-editable] [--venv] [--print-addons-path] [--dry-run])

  • Addons path in search order: project addons (a directory that is itself an addon contributes its parent), packages in develop mode, aggregated repositories, groups; deduplicated.
  • Written to [tool.odx.dev] addons_path_file (default .odx/addons-path); addons_path set in the [options] section of odoo_conf.
  • Addons with their own pyproject.toml (project addons, selected aggregated addons) installed with uv pip install --python <venv> -e … (PEP 660); skipped with a warning when the venv is missing.

Package mode (odx dev <package> [--branch], odx dev --restore [<package>])

  • Clones the locked commit from the cache into dev_dir (default .src), remotes upstream and mirror; detached at the locked commit or on the given branch.
  • [tool.uv.sources] entry → { path, editable = true } (in place); a direct reference in a group → the plain requirement (extras and markers kept).
  • The previous text is saved in .odx/develop.toml before pyproject.toml changes; --restore puts it back byte for byte (tested), the clone stays.
  • odx verify reports packages in develop mode (instead of "no longer configured").

New helpers in odx-config (replace_requirement, direct_references, uv_source_entry, set_uv_source_entry), logic in odx-dev (set_addons_path, enter/leave, DevelopState). odx-dev joins the published crates.

The justfile exports UV_CACHE_DIR=target/uv-cache, so tests that run uv do not grow the user's uv cache.

odx dev writes the addons path (project addons, packages in develop
mode, aggregated repositories, groups) to a file and to odoo.conf, and
installs addons with their own pyproject.toml in editable mode with uv.
odx dev <package> [--branch] clones the locked commit from the cache
into .src/<package> with upstream and mirror remotes and points the
package's uv source at it; odx dev --restore puts pyproject.toml back
byte for byte, from the state in .odx/develop.toml. odx verify reports
packages in develop mode. Test runs through just keep uv's cache in
target/.
@github-actions github-actions Bot added the enhancement New feature label Oct 13, 2026
@read-the-docs-community

read-the-docs-community Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Documentation build overview

📚 odx | 🛠️ Build #35120223 | 📁 Comparing 690725d against latest (1f548eb)

  🔍 Preview build  

1 file changed
± cli.html

@bosd
bosd merged commit 5c49eda into main Oct 13, 2026
26 checks passed
@bosd
bosd deleted the feat/dev branch October 13, 2026 17:11
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