PyVELM v1.1.0¶
Release date: 2026-06-09
Minor release after v1.0.1: fluent manifests and view builders,
models.Model, Eloquent-style query builder, Vellum removal, bundled
model packaging, and Odoo-style technical file naming across bundled and
example modules.
Highlights¶
Fluent module manifests¶
from pyvelm.manifest import Manifest
manifest = (
Manifest.make("partners")
.version(0, 4, 0)
.depends("base")
.data("views/partner.py", "views/menu.py")
.summary("Companies, contacts, and the partner directory.")
)
Legacy NAME / VERSION constants still load. pyvelm db migrate and
scaffolders patch .version(...) on fluent manifests.
Fluent view and menu builders¶
from pyvelm.builders import Field, FormView, ListView, Menus, ViewsData
views_data = (
ViewsData.make()
.views(
ListView.make("partner.list")
.model("res.partner")
.columns(["name", Field.make("active").toggle()]),
)
.menus(
Menus("partners").group("business", "Business").children([
Menus("partners").item("business.partners", "Partners").view("partner.list"),
]),
)
)
Legacy list_view / field helpers remain supported. make:view scaffolds
emit the fluent style.
See Building UIs.
models.Model and query builder¶
from pyvelm import Char, models
class Partner(models.Model):
_inherit = "res.partner"
vip_note = Char()
posts = (
env["blog.post"]
.query()
.where("views", ">", 100)
.order_by("published_at", "desc")
.limit(20)
.get()
)
env.query("model") is equivalent. Queries delegate to search() (ACL +
record rules).
See Declaring models and pyvelm.query.
Vellum removed¶
The optional Vellum ORM mixin, bundled vellum module, vellum_demo example,
and --vellum scaffold flag are gone. Mass assignment (_fillable /
_guarded) remains in pyvelm.mass_assignment for HTTP form writes.
Bundled models as proper modules¶
Stage 6 models (ir.actions.server, ir.cron, mail.message, etc.) are
defined under pyvelm/modules/*/models/ with thin package-root re-exports for
backward compatibility. Bundled and example models use PascalCase classes and
res_partner.py-style filenames.
Upgrade¶
pip install -U "pyvelm==1.1.0"
pyvelm db migrate
pyvelm make:stubs # refresh IDE literals after view/model renames
Review custom modules that used Vellum or legacy-only manifest constants; migrate
to Manifest.make() and ViewsData.make() when convenient (legacy forms
still load).