__manifest__.py files. OdooLS parses manifests using Python’s ast.literal_eval, so only static literal values are accepted. Any dynamic constructs (function calls, dict unpacking, variable references) will trigger errors.
OLS04001 — Manifest must contain exactly one dictionary
OLS04001 — Manifest must contain exactly one dictionary
Default severity: ErrorMessage:
A manifest should contain exactly one dictionaryThe __manifest__.py file must evaluate to a single dictionary literal. OdooLS (and Odoo itself) uses ast.literal_eval to parse manifests, which means the entire file must be a single expression that is a dict.Fix: Remove any code outside the dictionary literal. The file should contain nothing other than the dict.OLS04002 — Manifest must not have duplicate keys
OLS04002 — Manifest must not have duplicate keys
Default severity: ErrorMessage:
A manifest should not have duplicate keysThe manifest dictionary defines the same key more than once. Only the last definition would take effect, but this is almost always a mistake.Fix: Remove the duplicate key and merge the values if needed.OLS04003 — Module name should be a string
OLS04003 — Module name should be a string
Default severity: ErrorMessage: Fix: Set
The name of the module should be a stringThe name key in the manifest must be a string literal.name to a string: 'name': 'My Module'.OLS04004 — `depends` value should be a list
OLS04004 — `depends` value should be a list
Default severity: ErrorMessage: Fix: Wrap the value in a list:
The depends value should be a listThe depends key must be a list, not a string, tuple, or other value.'depends': ['base'].OLS04005 — `depends` should be a list of strings
OLS04005 — `depends` should be a list of strings
Default severity: ErrorMessage: Fix: Ensure all entries are string literals.
The depends key should be a list of stringsEvery element in the depends list must be a string literal (the technical name of a module).OLS04006 — Module cannot depend on itself
OLS04006 — Module cannot depend on itself
Default severity: ErrorMessage:
A module cannot depends on itselfThe manifest’s depends list contains the name of the module itself, which is invalid.Fix: Remove the module’s own name from the depends list.OLS04007 — `data` value should be a list
OLS04007 — `data` value should be a list
Default severity: ErrorMessage:
The data value should be a listThe data key must be a list of file paths, not a string or other type.Fix: Wrap the value in a list: 'data': ['views/my_view.xml'].OLS04008 — `data` should be a list of strings
OLS04008 — `data` should be a list of strings
Default severity: ErrorMessage:
The data key should be a list of stringsEvery element in the data list must be a string literal representing a relative file path.Fix: Ensure all entries are string file path literals.OLS04009 — Manifest keys should be strings
OLS04009 — Manifest keys should be strings
Default severity: ErrorMessage:
Manifest keys should be stringsAll dictionary keys in the manifest must be string literals. Integer or other non-string keys are not valid.Fix: Replace non-string keys with string literals.OLS04010 — Dependency module not found
OLS04010 — Dependency module not found
Default severity: ErrorMessage:
Module {0} depends on {1} which is not found. Please review your addons pathsA module listed in depends cannot be found in any of the configured addon paths. This means either the module name is wrong, or the addon directory containing it is not configured.Fix:- Check the module name for typos.
- Ensure the addon path containing the dependency is listed in
odools.toml. - Verify the dependency folder contains both
__init__.pyand__manifest__.py.
OLS04011 — Do not use dict unpacking in manifest
OLS04011 — Do not use dict unpacking in manifest
Default severity: ErrorMessage: Fix: Inline all values directly into the manifest dictionary.
Do not use dict unpacking to build your manifestDict unpacking (**some_dict) inside the manifest is not supported because manifests must be parseable with ast.literal_eval, which does not execute expressions.OLS04012 — Circular dependency
OLS04012 — Circular dependency
Default severity: ErrorMessage:
Module dependency: module {0} depends on current moduleA circular dependency was detected: the current module depends on module {0}, which (directly or transitively) depends back on the current module.Fix: Restructure your module dependencies to remove the cycle. Extract shared code into a base module that neither side depends on circularly.