%global _empty_manifest_terminate_build 0 Name: python-pylint-odoo Version: 8.0.19 Release: 1 Summary: Pylint plugin for Odoo License: APGL3 URL: https://github.com/OCA/pylint-odoo Source0: https://mirrors.nju.edu.cn/pypi/web/packages/d8/c6/ccfb5a9635a7ad6cb1026e045e3d658e5f0db3481faafef91d215ba8aed6/pylint-odoo-8.0.19.tar.gz BuildArch: noarch Requires: python3-pylint-plugin-utils Requires: python3-pylint Requires: python3-validators %description attribute-deprecated | attribute "%s" deprecated | W8105 attribute-string-redundant | The attribute string is redundant. String parameter equal to name of variable | W8113 bad-builtin-groupby | Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376 | W8155 consider-merging-classes-inherited | Consider merging classes inherited to "%s" from %s. | R8180 context-overridden | Context overridden using dict. Better using kwargs `with_context(**%s)` or `with_context(key=value)` | W8121 development-status-allowed | Manifest key development_status "%s" not allowed. Use one of: %s. | C8111 except-pass | pass into block except. If you really need to use the pass consider logging that exception | W8138 external-request-timeout | Use of external request method `%s` without timeout. It could wait for a long time | E8106 invalid-commit | Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction | E8102 license-allowed | License "%s" not allowed in manifest file. | C8105 manifest-author-string | The author key in the manifest file must be a string (with comma separated values) | E8101 manifest-data-duplicated | The file "%s" is duplicated in lines %s from manifest key "%s" | W8125 manifest-deprecated-key | Deprecated key "%s" in manifest file | C8103 manifest-maintainers-list | The maintainers key in the manifest file must be a list of strings | E8104 manifest-required-author | One of the following authors must be present in manifest: %s | C8101 manifest-required-key | Missing required key "%s" in manifest file | C8102 manifest-version-format | Wrong Version Format "%s" in manifest file. Regex to match: "%s" | C8106 method-compute | Name of compute method should start with "_compute_" | C8108 method-inverse | Name of inverse method should start with "_inverse_" | C8110 method-required-super | Missing `super` call in "%s" method. | W8106 method-search | Name of search method should start with "_search_" | C8109 missing-readme | Missing ./README.rst file. Template here: %s | C8112 missing-return | Missing `return` (`super` is used) in method %s. | W8110 no-wizard-in-models | No wizard class for model directory. See the complete structure https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#complete-structure | C8113 no-write-in-compute | Compute method calling `write`. Use `update` instead. | E8135 odoo-addons-relative-import | Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.%s" | W8150 odoo-exception-warning | `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` | R8101 print-used | Print used. Use `logger` instead. | W8116 renamed-field-parameter | Field parameter "%s" is no longer supported. Use "%s" instead. | W8111 resource-not-exist | File "%s": "%s" not found. | F8101 sql-injection | SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection | E8103 test-folder-imported | Test folder imported in module %s | E8130 translation-contains-variable | Translatable term in "%s" contains variables. Use %s instead | W8115 translation-field | Translation method _("string") in fields is not necessary. | W8103 translation-format-interpolation | Use %s formatting in odoo._ functions | W8302 translation-format-truncated | Logging format string ends in middle of conversion specifier | E8301 translation-fstring-interpolation | Use %s formatting in odoo._ functions | W8303 translation-not-lazy | Use %s formatting in odoo._ functions | W8301 translation-positional-used | Translation method _(%s) is using positional string printf formatting. Use named placeholder `_("%%(placeholder)s")` instead. | W8120 translation-required | String parameter on "%s" requires translation. Use %s_(%s) | C8107 translation-too-few-args | Not enough arguments for odoo._ format string | E8306 translation-too-many-args | Too many arguments for odoo._ format string | E8305 translation-unsupported-format | Unsupported odoo._ format character %r (%#02x) at index %d | E8300 use-vim-comment | Use of vim comment | W8202 website-manifest-key-not-valid-uri | Website "%s" in manifest key is not a valid URI | W8114 [//]: # (end-checks) # 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 ```yaml - repo: https://github.com/OCA/pylint-odoo rev: v8.0.19 hooks: # Add to your .pylintrc file: # [MASTER] # load-plugins=pylint_odoo - id: pylint ``` # 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 [//]: # (start-example) # Examples * attribute-deprecated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L93 attribute "_columns" deprecated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L94 attribute "_defaults" deprecated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L95 attribute "length" deprecated * attribute-string-redundant - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L149 The attribute string is redundant. String parameter equal to name of variable - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L197 The attribute string is redundant. String parameter equal to name of variable - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L207 The attribute string is redundant. String parameter equal to name of variable * bad-builtin-groupby - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L98 Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376 - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L99 Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376 * consider-merging-classes-inherited - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/model_inhe2.py#L11 Consider 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/v8.0.19/testing/resources/test_repo/broken_module/models/model_inhe2.py#L19 Consider merging classes inherited to "res.partner" from testing/resources/test_repo/broken_module/models/model_inhe2.py:15:4. * context-overridden - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L180 Context overridden using dict. Better using kwargs `with_context(**{'overwrite_context': True})` or `with_context(key=value)` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L182 Context overridden using dict. Better using kwargs `with_context(**ctx)` or `with_context(key=value)` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L184 Context overridden using dict. Better using kwargs `with_context(**ctx2)` or `with_context(key=value)` * development-status-allowed - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__openerp__.py#L6 Manifest key development_status "InvalidDevStatus" not allowed. Use one of: Alpha, Beta, Mature, Production/Stable. * except-pass - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L11 pass into block except. If you really need to use the pass consider logging that exception - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L53 pass into block except. If you really need to use the pass consider logging that exception - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L62 pass into block except. If you really need to use the pass consider logging that exception * external-request-timeout - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L673 Use of external request method `requests.delete` without timeout. It could wait for a long time - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L674 Use of external request method `requests.get` without timeout. It could wait for a long time - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L675 Use of external request method `requests.head` without timeout. It could wait for a long time * invalid-commit - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L392 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L393 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L394 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction * license-allowed - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__openerp__.py#L4 License "unknow license" not allowed in manifest file. * manifest-author-string - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L5 The author key in the manifest file must be a string (with comma separated values) * manifest-data-duplicated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L18 The file "duplicated.xml" is duplicated in lines 19 from manifest key "data" * manifest-deprecated-key - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L7 Deprecated key "description" in manifest file * manifest-maintainers-list - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L6 The maintainers key in the manifest file must be a list of strings * manifest-required-author - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L5 One of the following authors must be present in manifest: 'Odoo Community Association (OCA)' * manifest-required-key - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L2 Missing required key "license" in manifest file * manifest-version-format - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L8 Wrong 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)\.\d+\.\d+\.\d+$" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__openerp__.py#L8 Wrong 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)\.\d+\.\d+\.\d+$" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L8 Wrong 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)\.\d+\.\d+\.\d+$" * method-compute - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L143 Name of compute method should start with "_compute_" * method-inverse - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L145 Name of inverse method should start with "_inverse_" * method-required-super - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L40 Missing `super` call in "copy" method. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L44 Missing `super` call in "create" method. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L48 Missing `super` call in "write" method. * method-search - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L144 Name of search method should start with "_search_" * missing-readme - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L2 Missing ./README.rst file. Template here: https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst * missing-return - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L24 Missing `return` (`super` is used) in method inherited_method. * no-wizard-in-models - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L812 No wizard class for model directory. See the complete structure https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#complete-structure * no-write-in-compute - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L102 Compute method calling `write`. Use `update` instead. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L104 Compute method calling `write`. Use `update` instead. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L107 Compute method calling `write`. Use `update` instead. * odoo-addons-relative-import - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L49 Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L50 Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L51 Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module" * odoo-exception-warning - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L10 `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L11 `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L8 `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` * print-used - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L20 Print used. Use `logger` instead. * renamed-field-parameter - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L197 Field parameter "digits_compute" is no longer supported. Use "digits" instead. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L197 Field parameter "select" is no longer supported. Use "index" instead. * resource-not-exist - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L14 File "data": "file_no_exist.xml" not found. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L18 File "data": "duplicated.xml" not found. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L23 File "demo": "file_no_exist.xml" not found. * sql-injection - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L559 SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L561 SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L563 SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection * test-folder-imported - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__init__.py#L5 Test folder imported in module broken_module - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__init__.py#L3 Test folder imported in module broken_module2 - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/eleven_module/__init__.py#L3 Test folder imported in module eleven_module * translation-contains-variable - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L359 Translatable term in "'Variable not translatable: %s' % variable1" contains variables. Use _('Variable not translatable: %s') % variable1 instead - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L360 Translatable term in "'Variables not translatable: %s, %s' % (variable1, variable2)" contains variables. Use _('Variables not translatable: %s, %s') % (variable1, variable2) instead - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L362 Translatable term in "'Variable not translatable: %s' % variable1" contains variables. Use _('Variable not translatable: %s') % variable1 instead * translation-field - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L131 Translation method _("string") in fields is not necessary. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L141 Translation method _("string") in fields is not necessary. * translation-format-interpolation - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L368 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L369 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L456 Use lazy % or .format() or % formatting in odoo._ functions * translation-format-truncated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L467 Logging format string ends in middle of conversion specifier * translation-fstring-interpolation - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L465 Use lazy % or .format() or % formatting in odoo._ functions * translation-not-lazy - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L333 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L334 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L336 Use lazy % or .format() or % formatting in odoo._ functions * translation-positional-used - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L360 Translation 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/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L363 Translation 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/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L366 Translation method _('Variables not translatable: %s, %s' % (variable1, variable2)) is using positional string printf formatting. Use named placeholder `_("%(placeholder)s")` instead. * translation-required - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L310 String parameter on "message_post" requires translation. Use body=_('Body not translatable %s') - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L310 String parameter on "message_post" requires translation. Use subject=_('Subject not translatable') - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L312 String parameter on "message_post" requires translation. Use body=_('Body not translatable {}') * translation-too-few-args - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L463 Not enough arguments for odoo._ format string * translation-too-many-args - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L468 Too many arguments for odoo._ format string * translation-unsupported-format - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L466 Unsupported odoo._ format character 'y' (0x79) at index 30 * use-vim-comment - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L108 Use of vim comment * website-manifest-key-not-valid-uri - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L7 Website "htt://odoo-community.com" in manifest key is not a valid URI [//]: # (end-example) # 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 %package -n python3-pylint-odoo Summary: Pylint plugin for Odoo Provides: python-pylint-odoo BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-pylint-odoo attribute-deprecated | attribute "%s" deprecated | W8105 attribute-string-redundant | The attribute string is redundant. String parameter equal to name of variable | W8113 bad-builtin-groupby | Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376 | W8155 consider-merging-classes-inherited | Consider merging classes inherited to "%s" from %s. | R8180 context-overridden | Context overridden using dict. Better using kwargs `with_context(**%s)` or `with_context(key=value)` | W8121 development-status-allowed | Manifest key development_status "%s" not allowed. Use one of: %s. | C8111 except-pass | pass into block except. If you really need to use the pass consider logging that exception | W8138 external-request-timeout | Use of external request method `%s` without timeout. It could wait for a long time | E8106 invalid-commit | Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction | E8102 license-allowed | License "%s" not allowed in manifest file. | C8105 manifest-author-string | The author key in the manifest file must be a string (with comma separated values) | E8101 manifest-data-duplicated | The file "%s" is duplicated in lines %s from manifest key "%s" | W8125 manifest-deprecated-key | Deprecated key "%s" in manifest file | C8103 manifest-maintainers-list | The maintainers key in the manifest file must be a list of strings | E8104 manifest-required-author | One of the following authors must be present in manifest: %s | C8101 manifest-required-key | Missing required key "%s" in manifest file | C8102 manifest-version-format | Wrong Version Format "%s" in manifest file. Regex to match: "%s" | C8106 method-compute | Name of compute method should start with "_compute_" | C8108 method-inverse | Name of inverse method should start with "_inverse_" | C8110 method-required-super | Missing `super` call in "%s" method. | W8106 method-search | Name of search method should start with "_search_" | C8109 missing-readme | Missing ./README.rst file. Template here: %s | C8112 missing-return | Missing `return` (`super` is used) in method %s. | W8110 no-wizard-in-models | No wizard class for model directory. See the complete structure https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#complete-structure | C8113 no-write-in-compute | Compute method calling `write`. Use `update` instead. | E8135 odoo-addons-relative-import | Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.%s" | W8150 odoo-exception-warning | `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` | R8101 print-used | Print used. Use `logger` instead. | W8116 renamed-field-parameter | Field parameter "%s" is no longer supported. Use "%s" instead. | W8111 resource-not-exist | File "%s": "%s" not found. | F8101 sql-injection | SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection | E8103 test-folder-imported | Test folder imported in module %s | E8130 translation-contains-variable | Translatable term in "%s" contains variables. Use %s instead | W8115 translation-field | Translation method _("string") in fields is not necessary. | W8103 translation-format-interpolation | Use %s formatting in odoo._ functions | W8302 translation-format-truncated | Logging format string ends in middle of conversion specifier | E8301 translation-fstring-interpolation | Use %s formatting in odoo._ functions | W8303 translation-not-lazy | Use %s formatting in odoo._ functions | W8301 translation-positional-used | Translation method _(%s) is using positional string printf formatting. Use named placeholder `_("%%(placeholder)s")` instead. | W8120 translation-required | String parameter on "%s" requires translation. Use %s_(%s) | C8107 translation-too-few-args | Not enough arguments for odoo._ format string | E8306 translation-too-many-args | Too many arguments for odoo._ format string | E8305 translation-unsupported-format | Unsupported odoo._ format character %r (%#02x) at index %d | E8300 use-vim-comment | Use of vim comment | W8202 website-manifest-key-not-valid-uri | Website "%s" in manifest key is not a valid URI | W8114 [//]: # (end-checks) # 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 ```yaml - repo: https://github.com/OCA/pylint-odoo rev: v8.0.19 hooks: # Add to your .pylintrc file: # [MASTER] # load-plugins=pylint_odoo - id: pylint ``` # 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 [//]: # (start-example) # Examples * attribute-deprecated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L93 attribute "_columns" deprecated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L94 attribute "_defaults" deprecated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L95 attribute "length" deprecated * attribute-string-redundant - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L149 The attribute string is redundant. String parameter equal to name of variable - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L197 The attribute string is redundant. String parameter equal to name of variable - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L207 The attribute string is redundant. String parameter equal to name of variable * bad-builtin-groupby - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L98 Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376 - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L99 Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376 * consider-merging-classes-inherited - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/model_inhe2.py#L11 Consider 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/v8.0.19/testing/resources/test_repo/broken_module/models/model_inhe2.py#L19 Consider merging classes inherited to "res.partner" from testing/resources/test_repo/broken_module/models/model_inhe2.py:15:4. * context-overridden - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L180 Context overridden using dict. Better using kwargs `with_context(**{'overwrite_context': True})` or `with_context(key=value)` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L182 Context overridden using dict. Better using kwargs `with_context(**ctx)` or `with_context(key=value)` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L184 Context overridden using dict. Better using kwargs `with_context(**ctx2)` or `with_context(key=value)` * development-status-allowed - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__openerp__.py#L6 Manifest key development_status "InvalidDevStatus" not allowed. Use one of: Alpha, Beta, Mature, Production/Stable. * except-pass - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L11 pass into block except. If you really need to use the pass consider logging that exception - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L53 pass into block except. If you really need to use the pass consider logging that exception - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L62 pass into block except. If you really need to use the pass consider logging that exception * external-request-timeout - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L673 Use of external request method `requests.delete` without timeout. It could wait for a long time - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L674 Use of external request method `requests.get` without timeout. It could wait for a long time - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L675 Use of external request method `requests.head` without timeout. It could wait for a long time * invalid-commit - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L392 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L393 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L394 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction * license-allowed - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__openerp__.py#L4 License "unknow license" not allowed in manifest file. * manifest-author-string - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L5 The author key in the manifest file must be a string (with comma separated values) * manifest-data-duplicated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L18 The file "duplicated.xml" is duplicated in lines 19 from manifest key "data" * manifest-deprecated-key - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L7 Deprecated key "description" in manifest file * manifest-maintainers-list - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L6 The maintainers key in the manifest file must be a list of strings * manifest-required-author - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L5 One of the following authors must be present in manifest: 'Odoo Community Association (OCA)' * manifest-required-key - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L2 Missing required key "license" in manifest file * manifest-version-format - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L8 Wrong 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)\.\d+\.\d+\.\d+$" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__openerp__.py#L8 Wrong 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)\.\d+\.\d+\.\d+$" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L8 Wrong 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)\.\d+\.\d+\.\d+$" * method-compute - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L143 Name of compute method should start with "_compute_" * method-inverse - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L145 Name of inverse method should start with "_inverse_" * method-required-super - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L40 Missing `super` call in "copy" method. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L44 Missing `super` call in "create" method. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L48 Missing `super` call in "write" method. * method-search - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L144 Name of search method should start with "_search_" * missing-readme - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L2 Missing ./README.rst file. Template here: https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst * missing-return - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L24 Missing `return` (`super` is used) in method inherited_method. * no-wizard-in-models - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L812 No wizard class for model directory. See the complete structure https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#complete-structure * no-write-in-compute - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L102 Compute method calling `write`. Use `update` instead. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L104 Compute method calling `write`. Use `update` instead. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L107 Compute method calling `write`. Use `update` instead. * odoo-addons-relative-import - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L49 Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L50 Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L51 Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module" * odoo-exception-warning - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L10 `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L11 `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L8 `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` * print-used - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L20 Print used. Use `logger` instead. * renamed-field-parameter - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L197 Field parameter "digits_compute" is no longer supported. Use "digits" instead. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L197 Field parameter "select" is no longer supported. Use "index" instead. * resource-not-exist - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L14 File "data": "file_no_exist.xml" not found. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L18 File "data": "duplicated.xml" not found. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L23 File "demo": "file_no_exist.xml" not found. * sql-injection - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L559 SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L561 SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L563 SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection * test-folder-imported - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__init__.py#L5 Test folder imported in module broken_module - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__init__.py#L3 Test folder imported in module broken_module2 - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/eleven_module/__init__.py#L3 Test folder imported in module eleven_module * translation-contains-variable - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L359 Translatable term in "'Variable not translatable: %s' % variable1" contains variables. Use _('Variable not translatable: %s') % variable1 instead - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L360 Translatable term in "'Variables not translatable: %s, %s' % (variable1, variable2)" contains variables. Use _('Variables not translatable: %s, %s') % (variable1, variable2) instead - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L362 Translatable term in "'Variable not translatable: %s' % variable1" contains variables. Use _('Variable not translatable: %s') % variable1 instead * translation-field - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L131 Translation method _("string") in fields is not necessary. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L141 Translation method _("string") in fields is not necessary. * translation-format-interpolation - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L368 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L369 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L456 Use lazy % or .format() or % formatting in odoo._ functions * translation-format-truncated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L467 Logging format string ends in middle of conversion specifier * translation-fstring-interpolation - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L465 Use lazy % or .format() or % formatting in odoo._ functions * translation-not-lazy - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L333 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L334 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L336 Use lazy % or .format() or % formatting in odoo._ functions * translation-positional-used - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L360 Translation 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/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L363 Translation 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/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L366 Translation method _('Variables not translatable: %s, %s' % (variable1, variable2)) is using positional string printf formatting. Use named placeholder `_("%(placeholder)s")` instead. * translation-required - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L310 String parameter on "message_post" requires translation. Use body=_('Body not translatable %s') - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L310 String parameter on "message_post" requires translation. Use subject=_('Subject not translatable') - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L312 String parameter on "message_post" requires translation. Use body=_('Body not translatable {}') * translation-too-few-args - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L463 Not enough arguments for odoo._ format string * translation-too-many-args - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L468 Too many arguments for odoo._ format string * translation-unsupported-format - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L466 Unsupported odoo._ format character 'y' (0x79) at index 30 * use-vim-comment - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L108 Use of vim comment * website-manifest-key-not-valid-uri - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L7 Website "htt://odoo-community.com" in manifest key is not a valid URI [//]: # (end-example) # 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 %package help Summary: Development documents and examples for pylint-odoo Provides: python3-pylint-odoo-doc %description help attribute-deprecated | attribute "%s" deprecated | W8105 attribute-string-redundant | The attribute string is redundant. String parameter equal to name of variable | W8113 bad-builtin-groupby | Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376 | W8155 consider-merging-classes-inherited | Consider merging classes inherited to "%s" from %s. | R8180 context-overridden | Context overridden using dict. Better using kwargs `with_context(**%s)` or `with_context(key=value)` | W8121 development-status-allowed | Manifest key development_status "%s" not allowed. Use one of: %s. | C8111 except-pass | pass into block except. If you really need to use the pass consider logging that exception | W8138 external-request-timeout | Use of external request method `%s` without timeout. It could wait for a long time | E8106 invalid-commit | Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction | E8102 license-allowed | License "%s" not allowed in manifest file. | C8105 manifest-author-string | The author key in the manifest file must be a string (with comma separated values) | E8101 manifest-data-duplicated | The file "%s" is duplicated in lines %s from manifest key "%s" | W8125 manifest-deprecated-key | Deprecated key "%s" in manifest file | C8103 manifest-maintainers-list | The maintainers key in the manifest file must be a list of strings | E8104 manifest-required-author | One of the following authors must be present in manifest: %s | C8101 manifest-required-key | Missing required key "%s" in manifest file | C8102 manifest-version-format | Wrong Version Format "%s" in manifest file. Regex to match: "%s" | C8106 method-compute | Name of compute method should start with "_compute_" | C8108 method-inverse | Name of inverse method should start with "_inverse_" | C8110 method-required-super | Missing `super` call in "%s" method. | W8106 method-search | Name of search method should start with "_search_" | C8109 missing-readme | Missing ./README.rst file. Template here: %s | C8112 missing-return | Missing `return` (`super` is used) in method %s. | W8110 no-wizard-in-models | No wizard class for model directory. See the complete structure https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#complete-structure | C8113 no-write-in-compute | Compute method calling `write`. Use `update` instead. | E8135 odoo-addons-relative-import | Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.%s" | W8150 odoo-exception-warning | `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` | R8101 print-used | Print used. Use `logger` instead. | W8116 renamed-field-parameter | Field parameter "%s" is no longer supported. Use "%s" instead. | W8111 resource-not-exist | File "%s": "%s" not found. | F8101 sql-injection | SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection | E8103 test-folder-imported | Test folder imported in module %s | E8130 translation-contains-variable | Translatable term in "%s" contains variables. Use %s instead | W8115 translation-field | Translation method _("string") in fields is not necessary. | W8103 translation-format-interpolation | Use %s formatting in odoo._ functions | W8302 translation-format-truncated | Logging format string ends in middle of conversion specifier | E8301 translation-fstring-interpolation | Use %s formatting in odoo._ functions | W8303 translation-not-lazy | Use %s formatting in odoo._ functions | W8301 translation-positional-used | Translation method _(%s) is using positional string printf formatting. Use named placeholder `_("%%(placeholder)s")` instead. | W8120 translation-required | String parameter on "%s" requires translation. Use %s_(%s) | C8107 translation-too-few-args | Not enough arguments for odoo._ format string | E8306 translation-too-many-args | Too many arguments for odoo._ format string | E8305 translation-unsupported-format | Unsupported odoo._ format character %r (%#02x) at index %d | E8300 use-vim-comment | Use of vim comment | W8202 website-manifest-key-not-valid-uri | Website "%s" in manifest key is not a valid URI | W8114 [//]: # (end-checks) # 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 ```yaml - repo: https://github.com/OCA/pylint-odoo rev: v8.0.19 hooks: # Add to your .pylintrc file: # [MASTER] # load-plugins=pylint_odoo - id: pylint ``` # 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 [//]: # (start-example) # Examples * attribute-deprecated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L93 attribute "_columns" deprecated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L94 attribute "_defaults" deprecated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L95 attribute "length" deprecated * attribute-string-redundant - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L149 The attribute string is redundant. String parameter equal to name of variable - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L197 The attribute string is redundant. String parameter equal to name of variable - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L207 The attribute string is redundant. String parameter equal to name of variable * bad-builtin-groupby - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L98 Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376 - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L99 Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376 * consider-merging-classes-inherited - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/model_inhe2.py#L11 Consider 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/v8.0.19/testing/resources/test_repo/broken_module/models/model_inhe2.py#L19 Consider merging classes inherited to "res.partner" from testing/resources/test_repo/broken_module/models/model_inhe2.py:15:4. * context-overridden - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L180 Context overridden using dict. Better using kwargs `with_context(**{'overwrite_context': True})` or `with_context(key=value)` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L182 Context overridden using dict. Better using kwargs `with_context(**ctx)` or `with_context(key=value)` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L184 Context overridden using dict. Better using kwargs `with_context(**ctx2)` or `with_context(key=value)` * development-status-allowed - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__openerp__.py#L6 Manifest key development_status "InvalidDevStatus" not allowed. Use one of: Alpha, Beta, Mature, Production/Stable. * except-pass - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L11 pass into block except. If you really need to use the pass consider logging that exception - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L53 pass into block except. If you really need to use the pass consider logging that exception - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L62 pass into block except. If you really need to use the pass consider logging that exception * external-request-timeout - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L673 Use of external request method `requests.delete` without timeout. It could wait for a long time - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L674 Use of external request method `requests.get` without timeout. It could wait for a long time - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L675 Use of external request method `requests.head` without timeout. It could wait for a long time * invalid-commit - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L392 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L393 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L394 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction * license-allowed - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__openerp__.py#L4 License "unknow license" not allowed in manifest file. * manifest-author-string - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L5 The author key in the manifest file must be a string (with comma separated values) * manifest-data-duplicated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L18 The file "duplicated.xml" is duplicated in lines 19 from manifest key "data" * manifest-deprecated-key - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L7 Deprecated key "description" in manifest file * manifest-maintainers-list - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L6 The maintainers key in the manifest file must be a list of strings * manifest-required-author - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L5 One of the following authors must be present in manifest: 'Odoo Community Association (OCA)' * manifest-required-key - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L2 Missing required key "license" in manifest file * manifest-version-format - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L8 Wrong 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)\.\d+\.\d+\.\d+$" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__openerp__.py#L8 Wrong 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)\.\d+\.\d+\.\d+$" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L8 Wrong 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)\.\d+\.\d+\.\d+$" * method-compute - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L143 Name of compute method should start with "_compute_" * method-inverse - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L145 Name of inverse method should start with "_inverse_" * method-required-super - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L40 Missing `super` call in "copy" method. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L44 Missing `super` call in "create" method. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L48 Missing `super` call in "write" method. * method-search - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L144 Name of search method should start with "_search_" * missing-readme - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L2 Missing ./README.rst file. Template here: https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst * missing-return - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L24 Missing `return` (`super` is used) in method inherited_method. * no-wizard-in-models - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L812 No wizard class for model directory. See the complete structure https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#complete-structure * no-write-in-compute - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L102 Compute method calling `write`. Use `update` instead. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L104 Compute method calling `write`. Use `update` instead. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L107 Compute method calling `write`. Use `update` instead. * odoo-addons-relative-import - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L49 Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L50 Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module" - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L51 Same Odoo module absolute import. You should use relative import with "." instead of "odoo.addons.broken_module" * odoo-exception-warning - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L10 `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L11 `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L8 `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` * print-used - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/test_module/except_pass.py#L20 Print used. Use `logger` instead. * renamed-field-parameter - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L197 Field parameter "digits_compute" is no longer supported. Use "digits" instead. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L197 Field parameter "select" is no longer supported. Use "index" instead. * resource-not-exist - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L14 File "data": "file_no_exist.xml" not found. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L18 File "data": "duplicated.xml" not found. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__openerp__.py#L23 File "demo": "file_no_exist.xml" not found. * sql-injection - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L559 SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L561 SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L563 SQL injection risk. Use parameters if you can. - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#no-sql-injection * test-folder-imported - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/__init__.py#L5 Test folder imported in module broken_module - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module2/__init__.py#L3 Test folder imported in module broken_module2 - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/eleven_module/__init__.py#L3 Test folder imported in module eleven_module * translation-contains-variable - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L359 Translatable term in "'Variable not translatable: %s' % variable1" contains variables. Use _('Variable not translatable: %s') % variable1 instead - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L360 Translatable term in "'Variables not translatable: %s, %s' % (variable1, variable2)" contains variables. Use _('Variables not translatable: %s, %s') % (variable1, variable2) instead - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L362 Translatable term in "'Variable not translatable: %s' % variable1" contains variables. Use _('Variable not translatable: %s') % variable1 instead * translation-field - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L131 Translation method _("string") in fields is not necessary. - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L141 Translation method _("string") in fields is not necessary. * translation-format-interpolation - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L368 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L369 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L456 Use lazy % or .format() or % formatting in odoo._ functions * translation-format-truncated - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L467 Logging format string ends in middle of conversion specifier * translation-fstring-interpolation - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L465 Use lazy % or .format() or % formatting in odoo._ functions * translation-not-lazy - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L333 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L334 Use lazy % or .format() or % formatting in odoo._ functions - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L336 Use lazy % or .format() or % formatting in odoo._ functions * translation-positional-used - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L360 Translation 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/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L363 Translation 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/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L366 Translation method _('Variables not translatable: %s, %s' % (variable1, variable2)) is using positional string printf formatting. Use named placeholder `_("%(placeholder)s")` instead. * translation-required - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L310 String parameter on "message_post" requires translation. Use body=_('Body not translatable %s') - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L310 String parameter on "message_post" requires translation. Use subject=_('Subject not translatable') - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L312 String parameter on "message_post" requires translation. Use body=_('Body not translatable {}') * translation-too-few-args - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L463 Not enough arguments for odoo._ format string * translation-too-many-args - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L468 Too many arguments for odoo._ format string * translation-unsupported-format - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/models/broken_model.py#L466 Unsupported odoo._ format character 'y' (0x79) at index 30 * use-vim-comment - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L108 Use of vim comment * website-manifest-key-not-valid-uri - https://github.com/OCA/pylint-odoo/blob/v8.0.19/testing/resources/test_repo/broken_module3/__openerp__.py#L7 Website "htt://odoo-community.com" in manifest key is not a valid URI [//]: # (end-example) # 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 %prep %autosetup -n pylint-odoo-8.0.19 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-pylint-odoo -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Sun Apr 23 2023 Python_Bot - 8.0.19-1 - Package Spec generated