Home

Awesome

Build Status codecov code-style-black version pypi-downloads-monthly supported-versions wheel commits-since

Pylint Odoo plugin

Enable custom checks for Odoo modules.

Short NameDescriptionCode
attribute-deprecatedattribute "%s" deprecatedW8105
attribute-string-redundantThe attribute string is redundant. String parameter equal to name of variableW8113
bad-builtin-groupbyUsed builtin function itertools.groupby. Prefer odoo.tools.groupby instead. More info about https://github.com/odoo/odoo/issues/105376W8155
category-allowedCategory "%s" not allowed in manifest file.C8114
consider-merging-classes-inheritedConsider merging classes inherited to "%s" from %s.R8180
context-overriddenContext overridden using dict. Better using kwargs with_context(**%s) or with_context(key=value)W8121
deprecated-odoo-model-method%s has been deprecated by Odoo. Please look for alternatives.W8160
development-status-allowedManifest key development_status "%s" not allowed. Use one of: %s.C8111
except-passpass into block except. If you really need to use the pass consider logging that exceptionW8138
external-request-timeoutUse of external request method %s without timeout. It could wait for a long timeE8106
invalid-commitUse of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transactionE8102
license-allowedLicense "%s" not allowed in manifest file.C8105
manifest-author-stringThe author key in the manifest file must be a string (with comma separated values)E8101
manifest-behind-migrationsManifest version (%s) is lower than migration scripts (%s)E8145
manifest-data-duplicatedThe file "%s" is duplicated in lines %s from manifest key "%s"W8125
manifest-deprecated-keyDeprecated key "%s" in manifest fileC8103
manifest-maintainers-listThe maintainers key in the manifest file must be a list of stringsE8104
manifest-required-authorOne of the following authors must be present in manifest: %sC8101
manifest-required-keyMissing required key "%s" in manifest fileC8102
manifest-version-formatWrong Version Format "%s" in manifest file. Regex to match: "%s"C8106
method-computeName of compute method should start with "compute"C8108
method-inverseName of inverse method should start with "inverse"C8110
method-required-superMissing super call in "%s" method.W8106
method-searchName of search method should start with "search"C8109
missing-readmeMissing ./README.rst file. Template here: %sC8112
missing-returnMissing return (super is used) in method %s.W8110
no-raise-unlinkNo exceptions should be raised inside unlink() functionsE8140
no-wizard-in-modelsNo wizard class for model directory. See the complete structure https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#complete-structureC8113
no-write-in-computeCompute method calling write. Use update instead.E8135
odoo-addons-relative-importSame Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.%s"W8150
odoo-exception-warningodoo.exceptions.Warning is a deprecated alias to odoo.exceptions.UserError use from odoo.exceptions import UserErrorR8101
print-usedPrint used. Use logger instead.W8116
prohibited-method-overrideProhibited override of "%s" method.W8107
renamed-field-parameterField parameter "%s" is no longer supported. Use "%s" instead.W8111
resource-not-existFile "%s": "%s" not found.F8101
sql-injectionSQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injectionE8103
test-folder-importedTest folder imported in module %sE8130
translation-contains-variableTranslatable term in "%s" contains variables. Use %s insteadW8115
translation-fieldTranslation method _("string") in fields is not necessary.W8103
translation-format-interpolationUse %s formatting in odoo._ functionsW8302
translation-format-truncatedLogging format string ends in middle of conversion specifierE8301
translation-fstring-interpolationUse %s formatting in odoo._ functionsW8303
translation-not-lazyUse %s formatting in odoo._ functionsW8301
translation-positional-usedTranslation method _(%s) is using positional string printf formatting with multiple arguments. Use named placeholder _("%%(placeholder)s") instead.W8120
translation-requiredString parameter on "%s" requires translation. Use %s_(%s)C8107
translation-too-few-argsNot enough arguments for odoo._ format stringE8306
translation-too-many-argsToo many arguments for odoo._ format stringE8305
translation-unsupported-formatUnsupported odoo._ format character %r (%#02x) at index %dE8300
use-vim-commentUse of vim commentW8202
website-manifest-key-not-valid-uriWebsite "%s" in manifest key is not a valid URIW8114

Install

You do not need to install manually if you use pre-commit-config

But if you even need to install it

pip install pylint-odoo

Usage pre-commit-config.yaml

Add to your ".pre-commit-config.yaml" configuration file the following input

    - repo: https://github.com/OCA/pylint-odoo
        rev: v9.1.2 # may be a tag or commit hash
        hooks:
        # Add to your .pylintrc file:
        # [MASTER]
        # load-plugins=pylint_odoo
        - id: pylint_odoo

Usage

pylint --load-plugins=pylint_odoo -e odoolint path/to/test

or use configuration file you can generate the OCA one using the following template repository:

https://github.com/OCA/oca-addons-repo-template

Then running

pylint --rcfile=.pylintrc path/to/test

Example to test only pylint_odoo checks:

pylint --load-plugins=pylint_odoo -d all -e odoolint {ADDONS-PATH}/*

There are checks only valid for a particular Odoo version To know what version of odoo are you running pylint needs the parameter

pylint --load-plugins=pylint_odoo --valid-odoo-versions={YOUR_ODOO_VERSION}

with particular odoo version e.g. "16.0"

Checks valid only for odoo >= 14.0

translation-format-interpolation
translation-format-truncated
translation-fstring-interpolation
translation-not-lazy
translation-too-few-args
translation-too-many-args
translation-unsupported-format

Checks valid only for odoo <= 13.0

translation-contains-variable

Examples

Development

To run all the tests run:

tox

Use extra parameters to change the test behaviour

e.g. particular python version

tox -e py310

e.g. particular unittest method

tox -e py310 -- -k test_20_expected_errors

e.g. all the tests at the same time in parallel

tox -p auto

Licenses

This repository is licensed under AGPL-3.0.


OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.