{"id":13734593,"url":"https://github.com/OCA/pylint-odoo","last_synced_at":"2025-05-08T10:32:14.199Z","repository":{"id":38849667,"uuid":"43686408","full_name":"OCA/pylint-odoo","owner":"OCA","description":"Odoo plugin for Pylint","archived":false,"fork":false,"pushed_at":"2024-10-07T17:02:17.000Z","size":797,"stargazers_count":143,"open_issues_count":3,"forks_count":168,"subscribers_count":34,"default_branch":"main","last_synced_at":"2024-11-13T02:13:42.028Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://www.pylint.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OCA.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"OCA"}},"created_at":"2015-10-05T13:38:58.000Z","updated_at":"2024-10-10T21:16:15.000Z","dependencies_parsed_at":"2024-01-12T02:42:54.980Z","dependency_job_id":"ec1c1ba7-e212-4ce5-9148-f1bd5a2cdd28","html_url":"https://github.com/OCA/pylint-odoo","commit_stats":{"total_commits":329,"total_committers":36,"mean_commits":9.13888888888889,"dds":"0.30395136778115506","last_synced_commit":"c1335a0db590efd0390941effade29227d6b00d8"},"previous_names":[],"tags_count":91,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OCA%2Fpylint-odoo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OCA%2Fpylint-odoo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OCA%2Fpylint-odoo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OCA%2Fpylint-odoo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OCA","download_url":"https://codeload.github.com/OCA/pylint-odoo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224721007,"owners_count":17358491,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T03:00:57.795Z","updated_at":"2025-05-08T10:32:14.187Z","avatar_url":"https://github.com/OCA.png","language":"Python","funding_links":["https://github.com/sponsors/OCA"],"categories":["Python","Linters","Tools"],"sub_categories":[],"readme":"[//]: # (start-badges)\n\n[![Build Status](https://github.com/OCA/pylint-odoo/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/OCA/pylint-odoo/actions/workflows/test.yml?query=branch%3Amain)\n[![codecov](https://codecov.io/gh/OCA/pylint-odoo/branch/main/graph/badge.svg)](https://codecov.io/gh/OCA/pylint-odoo)\n[![code-style-black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n[![version](https://img.shields.io/pypi/v/pylint-odoo.svg)](https://pypi.org/project/pylint-odoo)\n[![pypi-downloads-monthly](https://img.shields.io/pypi/dm/pylint-odoo.svg?style=flat)](https://pypi.python.org/pypi/pylint-odoo)\n[![supported-versions](https://img.shields.io/pypi/pyversions/pylint-odoo.svg)](https://pypi.org/project/pylint-odoo)\n[![wheel](https://img.shields.io/pypi/wheel/pylint-odoo.svg)](https://pypi.org/project/pylint-odoo)\n[![commits-since](https://img.shields.io/github/commits-since/OCA/pylint-odoo/v9.3.3.svg)](https://github.com/OCA/pylint-odoo/compare/v9.3.3...main)\n\n[//]: # (end-badges)\n\n\n# Pylint Odoo plugin\n\nEnable custom checks for Odoo modules.\n\n[//]: # (start-checks)\n\nShort Name | Description | Code\n--- | --- | ---\nattribute-deprecated | attribute \"%s\" deprecated | W8105\nattribute-string-redundant | The attribute string is redundant. String parameter equal to name of variable | W8113\nbad-builtin-groupby | Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376 | W8155\ncategory-allowed | Category \"%s\" not allowed in manifest file. | C8114\nconsider-merging-classes-inherited | Consider merging classes inherited to \"%s\" from %s. | R8180\ncontext-overridden | Context overridden using dict. Better using kwargs `with_context(**%s)` or `with_context(key=value)` | W8121\ndeprecated-name-get | 'name_get' is deprecated. Use '_compute_display_name' instead. More info at https://github.com/odoo/odoo/pull/122085. | E8146\ndeprecated-odoo-model-method | %s has been deprecated by Odoo. Please look for alternatives. | W8160\ndevelopment-status-allowed | Manifest key development_status \"%s\" not allowed. Use one of: %s. | C8111\nexcept-pass | pass into block except. If you really need to use the pass consider logging that exception | W8138\nexternal-request-timeout | Use of external request method `%s` without timeout. It could wait for a long time | E8106\ninvalid-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\nlicense-allowed | License \"%s\" not allowed in manifest file. | C8105\nmanifest-author-string | The author key in the manifest file must be a string (with comma separated values) | E8101\nmanifest-behind-migrations | Manifest version (%s) is lower than migration scripts (%s) | E8145\nmanifest-data-duplicated | The file \"%s\" is duplicated in lines %s from manifest key \"%s\" | W8125\nmanifest-deprecated-key | Deprecated key \"%s\" in manifest file | C8103\nmanifest-external-assets | Asset %s should be distributed with module's source code. More info at https://httptoolkit.com/blog/public-cdn-risks/ | W8162\nmanifest-maintainers-list | The maintainers key in the manifest file must be a list of strings | E8104\nmanifest-required-author | One of the following authors must be present in manifest: %s | C8101\nmanifest-required-key | Missing required key \"%s\" in manifest file | C8102\nmanifest-version-format | Wrong Version Format \"%s\" in manifest file. Regex to match: \"%s\" | C8106\nmethod-compute | Name of compute method should start with \"_compute_\" | C8108\nmethod-inverse | Name of inverse method should start with \"_inverse_\" | C8110\nmethod-required-super | Missing `super` call in \"%s\" method. | W8106\nmethod-search | Name of search method should start with \"_search_\" | C8109\nmissing-readme | Missing ./README.rst file. Template here: %s | C8112\nmissing-return | Missing `return` (`super` is used) in method %s. | W8110\nno-raise-unlink | No exceptions should be raised inside unlink() functions | E8140\nno-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\nno-write-in-compute | Compute method calling `write`. Use `update` instead. | E8135\nodoo-addons-relative-import | Same Odoo module absolute import. You should use relative import with \".\" instead of \"odoo.addons.%s\" | W8150\nodoo-exception-warning | `odoo.exceptions.Warning` is a deprecated alias to `odoo.exceptions.UserError` use `from odoo.exceptions import UserError` | R8101\nprefer-env-translation | Better using self.env._ More info at https://github.com/odoo/odoo/pull/174844 | W8161\nprint-used | Print used. Use `logger` instead. | W8116\nprohibited-method-override | Prohibited override of \"%s\" method. | W8107\nrenamed-field-parameter | Field parameter \"%s\" is no longer supported. Use \"%s\" instead. | W8111\nresource-not-exist | File \"%s\": \"%s\" not found. | F8101\nsql-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\ntest-folder-imported | Test folder imported in module %s | E8130\ntranslation-contains-variable | Translatable term in \"%s\" contains variables. Use %s instead | W8115\ntranslation-field | Translation method _(\"string\") in fields is not necessary. | W8103\ntranslation-format-interpolation | Use %s formatting in odoo._ functions | W8302\ntranslation-format-truncated | Logging format string ends in middle of conversion specifier | E8301\ntranslation-fstring-interpolation | Use %s formatting in odoo._ functions | W8303\ntranslation-not-lazy | Use %s formatting in odoo._ functions | W8301\ntranslation-positional-used | Translation method _(%s) is using positional string printf formatting with multiple arguments. Use named placeholder `_(\"%%(placeholder)s\")` instead. | W8120\ntranslation-required | String parameter on \"%s\" requires translation. Use %s_(%s) | C8107\ntranslation-too-few-args | Not enough arguments for odoo._ format string | E8306\ntranslation-too-many-args | Too many arguments for odoo._ format string | E8305\ntranslation-unsupported-format | Unsupported odoo._ format character %r (%#02x) at index %d | E8300\nuse-vim-comment | Use of vim comment | W8202\nwebsite-manifest-key-not-valid-uri | Website \"%s\" in manifest key is not a valid URI. %s | W8114\n\n\n[//]: # (end-checks)\n\n\n# Install\n\nYou do not need to install manually if you use pre-commit-config\n\nBut if you even need to install it\n\n    pip install pylint-odoo\n\n# Usage pre-commit-config.yaml\n\nAdd to your \".pre-commit-config.yaml\" configuration file the following input\n\n\n```yaml\n    - repo: https://github.com/OCA/pylint-odoo\n        rev: v9.3.3 # may be a tag or commit hash\n        hooks:\n        # Add to your .pylintrc file:\n        # [MASTER]\n        # load-plugins=pylint_odoo\n        - id: pylint_odoo\n```\n\n# Usage\n\n    pylint --load-plugins=pylint_odoo -e odoolint path/to/test\n\nor use configuration file you can generate the OCA one using the following template repository:\n\n    https://github.com/OCA/oca-addons-repo-template\n\nThen running\n\n    pylint --rcfile=.pylintrc path/to/test\n\n\nExample to test only pylint_odoo checks:\n\n    pylint --load-plugins=pylint_odoo -d all -e odoolint {ADDONS-PATH}/*\n\nThere are checks only valid for a particular Odoo version\nTo know what version of odoo are you running pylint needs the parameter\n\n    pylint --load-plugins=pylint_odoo --valid-odoo-versions={YOUR_ODOO_VERSION}\n\nwith particular odoo version e.g. `\"16.0\"`\n\nCheck valid only for odoo \u003e= 18.0\n\n   prefer-env-translation\n\nChecks valid only for odoo \u003e= 14.0\n\n    translation-format-interpolation\n    translation-format-truncated\n    translation-fstring-interpolation\n    translation-not-lazy\n    translation-too-few-args\n    translation-too-many-args\n    translation-unsupported-format\n\nChecks valid only for odoo \u003c= 13.0\n\n    translation-contains-variable\n\n\n[//]: # (start-example)\n\n# Examples\n\n\n * attribute-deprecated\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L108 attribute \"_columns\" deprecated\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L109 attribute \"_defaults\" deprecated\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L110 attribute \"length\" deprecated\n\n * attribute-string-redundant\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L164 The attribute string is redundant. String parameter equal to name of variable\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L212 The attribute string is redundant. String parameter equal to name of variable\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L222 The attribute string is redundant. String parameter equal to name of variable\n\n * bad-builtin-groupby\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L113 Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L114 Used builtin function `itertools.groupby`. Prefer `odoo.tools.groupby` instead. More info about https://github.com/odoo/odoo/issues/105376\n\n * consider-merging-classes-inherited\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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.\n\n * context-overridden\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L195 Context overridden using dict. Better using kwargs `with_context(**{'overwrite_context': True})` or `with_context(key=value)`\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L197 Context overridden using dict. Better using kwargs `with_context(**ctx)` or `with_context(key=value)`\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L199 Context overridden using dict. Better using kwargs `with_context(**ctx2)` or `with_context(key=value)`\n\n * deprecated-name-get\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/twelve_module/models.py#L7 'name_get' is deprecated. Use '_compute_display_name' instead. More info at https://github.com/odoo/odoo/pull/122085.\n\n * deprecated-odoo-model-method\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L94 fields_view_get has been deprecated by Odoo. Please look for alternatives.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/eleven_module/models.py#L17 fields_view_get has been deprecated by Odoo. Please look for alternatives.\n\n * development-status-allowed\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module2/__openerp__.py#L6 Manifest key development_status \"InvalidDevStatus\" not allowed. Use one of: Alpha, Beta, Mature, Production/Stable.\n\n * except-pass\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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\n\n * external-request-timeout\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L1001 Use of external request method `odoo.addons.iap.models.iap.jsonrpc` without timeout. It could wait for a long time\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L1002 Use of external request method `odoo.addons.iap.models.iap.jsonrpc` without timeout. It could wait for a long time\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L1003 Use of external request method `odoo.addons.iap.models.iap.jsonrpc` without timeout. It could wait for a long time\n\n * invalid-commit\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L540 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L541 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L542 Use of cr.commit() directly - More info https://github.com/OCA/odoo-community.org/blob/master/website/Contribution/CONTRIBUTING.rst#never-commit-the-transaction\n\n * license-allowed\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module2/__openerp__.py#L4 License \"unknow license\" not allowed in manifest file.\n\n * manifest-author-string\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module3/__openerp__.py#L5 The author key in the manifest file must be a string (with comma separated values)\n\n * manifest-behind-migrations\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module2/__openerp__.py#L2 Manifest version (1.0) is lower than migration scripts (2.0)\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/eleven_module/__manifest__.py#L1 Manifest version (11.0.1.0.0) is lower than migration scripts (11.0.1.0.1)\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/test_module/__openerp__.py#L2 Manifest version (10.0.1.0.0) is lower than migration scripts (11.0.1.0.0)\n\n * manifest-data-duplicated\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/__openerp__.py#L18 The file \"duplicated.xml\" is duplicated in lines 19 from manifest key \"data\"\n\n * manifest-deprecated-key\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/__openerp__.py#L7 Deprecated key \"description\" in manifest file\n\n * manifest-external-assets\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/twelve_module/__manifest__.py#L15 Asset https://shady.cdn.com/somefile.js should be distributed with module's source code. More info at https://httptoolkit.com/blog/public-cdn-risks/\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/twelve_module/__manifest__.py#L19 Asset https://bad.idea.com/cool.css should be distributed with module's source code. More info at https://httptoolkit.com/blog/public-cdn-risks/\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/twelve_module/__manifest__.py#L20 Asset http://insecure.and.bad.idea.com/kiwi.js should be distributed with module's source code. More info at https://httptoolkit.com/blog/public-cdn-risks/\n\n * manifest-maintainers-list\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module3/__openerp__.py#L6 The maintainers key in the manifest file must be a list of strings\n\n * manifest-required-author\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/__openerp__.py#L5 One of the following authors must be present in manifest: 'Odoo Community Association (OCA)'\n\n * manifest-required-key\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/__openerp__.py#L2 Missing required key \"license\" in manifest file\n\n * manifest-version-format\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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|17\\.0|18\\.0)\\.\\d+\\.\\d+\\.\\d+$\"\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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|17\\.0|18\\.0)\\.\\d+\\.\\d+\\.\\d+$\"\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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|17\\.0|18\\.0)\\.\\d+\\.\\d+\\.\\d+$\"\n\n * method-compute\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L158 Name of compute method should start with \"_compute_\"\n\n * method-inverse\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L160 Name of inverse method should start with \"_inverse_\"\n\n * method-required-super\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L40 Missing `super` call in \"copy\" method.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L44 Missing `super` call in \"create\" method.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L48 Missing `super` call in \"write\" method.\n\n * method-search\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L159 Name of search method should start with \"_search_\"\n\n * missing-readme\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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\n\n * missing-return\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L24 Missing `return` (`super` is used) in method inherited_method.\n\n * no-raise-unlink\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/test_module/res_partner_unlink.py#L9 No exceptions should be raised inside unlink() functions\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/test_module/sale_order_unlink.py#L14 No exceptions should be raised inside unlink() functions\n\n * no-wizard-in-models\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L1024 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\n\n * no-write-in-compute\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L117 Compute method calling `write`. Use `update` instead.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L119 Compute method calling `write`. Use `update` instead.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L122 Compute method calling `write`. Use `update` instead.\n\n * odoo-addons-relative-import\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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\"\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L52 Same Odoo module absolute import. You should use relative import with \".\" instead of \"odoo.addons.broken_module\"\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L53 Same Odoo module absolute import. You should use relative import with \".\" instead of \"odoo.addons.broken_module\"\n\n * odoo-exception-warning\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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`\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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`\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/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`\n\n * prefer-env-translation\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L146 Better using self.env._ More info at https://github.com/odoo/odoo/pull/174844\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L156 Better using self.env._ More info at https://github.com/odoo/odoo/pull/174844\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L322 Better using self.env._ More info at https://github.com/odoo/odoo/pull/174844\n\n * print-used\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/test_module/except_pass.py#L20 Print used. Use `logger` instead.\n\n * renamed-field-parameter\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L212 Field parameter \"digits_compute\" is no longer supported. Use \"digits\" instead.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L212 Field parameter \"select\" is no longer supported. Use \"index\" instead.\n\n * resource-not-exist\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/__openerp__.py#L14 File \"data\": \"file_no_exist.xml\" not found.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/__openerp__.py#L18 File \"data\": \"duplicated.xml\" not found.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/__openerp__.py#L23 File \"demo\": \"file_no_exist.xml\" not found.\n\n * sql-injection\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L771 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\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L773 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\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L775 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\n\n * test-folder-imported\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/__init__.py#L5 Test folder imported in module broken_module\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module2/__init__.py#L3 Test folder imported in module broken_module2\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/eleven_module/__init__.py#L3 Test folder imported in module eleven_module\n\n * translation-contains-variable\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L374 Translatable term in \"'Variable not translatable: %s' % variable1\" contains variables. Use _('Variable not translatable: %s') % variable1 instead\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L375 Translatable term in \"'Variables not translatable: %s, %s' % (variable1, variable2)\" contains variables. Use _('Variables not translatable: %s, %s') % (variable1, variable2) instead\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L377 Translatable term in \"'Variable not translatable: %s' % variable1\" contains variables. Use _('Variable not translatable: %s') % variable1 instead\n\n * translation-field\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L146 Translation method _(\"string\") in fields is not necessary.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L156 Translation method _(\"string\") in fields is not necessary.\n\n * translation-format-interpolation\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L383 Use lazy % or .format() or % formatting in odoo._ functions\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L384 Use lazy % or .format() or % formatting in odoo._ functions\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L447 Use lazy % or .format() or % formatting in odoo._ functions\n\n * translation-format-truncated\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L649 Logging format string ends in middle of conversion specifier\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L664 Logging format string ends in middle of conversion specifier\n\n * translation-fstring-interpolation\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L647 Use lazy % or .format() or % formatting in odoo._ functions\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L662 Use lazy % or .format() or % formatting in odoo._ functions\n\n * translation-not-lazy\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L348 Use lazy % or .format() or % formatting in odoo._ functions\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L349 Use lazy % or .format() or % formatting in odoo._ functions\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L351 Use lazy % or .format() or % formatting in odoo._ functions\n\n * translation-positional-used\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L375 Translation method _('Variables not translatable: %s, %s' % (variable1, variable2)) is using positional string printf formatting with multiple arguments. Use named placeholder `_(\"%(placeholder)s\")` instead.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L378 Translation method _('Variables not translatable: %s %s' % (variable1, variable2)) is using positional string printf formatting with multiple arguments. Use named placeholder `_(\"%(placeholder)s\")` instead.\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L381 Translation method _('Variables not translatable: %s, %s' % (variable1, variable2)) is using positional string printf formatting with multiple arguments. Use named placeholder `_(\"%(placeholder)s\")` instead.\n\n * translation-required\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L325 String parameter on \"message_post\" requires translation. Use body=_('Body not translatable %s')\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L325 String parameter on \"message_post\" requires translation. Use subject=_('Subject not translatable')\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L327 String parameter on \"message_post\" requires translation. Use body=_('Body not translatable {}')\n\n * translation-too-few-args\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L645 Not enough arguments for odoo._ format string\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L660 Not enough arguments for odoo._ format string\n\n * translation-too-many-args\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L650 Too many arguments for odoo._ format string\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L665 Too many arguments for odoo._ format string\n\n * translation-unsupported-format\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L648 Unsupported odoo._ format character 'y' (0x79) at index 30\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/models/broken_model.py#L663 Unsupported odoo._ format character 'y' (0x79) at index 30\n\n * use-vim-comment\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module/pylint_oca_broken.py#L108 Use of vim comment\n\n * website-manifest-key-not-valid-uri\n\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module2/__openerp__.py#L7 Website \"https://odoo-community.org,https://odoo.com\" in manifest key is not a valid URI. Domain 'odoo-community.org,https:' contains invalid characters\n    - https://github.com/OCA/pylint-odoo/blob/v9.3.3/testing/resources/test_repo/broken_module3/__openerp__.py#L7 Website \"htt://odoo-community.com\" in manifest key is not a valid URI. URL needs to start with 'http[s]://'\n\n[//]: # (end-example)\n\n# Development\n\nTo run all the tests run:\n\n    tox\n\nUse extra parameters to change the test behaviour\n\ne.g. particular python version\n\n    tox -e py310\n\ne.g. particular unittest method\n\n    tox -e py310 -- -k test_20_expected_errors\n\ne.g. all the tests at the same time in parallel\n\n    tox -p auto\n\n## Licenses\n\nThis repository is licensed under [AGPL-3.0](LICENSE).\n\n----\nOCA, or the [Odoo Community Association](http://odoo-community.org/), is a nonprofit\norganization whose mission is to support the collaborative development of Odoo features\nand promote its widespread use.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOCA%2Fpylint-odoo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FOCA%2Fpylint-odoo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FOCA%2Fpylint-odoo/lists"}