Releases: odoo/odoo-pycharm
1.3.1 - Beta
Fix
- Fixed a deadlock that could occur during startup.
1.3.0 - Beta
This update is refactoring the way "Goto" features are working, as well as adding the new Go to References feature.
Server
- Change gotoDefinition to pass through imports until the true definition of the symbol
- Add GoToDeclaration that goes to the first declaration or assignation found for a symbol
- Add GoToReferences that will search for all usage of a symbol. Available in python, xml, csv and
__manifest__.pyfiles. - Implement all these gotos features in CSV files.
- Load and validate
assetnodes in XML files. - Validation of language codes used in XML files.
- Add a new option in configuration files: "additional_languages", allowing you to add languages that would not be added in data files.
- Server will not close anymore if multiple workspace folders has the same name. However, it will still be impossible to reference one of them in a configuration.
- Handle lambda expressions.
- Add evaluation for
requestandrequest.envin controllers. - Validation of
assetsvalues in__manifest__.py - Improve the
selfevaluation to be able to propagate it to class children or overrides. - Add the list of folders to the documentation when hovering a symbol representing a python namespace
- CLI mode is now loading configurations like the normal process is doing, making the profiles available in this mode.
- Add a new argument to the command line:
selected_configallowing you to manually select a profile when running in CLI mode. - Various performances update (HashMap without hashing function for integer keys, better filesystem access on windows)
- Upgrade Rust to 1.94, Ruff to 0.15.0
1.2.1
We are addressing some errors in 1.2.0 before releasing the 1.3.0 in the next days
Server
- Remove OLS05038 (empty function data in XML files), which is a valid use case.
- New warning if 'odoo/addons' is missing.
- Add completion of
inverse_nameif keyword is missing in the relational field.
Fixes
- Fix crash on unexpected arguments in reading kwarg of self.env.ref function.
- When autocompleting function calls, OdooLS will now follow return values hidden behind multiple references.
- Fix annotation evaluation on functions that was dropped after being processed
- Fix 'with' statement type evaluation
- Fix the anti-duplication algorithm to prevent loading some symbols.
- Fix first argument evalution on static methods and classmethods.
- Fix evaluation of
inverse_nameif keyword is missing in the relational field declaration. - Remove some useless logs.
1.2.0
This update pushes the pre-release version 1.1 to the stable branch. There is nothing new if you already uses the pre-release version
This update improves the QoL on various IDEs and brings some new features:
- Workspace Symbol Lookup allows you to search for any class/function/model/xml_id in the whole project (ctrl-t on vscode). All xml_id are prefixed
byxmlid.and model names are quoted.
- Import statements now have autocompletion, hover and gotodefinition features.
- We now have a better support for WSL paths!
VsCode
- Better display about the server status.
PyCharm
- Improve the lifecycle of OdooLS. Server will be always running but idle, and starts only if a configuration is detected. It implies
that we removed the 'start server' button as it is not useful anymore. It should end up in a more clear and usable interface. - Fix the "Disabled" profile behavior that was preventing any further profile change.
- Starting from 2025.3, PyCharm will be able to display the loading status of the server.
- Attach additional stubs (with lxml) to the build.
- Add configuration wiki link on the settings page.
- Update deprecated API calls to isAarch64 methods.
Server
- Support for workspace Symbol requests.
- Core structure to support
$/cancelRequestnotification and use it for Workspace Symbol Request. These notifications indicates that a job can be cancelled because no more useful. - Import statements now have autocompletion, hover feature and gotodefinition.
- Server now supports WSL paths, including
file:////orfile://wsl.localhost - Server now use workDoneProgress to report loading status to client. Client that supports this feature will now display the loading progression at startup.
- Server will now send more information about its status: it can indicate if it is waiting for a git lock to be freed.
- Autocompletion and validation for inverse_name keyword argument.
- Crash reports will now include the latest LSP messages to help the debugging and give us a better overview of what happened before the crash
- It is now possible to autocomplete slices (
self.env[") even without closing the brackets. - Diagnostic filters in configuration files can now accept variables like
${userHome}or${workspaceFolder} - You can now hover and gotodefinition for module names in
__manifest__.pyfiles, and in hover you could alse see full list of the module's dependencies.
filteredandfiltered_domainnow has a proper return value.- Remove diagnostics of ImportError in the
exceptblock of atry..except ImportErrorstatement. - Doing a gotodefinition on a
display_namewill now redirect you to the compute method. - Update Ruff dependencies to 0.14.3.
- Support for encoding UTF-8, UTF-16 and UTF-32.
- Support for "untitled" files for VsCode.
- Add tests for diagnostics
- Various fixes
- Fix and support for CachedModel introduced in 19.1
- Use a deterministic job queue to avoid random errors caused by different order of symbols
- For that we replace the current HashSet with a FIFO one, so symbols are processed in the queue order
Fixes
- Doing a gotodefinition on a value (like a string
"a string") will not lead to the value definition (class str) - Doing a cyclic dependency between 'modules depends' will not crash anymore but generate the diagnostic OLS04012.
- Fix the path to additional stubs and so fix the usage of the lxml stubs.
- If odoo_path is ending with
.somethingbut is pointing to a valid directory, the server should not considersomethingas a file extension, but as a part of the folder name. - Fix some internal hooks to work with user defined Fields, instead of only the Odoo ones.
- Configuration option "diag_missing_imports" is now really taken into account when generating diagnostics about imports.
- Fix dependencies on comodel and relation fields diagnostics.
- Fix missing ImportError diagnostic on import statement without a 'from' or 'as' part.
- Various small fixes and typos
- Fix crash when a file is importing a .pyd with the same name (avoid self referencing)
- Fix OLS01002 not emitted on valued variables
- FIX OLS01004 that should not be emitted on
classmethod - FIX OLS01007 and OLS01010 on evaluation of function calls when keyword-only arguments are used.
- XML Syntax error is now OLS05000
- Fix range for diagnostic OLS05009
- Fix OLS01009 that could be emitted on valid cases.
- Fix detection of
searchandinversekeyword on fields declaration - Fix detection of
inverse_nameon One2Many if the keyword was missing - Fix deprecation warning OLS03301 that was not emitted
- Fix crash on data not being string in
__manifest__.py - Fix validation of
__manifest__.pyfiles even if the folder does not contain any__init__.py - Functions will not expose their internal function in an autocompletion anymore
- Fix wiki link for configuration on welcome page
- Avoid having empty paths for addons or additional stubs in cli mode
- Avoid adding model dependencies in orm files to avoid rebuilding base files
- Avoid loading Models defined inside functions, e.g. tests.
- Avoid attempting to rebuild
__iter__on external files, as their file infos are deleted - Fix fetching symbols in inheritance tree by early stopping when one is found
- Fix failure to detect models when
CachedModelis missing - Fix crash on SQL datafiles
- Fix crash on missing python command
- Fix crash on model classes outside a module
- Load modules in the same order Odoo load them
- Ignore invalid
Namedexpression on incomplete AST - Handle models subscripts like
self.search([])[:5] - Add missing Self evaluation to
searchmethod on BaseModel - Methods
__init_subclass__and__class_getitem__are now automatically detected asclassmethods - Allow
M2OReferenceoninverse_name - Fix index calculation in the arguments of functions
- Fix crash on empty config received from client
- Improve borrowing to avoid some borrow errors
next_refwill now rebuild descriptor on-the-fly if needed- Fix
follow_refsometimes dropping evaluations incorrectly - Remove wrong stop_on_type in features
- Check all relational fields during domain validation
- Correctly identify non-registry model classes
- Update typeshed
- Improve the
env.__getitem__to handle multiple evaluation - Improve the
follow_refmethod to handletyping.Selfevaluations
1.1.3 - Beta
Fixes
- Fix failure to detect models when
CachedModelis missing - Fix crash on SQL datafiles
- Fix crash on missing python command
- Fix crash on model classes outside a module
- Load modules in the same order Odoo load them
- Ignore invalid
Namedexpression on incomplete AST - Handle models subscripts like
self.search([])[:5] - Add missing Self evaluation to
searchmethod on BaseModel - Methods
__init_subclass__and__class_getitem__are now automatically detected asclassmethods - Allow
M2OReferenceoninverse_name - Fix index calculation in the arguments of functions
- Fix crash on empty config received from client
- Improve borrowing to avoid some borrow errors
next_refwill now rebuild descriptor on-the-fly if needed- Fix
follow_refsometimes dropping evaluations incorrectly - Remove wrong stop_on_type in features
- Check all relational fields during domain validation
- Correctly identify non-registry model classes
- Update typeshed
- Improve the
env.__getitem__to handle multiple evaluation - Improve the
follow_refmethod to handletyping.Selfevaluations
1.1.2 - Beta
Server
- Various fixes
- Fix and support for CachedModel introduced in 19.1
- Use a deterministic job queue to avoid random errors caused by different order of symbols
- For that we replace the current HashSet with a FIFO one, so symbols are processed in the queue order
Fixes
- Fix wiki link for configuration on welcome page
- Avoid having empty paths for addons or additional stubs in cli mode
- Avoid adding model dependencies in orm files to avoid rebuilding base files
- Avoid loading Models defined inside functions, e.g. tests.
- Avoid attempting to rebuild
__iter__on external files, as their file infos are deleted - Fix fetching symbols in inheritance tree by early stopping when one is found
1.1.1 - Beta
Server
- Support for encoding UTF-8, UTF-16 and UTF-32.
- Support for "untitled" files for VsCode.
- Add tests for diagnostics
Fixs
- Fix crash when a file is importing a .pyd with the same name (avoid self referencing)
- Fix OLS01002 not emitted on valued variables
- FIX OLS01004 that should not be emitted on
classmethod - FIX OLS01007 and OLS01010 on evaluation of function calls when keyword-only arguments are used.
- XML Syntax error is now OLS05000
- Fix range for diagnostic OLS05009
- Fix OLS01009 that could be emitted on valid cases.
- Fix detection of
searchandinversekeyword on fields declaration - Fix detection of
inverse_nameon One2Many if the keyword was missing - Fix deprecation warning OLS03301 that was not emitted
- Fix crash on data not being string in
__manifest__.py - Fix validation of
__manifest__.pyfiles even if the folder does not contain any__init__.py - Functions will not expose their internal function in an autocompletion anymore
1.1.0 - Beta
This Beta update improves the QoL on various IDEs and brings some new features:
- Workspace Symbol Lookup allows you to search for any class/function/model/xml_id in the whole project (ctrl-t on vscode). All xml_id are prefixed
byxmlid.and model names are quoted.
- Import statements now have autocompletion, hover and gotodefinition features.
- We now have a better support for WSL paths!
VsCode
- Better display about the server status.
PyCharm
- Improve the lifecycle of OdooLS. Server will be always running but idle, and starts only if a configuration is detected. It implies
that we removed the 'start server' button as it is not useful anymore. It should end up in a more clear and usable interface. - Fix the "Disabled" profile behavior that was preventing any further profile change.
- Starting from 2025.3, PyCharm will be able to display the loading status of the server.
- Attach additional stubs (with lxml) to the build.
- Add configuration wiki link on the settings page.
- Update deprecated API calls to isAarch64 methods.
Server
- Support for workspace Symbol requests.
- Core structure to support
$/cancelRequestnotification and use it for Workspace Symbol Request. These notifications indicates that a job can be cancelled because no more useful. - Import statements now have autocompletion, hover feature and gotodefinition.
- Server now supports WSL paths, including
file:////orfile://wsl.localhost - Server now use workDoneProgress to report loading status to client. Client that supports this feature will now display the loading progression at startup.
- Server will now send more information about its status: it can indicate if it is waiting for a git lock to be freed.
- Autocompletion and validation for inverse_name keyword argument.
- Crash reports will now include the latest LSP messages to help the debugging and give us a better overview of what happened before the crash
- It is now possible to autocomplete slices (
self.env[") even without closing the brackets. - Diagnostic filters in configuration files can now accept variables like
${userHome}or${workspaceFolder} - You can now hover and gotodefinition for module names in
__manifest__.pyfiles, and in hover you could alse see full list of the module's dependencies.
filteredandfiltered_domainnow has a proper return value.- Remove diagnostics of ImportError in the
exceptblock of atry..except ImportErrorstatement. - Doing a gotodefinition on a
display_namewill now redirect you to the compute method. - Update Ruff dependencies to 0.14.3.
Fixes
- Doing a gotodefinition on a value (like a string
"a string") will not lead to the value definition (class str) - Doing a cyclic dependency between 'modules depends' will not crash anymore but generate the diagnostic OLS04012.
- Fix the path to additional stubs and so fix the usage of the lxml stubs.
- If odoo_path is ending with
.somethingbut is pointing to a valid directory, the server should not considersomethingas a file extension, but as a part of the folder name. - Fix some internal hooks to work with user defined Fields, instead of only the Odoo ones.
- Configuration option "diag_missing_imports" is now really taken into account when generating diagnostics about imports.
- Fix dependencies on comodel and relation fields diagnostics.
- Fix missing ImportError diagnostic on import statement without a 'from' or 'as' part.
- Various small fixes and typos
1.0.4
Zed
- Fix the update script to use ".tar.gz" compression instead of ".zip" on linux and darwin computers.
Fixes
- crash fix: Borrow error on some "on-the-fly" builds.
- Fix the rust version used to compile the server to 1.91 and put this requirement in cargo.toml
1.0.3
We rewrote the thread pool of OdooLS to get rid most of the last known crashes, as they are nearly all linked to out-of-sync issues and the way the thread pool was greedily delaying important tasks.
It should result in a different feeling when using OdooLS, but it should be way more accurate and stable than before, and consistent.
It was not possible to test this new core in all possible situations, so do not hesitate to give any feedback on differences you can see with this new version.
Thank you very much to everyone for your crash reports, they were really helpful (and yes, we read all of them!)
New features will come soon in the pre-release channel, stay tuned!
Fixes
- New delayed thread and message flow in threads. Symbol creation (ARCH and ARCH-EVAL steps) are now always created on the fly, while validation of files are delayed to inactivity period. It results in more accurate and always in-sync results to requests.

