Towards idiomatic Python with types for Odoo models.
This package supports the Odoo Experience 2022 talk (sildes, video).
It works best when a few type annotations are added to the Odoo core.
/!\ This is pre-alpha stuff /!\
pip install typodoo
to monkey patch the Odoo metaclass on Odoo startup.
Then, you can still write this, as usual:
from odoo import models, fields
class ResPartner(models.Model):
_inherit = "res.partner"
friend = fields.Boolean()
industry2_id = fields.Many2one(
'res.partner.industry',
string='Secondary Industry',
required=True,
)
But you can also write this:
from odoo import fields
from odoo.addons.base.models.res_partner import (
Partner, ResPartnerIndustry
)
class ResPartner(Partner):
friend = fields.Boolean()
industry2_id = fields.Many2one[ResPartnerIndustry](
string='Secondary Industry',
)
And also this:
from odoo.addons.my_addon.models.res_partner import ResPartner
partners = ResPartner(self.env).search([])
Idiomatic python.
Native auto completion in IDEs.
Static type checking.
pip install -e .
Then, copy typodoo_activate.pth
to $VIRTUAL_ENV/lib/python3.10/site-packages
.
Automating this setup is a TODO.
typodoo
is distributed under the terms of the
MIT license.