Package: pylint-odoo
Pylint Odoo pluginEnable custom checks for Odoo modules.Short NameDescriptionCodeattribute-deprecatedattribute "%s" deprecatedW8105attribute-string-redundantThe attribute string is redundant. String parameter equal to name of variableW8113bad-builtin-groupbyUsed builtin functionitertools.groupby. Preferodoo.tools.groupbyinstead. More info abouthttps://github.com/odoo/odoo/issues/105376W8155category-allowedCategory "%s" not allowed in manifest file.C8114consider-merging-classes-inheritedConsider merging classes inherited to "%s" from %s.R8180context-overriddenContext overridden using dict. Better using kwargswith_context(**%s)orwith_context(key=value)W8121deprecated-odoo-model-method%s has been deprecated by Odoo. Please look for alternatives.W8160development-status-allowedManifest key development_status "%s" not allowed. Use one of: %s.C8111except-passpass into block except. If you really need to use the pass consider logging that exceptionW8138external-request-timeoutUse of external request method%swithout timeout. It could wait for a long timeE8106invalid-commitUse of cr.commit() directly - More infohttps://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transactionE8102license-allowedLicense "%s" not allowed in manifest file.C8105manifest-author-stringThe author key in the manifest file must be a string (with comma separated values)E8101manifest-behind-migrationsManifest version (%s) is lower than migration scripts (%s)E8145manifest-data-duplicatedThe file "%s" is duplicated in lines %s from manifest key "%s"W8125manifest-deprecated-keyDeprecated key "%s" in manifest fileC8103manifest-maintainers-listThe maintainers key in the manifest file must be a list of stringsE8104manifest-required-authorOne of the following authors must be present in manifest: %sC8101manifest-required-keyMissing required key "%s" in manifest fileC8102manifest-version-formatWrong Version Format "%s" in manifest file. Regex to match: "%s"C8106method-computeName of compute method should start with "compute"C8108method-inverseName of inverse method should start with "inverse"C8110method-required-superMissingsupercall in "%s" method.W8106method-searchName of search method should start with "search"C8109missing-readmeMissing ./README.rst file. Template here: %sC8112missing-returnMissingreturn(superis used) in method %s.W8110no-raise-unlinkNo exceptions should be raised inside unlink() functionsE8140no-wizard-in-modelsNo wizard class for model directory. See the complete structurehttps://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#complete-structureC8113no-write-in-computeCompute method callingwrite. Useupdateinstead.E8135odoo-addons-relative-importSame Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.%s"W8150odoo-exception-warningodoo.exceptions.Warningis a deprecated alias toodoo.exceptions.UserErrorusefrom odoo.exceptions import UserErrorR8101print-usedPrint used. Useloggerinstead.W8116renamed-field-parameterField parameter "%s" is no longer supported. Use "%s" instead.W8111resource-not-existFile "%s": "%s" not found.F8101sql-injectionSQL injection risk. Use parameters if you can. - More infohttps://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injectionE8103test-folder-importedTest folder imported in module %sE8130translation-contains-variableTranslatable term in "%s" contains variables. Use %s insteadW8115translation-fieldTranslation method _("string") in fields is not necessary.W8103translation-format-interpolationUse %s formatting in odoo._ functionsW8302translation-format-truncatedLogging format string ends in middle of conversion specifierE8301translation-fstring-interpolationUse %s formatting in odoo._ functionsW8303translation-not-lazyUse %s formatting in odoo._ functionsW8301translation-positional-usedTranslation method _(%s) is using positional string printf formatting. Use named placeholder_("%%(placeholder)s")instead.W8120translation-requiredString parameter on "%s" requires translation. Use %s_(%s)C8107translation-too-few-argsNot enough arguments for odoo._ format stringE8306translation-too-many-argsToo many arguments for odoo._ format stringE8305translation-unsupported-formatUnsupported odoo._ format character %r (%#02x) at index %dE8300use-vim-commentUse of vim commentW8202website-manifest-key-not-valid-uriWebsite "%s" in manifest key is not a valid URIW8114InstallYou do not need to install manually if you use pre-commit-configBut if you even need to install itpip install pylint-odooUsage pre-commit-config.yamlAdd to your ".pre-commit-config.yaml" configuration file the following input-repo:https://github.com/OCA/pylint-odoorev:v9.0.5# may be a tag or commit hashhooks:# Add to your .pylintrc file:# [MASTER]# load-plugins=pylint_odoo-id:pylint_odooUsagepylint --load-plugins=pylint_odoo -e odoolint path/to/testor use configuration file you can generate the OCA one using the following template repository:https://github.com/OCA/oca-addons-repo-templateThen runningpylint --rcfile=.pylintrc path/to/testExample 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 parameterpylint --load-plugins=pylint_odoo --valid-odoo-versions={YOUR_ODOO_VERSION}with particular odoo version e.g."16.0"Checks valid only for odoo >= 14.0translation-format-interpolation
translation-format-truncated
translation-fstring-interpolation
translation-not-lazy
translation-too-few-args
translation-too-many-args
translation-unsupported-formatChecks valid only for odoo <= 13.0translation-contains-variableExamplesattribute-deprecatedhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L105attribute "_columns" deprecatedhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L106attribute "_defaults" deprecatedhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L107attribute "length" deprecatedattribute-string-redundanthttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L161The attribute string is redundant. String parameter equal to name of variablehttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L209The attribute string is redundant. String parameter equal to name of variablehttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L219The attribute string is redundant. String parameter equal to name of variablebad-builtin-groupbyhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L110Used builtin functionitertools.groupby. Preferodoo.tools.groupbyinstead. More info abouthttps://github.com/odoo/odoo/issues/105376https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L111Used builtin functionitertools.groupby. Preferodoo.tools.groupbyinstead. More info abouthttps://github.com/odoo/odoo/issues/105376consider-merging-classes-inheritedhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/model_inhe2.py#L11Consider merging classes inherited to "res.company" from testing/resources/test_repo/broken_module/models/model_inhe1.py:8:4, testing/resources/test_repo/broken_module/models/model_inhe2.py:7:4.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/model_inhe2.py#L19Consider merging classes inherited to "res.partner" from testing/resources/test_repo/broken_module/models/model_inhe2.py:15:4.context-overriddenhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L192Context overridden using dict. Better using kwargswith_context(**{'overwrite_context': True})orwith_context(key=value)https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L194Context overridden using dict. Better using kwargswith_context(**ctx)orwith_context(key=value)https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L196Context overridden using dict. Better using kwargswith_context(**ctx2)orwith_context(key=value)deprecated-odoo-model-methodhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L91fields_view_get has been deprecated by Odoo. Please look for alternatives.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/eleven_module/models.py#L17fields_view_get has been deprecated by Odoo. Please look for alternatives.development-status-allowedhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module2/__openerp__.py#L6Manifest key development_status "InvalidDevStatus" not allowed. Use one of: Alpha, Beta, Mature, Production/Stable.except-passhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/test_module/except_pass.py#L11pass into block except. If you really need to use the pass consider logging that exceptionhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/test_module/except_pass.py#L53pass into block except. If you really need to use the pass consider logging that exceptionhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/test_module/except_pass.py#L62pass into block except. If you really need to use the pass consider logging that exceptionexternal-request-timeouthttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L685Use of external request methodrequests.deletewithout timeout. It could wait for a long timehttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L686Use of external request methodrequests.getwithout timeout. It could wait for a long timehttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L687Use of external request methodrequests.headwithout timeout. It could wait for a long timeinvalid-commithttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L404Use of cr.commit() directly - More infohttps://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transactionhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L405Use of cr.commit() directly - More infohttps://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transactionhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L406Use of cr.commit() directly - More infohttps://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transactionlicense-allowedhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module2/__openerp__.py#L4License "unknow license" not allowed in manifest file.manifest-author-stringhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module3/__openerp__.py#L5The author key in the manifest file must be a string (with comma separated values)manifest-behind-migrationshttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module2/__openerp__.py#L2Manifest version (1.0) is lower than migration scripts (2.0)https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/eleven_module/__manifest__.py#L1Manifest version (11.0.1.0.0) is lower than migration scripts (11.0.1.0.1)https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/test_module/__openerp__.py#L2Manifest version (10.0.1.0.0) is lower than migration scripts (11.0.1.0.0)manifest-data-duplicatedhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/__openerp__.py#L18The file "duplicated.xml" is duplicated in lines 19 from manifest key "data"manifest-deprecated-keyhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/__openerp__.py#L7Deprecated key "description" in manifest filemanifest-maintainers-listhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module3/__openerp__.py#L6The maintainers key in the manifest file must be a list of stringsmanifest-required-authorhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/__openerp__.py#L5One of the following authors must be present in manifest: 'Odoo Community Association (OCA)'manifest-required-keyhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/__openerp__.py#L2Missing required key "license" in manifest filemanifest-version-formathttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/__openerp__.py#L8Wrong Version Format "8_0.1.0.0" in manifest file. Regex to match: "(4.2|5.0|6.0|6.1|7.0|8.0|9.0|10.0|11.0|12.0|13.0|14.0|15.0|16.0|17.0).\d+.\d+.\d+$"https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module2/__openerp__.py#L8Wrong Version Format "1.0" in manifest file. Regex to match: "(4.2|5.0|6.0|6.1|7.0|8.0|9.0|10.0|11.0|12.0|13.0|14.0|15.0|16.0|17.0).\d+.\d+.\d+$"https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module3/__openerp__.py#L8Wrong Version Format "8.0.1.0.0foo" in manifest file. Regex to match: "(4.2|5.0|6.0|6.1|7.0|8.0|9.0|10.0|11.0|12.0|13.0|14.0|15.0|16.0|17.0).\d+.\d+.\d+$"method-computehttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L155Name of compute method should start with "compute"method-inversehttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L157Name of inverse method should start with "inverse"method-required-superhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L40Missingsupercall in "copy" method.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L44Missingsupercall in "create" method.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L48Missingsupercall in "write" method.method-searchhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L156Name of search method should start with "search"missing-readmehttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/__openerp__.py#L2Missing ./README.rst file. Template here:https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rstmissing-returnhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L24Missingreturn(superis used) in method inherited_method.no-raise-unlinkhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/test_module/res_partner_unlink.py#L9No exceptions should be raised inside unlink() functionshttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/test_module/sale_order_unlink.py#L14No exceptions should be raised inside unlink() functionsno-wizard-in-modelshttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L824No wizard class for model directory. See the complete structurehttps://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#complete-structureno-write-in-computehttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L114Compute method callingwrite. Useupdateinstead.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L116Compute method callingwrite. Useupdateinstead.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L119Compute method callingwrite. Useupdateinstead.odoo-addons-relative-importhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L49Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module"https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L50Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module"https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L51Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module"odoo-exception-warninghttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L10odoo.exceptions.Warningis a deprecated alias toodoo.exceptions.UserErrorusefrom odoo.exceptions import UserErrorhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L11odoo.exceptions.Warningis a deprecated alias toodoo.exceptions.UserErrorusefrom odoo.exceptions import UserErrorhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L8odoo.exceptions.Warningis a deprecated alias toodoo.exceptions.UserErrorusefrom odoo.exceptions import UserErrorprint-usedhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/test_module/except_pass.py#L20Print used. Useloggerinstead.renamed-field-parameterhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L209Field parameter "digits_compute" is no longer supported. Use "digits" instead.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L209Field parameter "select" is no longer supported. Use "index" instead.resource-not-existhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/__openerp__.py#L14File "data": "file_no_exist.xml" not found.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/__openerp__.py#L18File "data": "duplicated.xml" not found.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/__openerp__.py#L23File "demo": "file_no_exist.xml" not found.sql-injectionhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L571SQL injection risk. Use parameters if you can. - More infohttps://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injectionhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L573SQL injection risk. Use parameters if you can. - More infohttps://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injectionhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L575SQL injection risk. Use parameters if you can. - More infohttps://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injectiontest-folder-importedhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/__init__.py#L5Test folder imported in module broken_modulehttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module2/__init__.py#L3Test folder imported in module broken_module2https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/eleven_module/__init__.py#L3Test folder imported in module eleven_moduletranslation-contains-variablehttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L371Translatable term in "'Variable not translatable: %s' % variable1" contains variables. Use _('Variable not translatable: %s') % variable1 insteadhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L372Translatable term in "'Variables not translatable: %s, %s' % (variable1, variable2)" contains variables. Use _('Variables not translatable: %s, %s') % (variable1, variable2) insteadhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L374Translatable term in "'Variable not translatable: %s' % variable1" contains variables. Use _('Variable not translatable: %s') % variable1 insteadtranslation-fieldhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L143Translation method _("string") in fields is not necessary.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L153Translation method _("string") in fields is not necessary.translation-format-interpolationhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L380Use lazy % or .format() or % formatting in odoo._ functionshttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L381Use lazy % or .format() or % formatting in odoo._ functionshttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L468Use lazy % or .format() or % formatting in odoo._ functionstranslation-format-truncatedhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L479Logging format string ends in middle of conversion specifiertranslation-fstring-interpolationhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L477Use lazy % or .format() or % formatting in odoo._ functionstranslation-not-lazyhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L345Use lazy % or .format() or % formatting in odoo._ functionshttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L346Use lazy % or .format() or % formatting in odoo._ functionshttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L348Use lazy % or .format() or % formatting in odoo._ functionstranslation-positional-usedhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L372Translation method _('Variables not translatable: %s, %s' % (variable1, variable2)) is using positional string printf formatting. Use named placeholder_("%(placeholder)s")instead.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L375Translation method _('Variables not translatable: %s %s' % (variable1, variable2)) is using positional string printf formatting. Use named placeholder_("%(placeholder)s")instead.https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L378Translation method _('Variables not translatable: %s, %s' % (variable1, variable2)) is using positional string printf formatting. Use named placeholder_("%(placeholder)s")instead.translation-requiredhttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L322String parameter on "message_post" requires translation. Use body=_('Body not translatable %s')https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L322String parameter on "message_post" requires translation. Use subject=_('Subject not translatable')https://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L324String parameter on "message_post" requires translation. Use body=_('Body not translatable {}')translation-too-few-argshttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L475Not enough arguments for odoo._ format stringtranslation-too-many-argshttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L480Too many arguments for odoo._ format stringtranslation-unsupported-formathttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/models/broken_model.py#L478Unsupported odoo._ format character 'y' (0x79) at index 30use-vim-commenthttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L108Use of vim commentwebsite-manifest-key-not-valid-urihttps://github.com/OCA/pylint-odoo/blob/v9.0.5/testing/resources/test_repo/broken_module3/__openerp__.py#L7Website "htt://odoo-community.com" in manifest key is not a valid URIDevelopmentTo run all the tests run:toxUse extra parameters to change the test behavioure.g. particular python versiontox -e py310e.g. particular unittest methodtox -e py310 -- -k test_20_expected_errorse.g. all the tests at the same time in paralleltox -p autoLicensesThis repository is licensed underAGPL-3.0.OCA, or theOdoo Community Association, is a nonprofit
organization whose mission is to support the collaborative development of Odoo features
and promote its widespread use.CHANGESv9.0.5[FIX] odoo-addons-relative-import: exclude migrations (#481)v9.0.4[REF] readme: Update readme using 'tox -e update-readme'v9.0.3[ADD] manifest-behind-migrations: check manifest version >= migrations  (#475)v9.0.2[REF] Add support to Odoo v17.0 (#477)v9.0.1[ADD] category-allowed: Add check to enforce the allowed Odoo modules categories (#459)v9.0.0[REF]: update to pylint 3.0.0, drop support for py3.7 (#474)v8.0.22[REF] setup.py: Filter out "bump version" from CHANGELOG (#472)v8.0.21[ADD] deprecated-odoo-model-method: New check to detect deprecated method for each Odoo version (#470)[REF] ci: run only one tox env per job (#468)v8.0.20[REF] tox: Build ChangeLog again (#466)[ADD] no-raise-unlink: Check if there is raise sentence in unlink method  (#458)[FIX] correct README pre-commit usage (#463)v8.0.19[FIX] pre-commit-vauxoo: Fix isort hook - RuntimeError The Poetry configuration is invalid (#456)v8.0.18[FIX] Readme: new CLI command format --valid-odoo-version (#453)[REF] ci: Update gh actions .yml and tox.ini (#451)[FIX] pre-commit-config: Update flake8 repo (#446)v8.0.17[REM] Remove unused eslintrc file[REF] tests: Autogenerate readme with examples from test_repo[REF] tox, pre-commit, readme: Small changes (#443)v8.0.16[ADD] bad-builtin-groupby: Prefer `odoo.tools.groupby` instead (#442)v8.0.15[FIX] setup: Add missing "requirements.txt" file to package (#441)v8.0.14[REF] no-wizard-in-models: Add exception for "res.config*" inherited classes (#439)[ADD] no-wizard-in-models: Add new check for avoid adding wizards class in models directory (#437)v8.0.13[REF] consider-merging-classes-inherited: Improve message with relpath + column number (#436)v8.0.12[FIX] consider-merging-classes-inherited: Fix TODO Consider case where _inherit is assigned before to _name (#435)[FIX] custom_logging: Fix AstroidSyntaxError using only binop related to '%' (#434)v8.0.11[REF] manifest-data-duplicated, resource-not-exist: Improve line number (lineno) of the duplicated node (#433)v8.0.10[FIX] pylint_odoo: Using node.op instead of hardcoded % (#432)v8.0.9[FIX] pylint_odoo: "ImportError: No module named 'packaging'" (#431)[REF] readme: Add monthly downloads from pypi badge (#430)[REF] pylint_odoo: Using new typing astroid.nodes instead of astroid.Class (#429)v8.0.8[ADD] no-write-in-compute: Don't write on a computed field  (#427)v8.0.7[REF] pylint_odoo: Replace options name from "_" to "-" because (#426)v8.0.6[REF] README: Auto update README (#425)[REF] pylint_odoo: Process max_odoo_version and min_odoo_version for checks (#424)[ADD] translation-*: Add translation-* checks with the same "logging" checks but for "odoo._" translate method (#423)[REF] CI: Enable py3.11 (#420)v8.0.5[REF] tox: Enable lints from environment list (#418)[REF] setup: Match requires-python = ">=3.7.2" from pylint (#417)[REF] CI: Enable tox with parallels + codecov compatibility (#415)[REF] augmentations: Use message code instead of message id for supression of codes (#414)v8.0.4[REF] README: Auto-update Using pylint_odoo.messages2md()[REM] class-camelcase: Replaced by invalid-name (#413)[REF] tests: Remove 'score' (#412)[REF] openerp-exception-warning: Change to odoo-exception-warning (#411)[REF] pylint_odoo: Sort items for utils.only_required_for_messages (#410)[IMP] print-used: Speed-up 'print-used' check avoid inferring (#409)[REM] eval-referenced: Replaced by eval-used check from pylint (#408)[REF] pylint_odoo: visit_dict - Use the dictionary key node (#407)v8.0.3[REF] Update "visit_*" methods availables and order code and update values (#406)[ADD] missing-readme: Add again missing-readme (#405)[REF] pylint_odoo: Clean code (#404)[REF] pylint_odoo: Clean code (#402)v8.0.2[REF] codecov, README: Enable codecov again and fix URLs from README (#401)v8.0.1[REF] readme: Migrate from RST to MARKDOWN format (#400)[REF] pylint_odoo: Small changes for CI, lints, pytest and code (#399)[REF] requirements: Update pylint dependency (#398)[IMP] pylint_odoo: black, isort, prettier (#397)v8.0.0[IMP] pylint_odoo: apocalintSYS - Full refactoring - v8.0.0 (#396)7.0.4[REF] translation-positional-used: Consider srt.format('{} {}') cases (#395)7.0.3[REF] README: Auto-update Using pylint_odoo.messages2rst()[REF] CI: Comment py3.7 travis with weird error unrelated[ADD] manifest-data-duplicated: Detect duplicated data file7.0.2[FIX] attribute-string-redundant: Only when field string is the same as title() format (#392)7.0.1[REF] pylint_odoo: Update supported Odoo version 16.0 (#391)[REF] CI: Use py3.10 and 3.11 environments for travis (#389)[REF] tests: Add unittest to check only one check enabled (#385)7.0.0[REF] external-request-timeout: Add ftplib.FTP method (#388)Revert "[PERF] *: Checkers only run when enabled #372 (#376)" (#386)[PERF] *: Checkers only run when enabled #372 (#376)[FIX] missing-import-error: add xlrd to whitelist (#379)6.2.0[IMP] duplicate-po-message-definition: Detecting duplicated only with msgid (#374)[IMP] test-folder-imported: Consider 'from . import test' missing case (#373)6.1.0[REF] README: Auto-update Using pylint_odoo.messages2rst()[ADD] external-request-timeout: It could wait for a long time (#370)[FIX] .travis.yml: npm v18.0.0 is not compatible with ubuntu used from travis (#371)[REF] README: Use new travis URL (#369)6.0.0[ADD] pre-commit-hooks: Add pylint_odoo hook to be used from pre-commit.yaml directly (#368)[REF] requirements: Bump pylint package from 2.11.1 to 2.13.5 for py3.x (#367)[FIX] CI: Fix pluggy error on py3.7 and running lint only in one build (#366)[IMP] sql-injection: Detect possible sql injections when using f-strings (#364)[FIX] Pinned lazy-object-proxy for Python 2.7 (#365)[FIX] missing-return: Incorrect check for tearDownClass (#362)5.0.5[FIX] OdooChecker: Discard migrations folder as odoo main module (#358)5.0.4Revert "[REVERT] requirements: Using pylint<2.11.0 because issue 5096 (#355)"5.0.3[REVERT] requirements: Using pylint<2.11.0 because issue 5096 (#355)5.0.2[REF] requirements: Upgrade pylint version 2.11.1 (#354)5.0.1[REF] manifest-version-format: Add new valid odoo v15.0 (#353)[REF] sql-injection: No sql-injection using constants (#351)[FIX] sql-injection: AttributeError: 'NoneType' object has no attribute 'parent' (#350)5.0.0[REF] requirements: Upgrade pylint version (#349)4.0.0[REF] README: Auto-update Using pylint_odoo.messages2rst()[ADD] dangerous-qweb-replace-wo-priority: Consider qweb view templates (#347)[ADD] context-overridden: Better using kwargs instead of dictionary (#256)[REF] invalid-name, unused-argument: Suppress check for migrations path (#348)3.10.0[FIX] sql-injection: Fix false positives (#344)[FIX] pylint_odoo: Fix manifest_version_format option ignored (#346)3.9.0[FIX] translation-required: Skip tests folder (#345)[FIX] xml-syntax-error: Fix crash if a xml has syntax errors (#343)[REF] pylint-odoo: Add .pylintrc example (#325)[FIX] attribute-deprecated: Check only "Model" class' attributes (#342)[FIX] attribute-string-redundant: "string" of related field is taken from the referenced one (#341)[FIX] file-not-used: Fix false positives on Windows (#335)3.8.0[FIX] Add pbr to requirements (#328)[REF] requirements: upgrade pylint version (#320)3.7.1[FIX] test-folder-imported: Support all import styles (#315)[FIX] misc.py: Properly support python namespace package when detecting the odoo addon directory (#317)3.7.0[REF] README: Auto-update Using pylint_odoo.messages2rst()[ADD] translation-positional-used: New check to valid the allow change the order of string formatting (#305)[ADD] str-format-used: Check if str.format was used in translated string (#304)[ADD] test-folder-imported: check if tests folder is imported in init file (#310)3.6.0[FIX] requirements: fix dependencies break with pip 20.3 Fix #306 (#313)[ADD] add compatibility to v14.0 (#312)3.5.1[REF] .travis.yml: Enable condition to deploy pypi[REF] README: Auto-update Using pylint_odoo.messages2rst()[FIX] dangerous-view-replace-wo-priority: check all child tags with replace (#309)[ADD] pylint-odoo: add new check to maintainers key in manifest must be a list of str (#308)[REF] development-status-allowed: Explicitly report possible values (#301)[REF]  odoo-addons-relative-import: does not apply in tests/ directory (#307)[REF] CI: Enable py3.8 and py3.9 (#294)3.5.0[FIX] messages2rst: Compatible with more than 3 message items[REF] no-utf8-coding-comment,unnecessary-utf8-coding-comment: Using python version to enable/disable them (#292)[REF] po-msgstr-variables: Check if there is missing 'module:' comment (#291)3.4.0[REF] README: Auto-update Using pylint_odoo.messages2rst()Fixing pragma: no cover position[ADD] po-msgstr-variables: Check if string translated can be parsed correctly[ADD] duplicate-po-message-definition, po-syntax-error: Enable PO checks3.3.2[REF] missing-manifest-dependency: Add openupgradelib as a whitelist. (#288)[FIX] sql-injection: Consider valid arguments built with psycopg2.sql3.3.1[REF] missing-import-error: Add new packages for Odoo v13.03.3.0[REF] requirements.txt: Update packages version (#285)3.2.0[FIX] get_manifest_file: Get manifest file correctly[FIX] Visit module: manage odoo subdirectories Better way to check whether a path is a path of a subdirectoy of a Odoo module. Before, '/a/b/cc/d' was considered as a subdirectoy of '/a/b/c' because '/a/b/c' in '/a/b/cc/d' == True3.1.0[REF] README: Auto-update Using pylint_odoo.messages2rst()[FIX] rst_lint: Using UTF-8 encoding by default (#272)[ADD] Possibility of package name include dots[REF] .travis.yml: Using py3.7 stable instead of dev (#271)Improve incoherent-interpreter-exec-perm messageFix incompatibility with isort configuration file[FIX] rst-syntax-error: Using a 0 by default if line None is returned3.0.3[REF] README: Auto-update Using pylint_odoo.messages2rst()Revert "[ADD] method-default prefix" (#254)3.0.2[REF] README: Auto-update Using pylint_odoo.messages2rst()[REF] CI: Fixing flake8, tests and clean requirements[REF] pylint_odoo: Supports odoo 13.0[ADD] method-default prefix[FIX] .travis.yml: Upgrade nvm version supported for eslintAllow console statements[ADD] print-used: Use _logger instead of print (#241)3.0.1[FIX] AttributeError: 'MessagesStore' object has no attribute '_messages' related tohttps://github.com/PyCQA/pylint/commit/75cecdb1b88cc759223e83fd325aeafd09fec37e[IMP] added support Pylint 2.3.0 and Astroid 2.2.03.0.0[REF] README: Auto-update Using pylint_odoo.messages2rst()[REF] sql-injection: Test private attributes (#226)[REF] tox: Upgrade new pylint for py3 (#215)2.0.2[REF] manifest-required-authors: Support old deprecated parameter2.0.1[REF] README: Auto-update Using pylint_odoo.messages2rst()[DEL] require-jsdoc, keep require-valid-jsdoc[FIX]change the location of Guidelines URL[ADD] development-status-allowed: New check to verity valid development status Fixhttps://github.com/OCA/pylint-odoo/issues/199[REF] missing-import-error: Check enabled just for odoo <= 11.0Add fuzzy to ES globalsAllow usage of `undefined` (#214)Jslint jsdoc relax (#209)[REF] pylint-odoo: Compatibility with python3.7 (#205)[IMP] file-not-used: Ignore unused files into the migrations directory (#213)[IMP] manifest-required-author: Allow multiple possible required authors[FIX] missing-manifest-dependency: Exclude tests directory[FIX] manifest-version-format: Don't ignore valid Odoo versions[FIX] requirements: Include "six" package (#207)2.0.0[REF] README: Auto-update Using pylint_odoo.messages2rst()[DOC] README.rst: Adding documentation to the way to skip one check based on the Odoo Version[REF] requirements: Bump requirements versionAdd _register_hook in "no missing return" methods (#201)[ADD] Add new lint to detect variables within translatable strings (#198)[FIX] translation-required: Fix some false positives (#196)[REF] .travis.yml: Allow both W503 and W504 formats (#197)1.9.5[REF] .travis.yml: Just deploy a env and avoid cleanup before to deploy1.9.4[REF] pylint_odoo: Increase coverage test[FIX] README.rst: Fix syntax and run check[FIX] don't complain about string attribute nodes in translation check[REF] javascript-lint: Allow to use moment (#189)Allow short ternary expressions[IMP] ESLint usability boost (#185)[REF] javascript-lint: Emit a message if there is internal error[REF] jslintrc: Use of property style for dot-location[REF] The method message_post need the subject and body be translatable[FIX] duplicate-xml-fields: Now consider as duplicated using domain and context values (#172)1.9.3[REF] pylint_odoo: Use check-name instead of check-code for add_message method (#174)[FIX] pylint_odoo: Change the number of the appearances of the check (#173)[REF] README: Auto-update Using pylint_odoo.messages2rst()[ADD] unnecessary-utf8-coding-comment: The utf8 comment is unnecessary if the version of odoo is 11.0 because use py3 (#168)[FIX] missing-external-dependency: Skip relative imports that starts with dot (#171)[ADD] character-not-valid-in-resource-link: To valid the character '?/#' into the in src/href link (#163)[REF] javascript-lint: Disable comma-dangle and prefer-rest-params checks[REF] .travis.yml: Freeze flake8 version In order to avoid false red if a new check is added[ADD] Add licence OEEL-1 into licence-allowed for module depending on Enterprise (#165)[ADD] xml-deprecated-qweb-directive: Deprecated QWeb directives (#157)[FIX] Add 11.0 as valid Odoo version[FIX] unicode error removing decode and use bytes with bytes  - Open file with rb and use bytes with bytes  - Use xml_special_char.xml: Use a special char to reproduce a decode  error1.8.2[REF] pylint_odoo: Support python31.8.1[REF] README: Auto-update Using pylint_odoo.messages2rst()[FIX] deprecated-data-xml-node: Fix false negative with data/record + record for xml nodes (#156)[FIX] disable xml check: get method called when the method is not called directly (#154)[FIX] misc: TypeError argument of type 'NoneType' is not iterable (#150)[FIX] manifest-version-format: Use real dot from regex (#153)[FIX] manifest-version-format: Adds matching for string end to default manifest version format (#155)[ADD] xml-deprecated-tree-attribute: Implements check for deprecated tree attributes (#149)[REF] jslintrc: Disable prefer-spread[IMP] missing-return: Skip missing return if function is a generator (#147)[IMP] missing-return/required-super: setUpClass (#143)[IMP] missing-readme: Check for other supported file names (#140)[REF] jslintrc: Disable prefer-reflect error (#141)[REF] file-not-used: Consider as used the files referenced from report xml files (#138)1.8.0[REF] README: Auto-update Using pylint_odoo.messages2rst()[REF] cache: Cache other extension files just if is a odoo module (#142)[IMP] pylint_odoo: Skip pylint check on one xml file (#135)[ADD] website-manifest-key-not-valid-uri: For validate if the website into manifest is valid URI (#136)1.7.0[REF] README: Auto-update Using pylint_odoo.messages2rst()[ADD] pylint_odoo: Adding new check resource-not-exist (#130)[FIX] fields: Validate a assign directly from root class (#116)[FIX] jslintrc: Remove deprecated ecmaFeatures key[ADD] pylint_odoo: Adding check detected  tag inside  tag and show warning  (#129)[REF] Fix typo[REF] jslint: Enable no-comma-dangle check[IMP] sql-injection: support new cases and ignore some false positives (#122)[FIX] xml-attribute-translatable: Skip if version is different 8.0 (#117)[FIX] deprecated-module: Consider 'from openerp.osv.expression'1.6.0[REF] README: Auto-update Using the following script: 'PYTHONPATH=~/odoo/pylint-odoo python -c "import pylint_odoo;print pylint_odoo.messages2rst()"'[REF] .travis.yml: Renamed flake8 error from F999 to F601 (#115)[FIX] Check file-not-used: Skip tests folders (#114)[FIX] incoherent-interpreter-exec-perm: Skip check for windows (#113)[ADD] except-pass: Emit message If a except:pass is used (#107)[FIX] attribute-string-redundant: Add "isinstance" validation for nodes[ADD] attribute-string-redundant: Check if "string" parameter is equal to variable name (#100)[ADD] renamed-field-parameter: Detect deprecated field values (digits_compute, select) (#99)[REF] javascript-lint: Use eslint instead of jshint (#97)[ADD] xml-attribute-translatable: Check XML attribute without translation parameter (#105)[REF] incoherent-interpreter-exec-perm: Better message (#106)[IMP] pylint-odoo: Adding support for parameters --ignore and --ignore-patterns (#103)[ADD] eval-referenced: Detects if a "eval" is referenced (without call it) (#101)[FIX] duplicate-xml-fields: False red using 2 tree sub-views *2M fields (#96)[FIX] method-NAME: Fix if value is not a string[REF] misc: Remove deprecated method[FIX] test: Never use global into test1.5.0[REF] duplicate-xml-record-id: Get xml section from manifest to skip different origin (#89)[FIX] method-NAME: Fix case compute=None Fix OCA/pylint-odoo#881.4.0[REF] attribute-deprecated: Deprecate length class attribute (#86)[ADD] missing-return If you use call a `super` method then you will need return the original value. If you want overwrite a original method then you need add documentation of why and add a `pylint: disable=missing-return`[FIX] Whitelist `anybox.testing.openerp` * Add `anybox.testing.openerp` - Fixes #81[FIX] manifest-version-format: Fix regex to use explicit dot instead of any char[FIX] manifest-version-format: Support -e manifest-version-format only[FIX] missing-import-error: Updating libraries used from requirements.txt but not imported or nested imported from odoo[IMP] manifest-version-format: Add valid_odoo_versions parameter to force a valid version of odoo in the manifest version[REF] missing-import-error: Skip test file since these files are loaded only when running tests and in such a case your module and their external dependencies are installed[ADD] Support for 10.0 manifest name[REF] requirements: Update developer version of pylint and astroid1.3.5Adding isort dependency (#70)1.3.4[REF] README: Update messages list1.3.3[ADD] missing-import-error, missing-manifest-dependency[FIX] rst-syntax-error: Skip unknown roles[FIX] rst-syntax-error: Skip unknown directives[REF] global refactoring: better message output and use real file and line number in non-py files (#62)[REF] README: Add examples special folder[REF] checkers: Skip example folder to check lints1.3.2[REF] README: Update messages list1.3.1[ADD] file-not-used: Emit message if there are xml, yml, sql or csv files but It isn't referenced from manifest (#53)[ADD] dangerous-view-replace-wo-priority: Check dangerous view with replace but defined with low priority (#55)[ADD] old-api7-method-defined: Emit message if the method defined have (self, cr, uid) (#52)[ADD] odoo-addons-relative-import (#56)[REF] tox: Freeze stable sha pylint20[FIX] consider-merging-classes-inherited: Skip check if has '_name' and fix when you use '_inherit' name out of class attribute . Add more tests[REF] missing-newline-extrafiles: Skip lib folder[FIX] consider-merging-classes-inherited: Fix leaving module isn't a good idea. Better close method[IMP] consider-merging-classes-inherited: Support disable comment[REF] consider-merging-classes-inherited: Use assign node and better message[ADD] consider-merging-classes-inherited[REF] Increase performance[IMP] pylint_odoo: Enable cProfile print stats[IMP] deprecated-module: Add exception for the case of valid openerp.osv.expression (#40)[IMP] sql-injection: Add compatibility with .format (#44)[REF] translation-required: 100% coverage[IMP] translation-required: Support % strings[IMP] translation-required: Support .format[FIX] translation-required: Fix AttributeError 'Getattr' object has no attribute 'name'[IMP] translation-required: Just check odoo exceptions[FIX] odoolint: Remove unsafe eval and reduce mccabe rate1.3.0[REF] README: Add new checks (#36)[FIX] duplicate-xml-fields: Support security xml style (#35)[ADD] sql-injection: Add new check to avoid sql injection (#29)[FIX] missing-newline-extrafiles: Fix 'IOError: [Errno 22] Invalid argument' by files of size 2 (#37)[REF] README: Add new checks[ADD] method-param: Check param method starts with "_param_" (#33)[FIX] join_node_args_kwargs: AttributeError (#30)[REF] duplicate-id-csv: Better message of error  - Message before: Duplicate id id_example1 in ir.model.access.csv file  - Message now: security/ir.model.access.csv duplicated id id_example1[REF] javascript-lint: Ignore /lib/ subfolder[ADD] invalid-commit: Add new check invalid-commit  - Verify the guidelinehttps://github.com/oca/maintainer-tools/blob/master/CONTRIBUTING.md#never-commit-the-transaction1.2.0[REF] README.rst: Updating new checks[IMP] test: Add tox for multi-environment and add compatiblity with latest version[ADD] translation-required: Add check to required even a translation (#23)[IMP] Add pylint check missing newline in extra extension files[IMP] test: Add tox for multi-environment and add compatiblity with latest version[IMP] Add Check tabs identation instead of four spacesbetter_msgmerge[REF] test: better way to identify check error expected[IMP] Add check Duplicate field in xml record (#20)[IMP] Add pylint check Redundant module name reference in xml_id[IMP] pylint_odoo: Add check duplicate ids in ir.model.access.csv files[IMP] pylint_odoo: Add check for manifest-version-format[FIX] OCA/MQT#302: Use of astroid version 1.3.81.1.0[FIX] setup: Build ChangeLog file[ADD] Add check 'deprecated-openerp-xml-node'[ADD] ChangeLog: Empty file to support auto build[FIX] Change _fields by _columns[REF] Fix typo[IMP] Add check 'create-user-without-reset-password'[IMP] Support odoo tag in xml file[REF] Support of 'noupdate' in check 'duplicate-xml-record-id'[REF] setup.cfg: Enable ChangeLog[REF] README: Add new message manifest-author-string1.0.2check that author is a string1.0.1[REF] Migrate md to rst1.0.0[IMP] .travis.yml: Enable auto deploy of pypi package from travis[ADD] pylint_odoo: Add main package[ADD] .gitignore: Add file gitignore for first commit