Skip to content
/ typodoo Public
forked from sbidoul/typodoo

Towards idiomatic Python with types for Odoo models.

License

Notifications You must be signed in to change notification settings

acsone/typodoo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

typodoo

PyPI - Version PyPI - Python Version


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 /!\

What?

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([])

Why?

Idiomatic python.

Native auto completion in IDEs.

Static type checking.

Development

pip install -e .

Then, copy typodoo_activate.pth to $VIRTUAL_ENV/lib/python3.10/site-packages. Automating this setup is a TODO.

License

typodoo is distributed under the terms of the MIT license.

About

Towards idiomatic Python with types for Odoo models.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 100.0%