Skip to main content

odoo-pre-commit-hooks to use in pre-commit-config.yml files

Project description

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


OCA's custom pre-commit hooks for Odoo modules


You don't need to install it directly only configure your ".pre-commit-config.yaml" file

You even can install it directly:

Usage pre-commit-config.yaml

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

    - repo:
        rev: v0.0.5
        - id: oca-checks-odoo-module

Usage using directly the entry points

If you install directly the package use the entry point:

oca-checks-odoo-module --help


  • 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 po_requires_module Translation entry requires comment '#. module: MODULE'

  • Check po_python_parse_printf Check if 'msgid' is using 'str' variables like '%s' So translation 'msgstr' must be the same number of variables too

  • Check po_python_parse_format Check if 'msgid' is using 'str' variables like '{}' So translation 'msgstr' 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

  • 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_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_duplicate_record_id

      If a module has duplicated record_id AKA xml_ids
          <record id="xmlid_name1"
          <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


This repository is licensed under AGPL-3.0.

However, each module can have a totally different license, as long as they adhere to Odoo Community Association (OCA) policy. Consult each module's file, which contains a license key that explains its license.

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.



  • Bump version: 0.0.4 → 0.0.5
  • [REF] oca_pre_commit_hooks: Small improvements (#7)


  • 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)


  • Bump version: 0.0.2 → 0.0.3
  • [REF] README: Remove deprecated CI build


  • 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


  • [ADD] Migrate pylint-odoo checks (not related to python) to pre-commit hooks (#2)
  • Initialize

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oca-odoo-pre-commit-hooks-0.0.5.tar.gz (26.2 kB view hashes)

Uploaded Source

Built Distribution

oca_odoo_pre_commit_hooks-0.0.5-py3-none-any.whl (28.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page