odoo-pre-commit-hooks to use in pre-commit-config.yml files
Project description
odoo-pre-commit-hooks
OCA's custom pre-commit hooks for Odoo modules
Installation
You don't need to install it directly only configure your ".pre-commit-config.yaml" file
You even can install it directly:
-
Installing from pypi:
pip install -U odoo-pre-commit-hooks
-
Installing from github:
pip install --force-reinstall -U git+https://github.com/OCA/odoo-pre-commit-hooks.git@main
Usage pre-commit-config.yaml
Add to your ".pre-commit-config.yaml" configuration file the following input
- repo: https://github.com/OCA/odoo-pre-commit-hooks
rev: v0.0.10
hooks:
- id: oca-checks-odoo-module
- id: oca-checks-po
Usage directly the entry points
If you install directly the package use the entry point:
oca-checks-odoo-module --help
oca-checks-po --help
Checks
-
Check manifest-syntax-error Check if the manifest file has syntax error
-
Check missing-readme Check if a README file is missing
-
Check csv-duplicate-record-id duplicate CSV "id" AKA xmlid but for CSV files
-
Check csv-syntax-error Check syntax error for CSV files declared in the manifest
-
Check xml-dangerous-qweb-replace-low-priority Dangerous qweb view defined with low priority
-
Check xml-deprecated-data-node Deprecated node inside xml node
-
Check xml-deprecated-openerp-xml-node deprecated xml node
-
Check xml-deprecated-qweb-directive for use of deprecated QWeb directives t-*-options
-
Check xml-not-valid-char-link The resource in in src/href contains a not valid character.
-
Check xml-redundant-module-name
If the module is called "module_a" and the xmlid is `<record id="module_a.xmlid_name1" ...` The "module_a." is redundant it could be replaced to only `<record id="xmlid_name1" ...`
-
Check xml-dangerous-filter-wo-user Check dangerous filter without a user assigned.
-
Check xml-create-user-wo-reset-password records of user without
context="{'no_reset_password': True}"
This context avoid send email and mail log warning -
Check xml-view-dangerous-replace-low-priority in ir.ui.view
<field name="priority" eval="10"/> ... <field name="name" position="replace"/>
-
Check xml-deprecated-tree-attribute The tree-view declaration is using a deprecated attribute.
-
Check xml-duplicate-record-id
If a module has duplicated record_id AKA xml_ids file1.xml <record id="xmlid_name1" file2.xml <record id="xmlid_name1"
-
Check xml-duplicate-fields in all record nodes <record id="xmlid_name1"... <field name="field_name1"... <field name="field_name1"...
-
Check xml-syntax-error Check syntax of XML files declared in the Odoo manifest
Checks PO
-
Check po-requires-module Translation entry requires comment
#. module: MODULE
-
Check po-python-parse-printf Check if
msgid
is usingstr
variables like%s
So translationmsgstr
must be the same number of variables too -
Check po-python-parse-format Check if
msgid
is usingstr
variables like{}
So translationmsgstr
must be the same number of variables too -
Check po-duplicate-message-definition (message-id) in all entries of PO files
We are not using `check_for_duplicates` parameter of polib.pofile method e.g. `polib.pofile(..., check_for_duplicates=True)` Because the output is: `raise ValueError('Entry "%s" already exists' % entry.msgid)` It doesn't show the number of lines duplicated and it shows the entire string of the message_id without truncating it or replacing newlines
-
Check po-syntax-error Check syntax of PO files from i18n* folders
Help
usage: oca-checks-odoo-module [-h] [--no-verbose] [--no-exit]
[--disable DISABLE] [--enable ENABLE]
[files_or_modules ...]
positional arguments:
files_or_modules Odoo __manifest__.py paths or Odoo module paths.
options:
-h, --help show this help message and exit
--no-verbose If enabled so disable verbose mode.
--no-exit If enabled so it will not call exit.
--disable DISABLE, -d DISABLE
Disable the checker with the given 'check-name',
separated by commas.
--enable ENABLE, -e ENABLE
Enable the checker with the given 'check-name',
separated by commas. Default: All checks are enabled
by default
Help PO
usage: oca-checks-po [-h] [--no-verbose] [--no-exit] [--disable DISABLE]
[--enable ENABLE]
[po_files ...]
positional arguments:
po_files PO files.
options:
-h, --help show this help message and exit
--no-verbose If enabled so disable verbose mode.
--no-exit If enabled so it will not call exit.
--disable DISABLE, -d DISABLE
Disable the checker with the given 'check-name',
separated by commas.
--enable ENABLE, -e ENABLE
Enable the checker with the given 'check-name',
separated by commas. Default: All checks are enabled
by default
Examples
-
csv-duplicate-record-id
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/ir.model.access.csv#L5 Duplicate CSV record id "data/access_account_account_type" in test_repo/broken_module/ir.model.access.csv:6
-
csv-syntax-error
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/syntax_err_module/ir.model.access.csv#L1 'utf-8' codec can't decode byte 0xf1 in position 47: invalid continuation byte
-
manifest-syntax-error
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/manifest_werror/__manifest__.py#L1 could not be loaded manifest malformed
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/woinit_module/__manifest__.py#L1 could not be loaded
-
missing-readme
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/README.rst#L1 missed file. Template here: https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/syntax_err_module/README.rst#L1 missed file. Template here: https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst
-
xml-create-user-wo-reset-password
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/test_module/res_users.xml#L10 record res.users without
context="{'no_reset_password': True}"
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/test_module/res_users.xml#L10 record res.users without
-
xml-dangerous-filter-wo-user
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo.xml#L60 Dangerous filter without explicit
user_id
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo.xml#L60 Dangerous filter without explicit
-
xml-dangerous-qweb-replace-low-priority
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/template1.xml#L18 Dangerous use of "replace" from view with priority
0 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/template1.xml#L4 Dangerous use of "replace" from view with priority
0 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/template1.xml#L7 Dangerous use of "replace" from view with priority
0 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/template1.xml#L18 Dangerous use of "replace" from view with priority
-
xml-deprecated-data-node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/demo/duplicated_id_demo.xml#L2 Use
<odoo>
instead of<odoo><data>
or use<odoo noupdate="1">
instead of<odoo><data noupdate="1">
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view.xml#L2 Use
<odoo>
instead of<odoo><data>
or use<odoo noupdate="1">
instead of<odoo><data noupdate="1">
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L2 Use
<odoo>
instead of<odoo><data>
or use<odoo noupdate="1">
instead of<odoo><data noupdate="1">
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo.xml#L2 Use
<odoo>
instead of<odoo><data>
or use<odoo noupdate="1">
instead of<odoo><data noupdate="1">
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo2.xml#L2 Use
<odoo>
instead of<odoo><data>
or use<odoo noupdate="1">
instead of<odoo><data noupdate="1">
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/skip_xml_check.xml#L3 Use
<odoo>
instead of<odoo><data>
or use<odoo noupdate="1">
instead of<odoo><data noupdate="1">
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/skip_xml_check_3.xml#L4 Use
<odoo>
instead of<odoo><data>
or use<odoo noupdate="1">
instead of<odoo><data noupdate="1">
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/test_module/model_view.xml#L2 Use
<odoo>
instead of<odoo><data>
or use<odoo noupdate="1">
instead of<odoo><data noupdate="1">
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/demo/duplicated_id_demo.xml#L2 Use
-
xml-deprecated-openerp-xml-node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view.xml#L2 Deprecated xml node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L2 Deprecated xml node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/skip_xml_check_2.xml#L2 Deprecated xml node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/test_module/model_view.xml#L2 Deprecated xml node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/test_module/res_users.xml#L2 Deprecated xml node
-
xml-deprecated-qweb-directive
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/test_module/website_templates.xml#L14 Deprecated QWeb directive
"t-field-options"
. Use"t-options"
instead - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/test_module/website_templates.xml#L7 Deprecated QWeb directive
"t-esc-options"
. Use"t-options"
instead
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/test_module/website_templates.xml#L14 Deprecated QWeb directive
-
xml-deprecated-tree-attribute
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo.xml#L31 Deprecated "<tree string=..."
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo.xml#L42 Deprecated "<tree colors=..."
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo.xml#L53 Deprecated "<tree fonts=..."
-
xml-duplicate-fields
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo2.xml#L132 Duplicate xml field "name" in lines 133
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo2.xml#L138 Duplicate xml field "name" in lines 139
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo2.xml#L41 Duplicate xml field "key_config" in lines 42
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo2.xml#L6 Duplicate xml field "name" in lines 13
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo2.xml#L73 Duplicate xml field "arch" in lines 76
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo2.xml#L79 Duplicate xml field "user_id" in lines 81
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo2.xml#L80 Duplicate xml field "name" in lines 83
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo2.xml#L90 Duplicate xml field "date" in lines 93
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view_odoo2.xml#L91 Duplicate xml field "min_date" in lines 94
-
xml-duplicate-record-id
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view.xml#L5 Duplicate xml record id "data/view_model_form_noupdate_0" in test_repo/broken_module/model_view_odoo.xml:5, test_repo/broken_module/model_view_odoo2.xml:5
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L103 Duplicate xml record id "data/view_model_form80_noupdate_0" in test_repo/broken_module/skip_xml_check.xml:5, test_repo/broken_module/skip_xml_check.xml:9, test_repo/broken_module/skip_xml_check_3.xml:6, test_repo/broken_module/skip_xml_check_3.xml:10
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L5 Duplicate xml record id "data/view_model_form2_noupdate_0" in test_repo/broken_module/model_view_odoo2.xml:17
-
xml-not-valid-char-link
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/test_module/website_templates.xml#L21 The resource in in src/href contains a not valid character
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/test_module/website_templates.xml#L23 The resource in in src/href contains a not valid character
-
xml-redundant-module-name
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L15 Redundant module name
<record id="broken_module.view_model_form2"
better using only<record id="view_model_form2"
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L15 Redundant module name
-
xml-syntax-error
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/file_no_exist.xml#L1 [Errno 2] No such file or directory: ''
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/file_no_exist.xml#L1 [Errno 2] No such file or directory: ''
-
xml-view-dangerous-replace-low-priority
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L108 Dangerous use of "replace" from view with priority 10 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L25 Dangerous use of "replace" from view with priority 0 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L37 Dangerous use of "replace" from view with priority 0 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L47 Dangerous use of "replace" from view with priority 0 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L70 Dangerous use of "replace" from view with priority 10 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/model_view2.xml#L92 Dangerous use of "replace" from view with priority 10 < 99
Examples PO
-
po-duplicate-message-definition
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/i18n/es.po#L17 Duplicate PO message definition "Branch" in lines 23, 29
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/i18n/es.po#L35 Duplicate PO message definition "Message id toooooooooooooooooooooooooooo..." in lines 41
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/i18n/es.po#L65 Duplicate PO message definition "One variable {variable1}" in lines 71
-
po-python-parse-format
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/i18n/es.po#L53 Translation string couldn't be parsed correctly using str.format IndexError('Replacement index 1 out of range for positional args tuple')
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/i18n/es.po#L59 Translation string couldn't be parsed correctly using str.format IndexError('Replacement index 1 out of range for positional args tuple')
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/i18n/es.po#L65 Translation string couldn't be parsed correctly using str.format KeyError('variable2')
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/i18n/es.po#L71 Translation string couldn't be parsed correctly using str.format KeyError('variable2')
-
po-python-parse-printf
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/i18n/es.po#L47 Translation string couldn't be parsed correctly using str%variables TypeError('not all arguments converted during string formatting')
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/i18n/es.po#L83 Translation string couldn't be parsed correctly using str%variables TypeError('%d format: a real number is required, not str')
-
po-requires-module
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/i18n/broken_module.pot#L14 Translation entry requires comment
#. module: MODULE
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module/i18n/broken_module.pot#L14 Translation entry requires comment
-
po-syntax-error
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/broken_module2/i18n/en.po#L1 Syntax error in po file (line 1)
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.10/test_repo/syntax_err_module/i18n/es.po#L1 Syntax error in po file (line 19)
Licenses
This repository is licensed under AGPL-3.0.
OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use.
CHANGES
v0.0.10
- Bump version: 0.0.9 → 0.0.10
- [REF] README: Update README and fix mutable results auto-generating it (#22)
- [REF] checks_odoo_module_po: Run on modified PO files only (#21)
- [REF] manifest: Skip duplicated data files (#20)
v0.0.9
- Bump version: 0.0.8 → 0.0.9
- [FIX] README: Fix regex to replace autogenerated content (#18)
- [REF] README: Detect from CI if README needs to be updated (#17)
v0.0.8
- Bump version: 0.0.7 → 0.0.8
- [REF] README: Add examples of checks section and script to auto-generate it (#16)
- [REF] README: Add help section and script to auto-generate it (#15)
v0.0.7
- Bump version: 0.0.6 → 0.0.7
- [REF] checks: name_checks changed to name-checks (#14)
- [REF] oca_pre_commit_hooks: Use shorter path in messages (#13)
- [FIX] pre-commit-hooks.yaml: Run checks even if the manifest was not changed
- [REF] test: Remove TODO comments already fixed
v0.0.6
- Bump version: 0.0.5 → 0.0.6
- [FIX] oca_pre_commit_hooks: Fix checks if it has syntax error (#8)
v0.0.5
- Bump version: 0.0.4 → 0.0.5
- [REF] oca_pre_commit_hooks: Small improvements (#7)
v0.0.4
- Bump version: 0.0.3 → 0.0.4
- [IMP] oca_pre_commit_hooks: Enable feature to 'enable' checks (#6)
- [IMP] oca_pre_commit_hooks: Add entrypoint arguments to disable checks (#5)
v0.0.3
- Bump version: 0.0.2 → 0.0.3
- [REF] README: Remove deprecated CI build
v0.0.2
- Bump version: 0.0.1 → 0.0.2
- [REF] CI: Re-use tox to run pre-commit in the CI with same caches and packages
- [ADD] .pre-commit-hooks.yaml: Compatible with pre-commit-hooks to use as hook id directly
v0.0.1
- [ADD] Migrate pylint-odoo checks (not related to python) to pre-commit hooks (#2)
- Initialize
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for oca-odoo-pre-commit-hooks-0.0.10.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | efcc8f2c3333a7ea19428a5bb0a1eee70813b206bc8d485658404add4c374c55 |
|
MD5 | 435d3604d2cee267f5f58ad3ad84af67 |
|
BLAKE2b-256 | ad8cab958fbc4973602bd429023dac7436a55671c8209428038d32b68ed9340b |
Hashes for oca_odoo_pre_commit_hooks-0.0.10-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5039d854be5f877a78657ad1dc52daaa64d1d6b9bdcc2b74e961113e87637676 |
|
MD5 | 2dc741363c250d35f56038122c192af1 |
|
BLAKE2b-256 | 06fb743305264270d2856f6362127f1b2bcd8fb4465ec9c0269b33ee7baf248d |