Thursday, February 26, 2026
3 changes · 18.0
Enhancements to existing features
This update optimizes how Odoo handles locale data, reducing unnecessary file searches. Previously, Odoo was repeatedly checking for locale files even when the data wasn't being used, leading to slower performance. This change adds a caching mechanism to avoid these redundant checks, improving overall system speed.
Original PR description
`babel.Locale.parse` checks if a locale is valid by calling `os.path.exists` on the resolved filename for the locale (this is done in `babel.localedata.exists`). Babel does have a locale cache which it checks, but currently that cache is only populated when the locale is actually loaded[^1], therefore in cases where we instantiate a significant number of locales but never actually need to load locale data (e.g. formatting a significant number of datetimes, in qweb, using only non-localised patterns) this results in severe FS traffic for no reason. [^1]: python-babel/babel#1254 has been submitted to fix this issue Forward-Port-Of: odoo/odoo#249795
This update reduces the time and resources used by Odoo's automated tests. By consolidating setup steps and suppressing unnecessary logging, the changes improve test execution speed and stability. This translates to faster development cycles and more reliable test results.
Original PR description
- move a bunch of expensive setUp to setUpClass - backport #152378 to avoid password keying in 17.0 also Forward-Port-Of: odoo/odoo#250667
This update streamlines the initial setup process for tests across several core Odoo modules, including accounting, payroll, and timesheets. By centralizing this setup, the team has improved the reliability and consistency of test results, leading to faster identification and resolution of potential issues. This change enhances the overall quality and stability of the Odoo Enterprise platform.
Original PR description
Forward-Port-Of: odoo/enterprise#108739