oca-odoo-pre-commit-hooks


Nameoca-odoo-pre-commit-hooks JSON
Version 0.0.31 PyPI version JSON
download
home_pagehttps://github.com/OCA/odoo-pre-commit-hooks
Summaryodoo-pre-commit-hooks to use in pre-commit-config.yml files
upload_time2024-03-28 00:07:10
maintainerNone
docs_urlNone
authorOdoo Community Association (OCA)
requires_python>=3.7
licenseLGPL-3.0-or-later
keywords pre-commit oca odoo community association pre-commit-hook
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            [//]: # (start-badges)

[![Build Status](https://github.com/OCA/odoo-pre-commit-hooks/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/OCA/odoo-pre-commit-hooks/actions/workflows/test.yml?query=branch%3Amain)
[![codecov](https://codecov.io/gh/OCA/odoo-pre-commit-hooks/branch/main/graph/badge.svg)](https://codecov.io/gh/OCA/odoo-pre-commit-hooks)
[![version](https://img.shields.io/pypi/v/oca-odoo-pre-commit-hooks.svg)](https://pypi.org/project/oca-odoo-pre-commit-hooks)
[![wheel](https://img.shields.io/pypi/wheel/oca-odoo-pre-commit-hooks.svg)](https://pypi.org/project/oca-odoo-pre-commit-hooks)
[![supported-versions](https://img.shields.io/pypi/pyversions/oca-odoo-pre-commit-hooks.svg)](https://pypi.org/project/oca-odoo-pre-commit-hooks)
[![commits-since](https://img.shields.io/github/commits-since/OCA/odoo-pre-commit-hooks/v0.0.31.svg)](https://github.com/OCA/odoo-pre-commit-hooks/compare/v0.0.31...main)
[![code-style-black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)

[//]: # (end-badges)

# 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 oca-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


```yaml
    - repo: https://github.com/OCA/odoo-pre-commit-hooks
        rev: v0.0.31
        hooks:
        - id: oca-checks-odoo-module
        - id: oca-checks-po
          args: ["--fix"]
```

# Usage directly the entry points

If you install directly the package use the entry point:

    oca-checks-odoo-module --help
    oca-checks-po --help


# Skip one xml-check for only one file

If you need to skip one check in one particular XML file you can use the follow comment

```xml
<?xml version="1.0" encoding="utf-8"?>
<!-- oca-hooks:disable=xml-check-to-skip -->
<odoo>
...
</odoo>
```

```xml
<?xml version="1.0" encoding="utf-8"?>
<!-- oca-hooks:disable=xml-check-to-skip,
                       xml-check-to-skip2 -->
<odoo>
...
</odoo>
```

The position of the comment it is not relative to the line that throw the check

It disable the entire file

# Configuration
Behavior can be configured through several methods and as of now only consists of enabling/disabling checks.

## Enabling or Disabling Checks
Each available hook consists of multiple checks which can be enabled/disabled using any of the following methods (ordered by priority):

1. As an argument e.g., `oca-checks-odoo --enable=check-to-enable --disable=check-to-disable1,check-to-disable2`
2. Using environment variables `OCA_HOOKS_ENABLE` or `OCA_HOOKS_DISABLE` e.g., `export OCA_HOOKS_ENABLE=check1,check2`
3. A configuration file. The path to it can be specified with the argument `--config`. Alternatively a file named `.oca_hooks.cfg`
will be looked for (by default) in the following locations (in order):
   1. Current working directory
   2. Repo's root
   3. User's home

### Using a Configuration File
To enable or disable checks using a configuration file, add a `disable` or `enable` key under the `MESSAGES_CONTROL` section.
For example:
```
[MESSAGES_CONTROL]
enable=check-enable1,check-enable2
disable=check-to-disable
```

As stated before, each source has a certain priority. This means that if the environment variable `OCA_HOOKS_ENABLE=check1`
exists, the configuration file above would not have any effect when it comes to enabling checks, and the only enabled
check will be `check1`.

However, if `OCA_HOOKS_DISABLE` is not set, the configuration file will still have an effect and `check-to-disable` will
be disabled.

[//]: # (start-checks)

# Checks

* Check manifest-syntax-error
        Check if the manifest file has syntax error

* 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-deprecated-data-node
        Deprecated <data> node inside <odoo> xml node

* Check xml-deprecated-openerp-node
        deprecated <openerp> 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-oe-structure-missing-id

        Ensure all tags with class 'oe_structure' have an ID. For more information on the rationale, see:
        https://github.com/OCA/odoo-pre-commit-hooks/issues/27

* 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-record-missing-id
        Generated when a <record> tag has no id.

* 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

* Check xml-dangerous-qweb-replace-low-priority
        Dangerous qweb view defined with low priority

* Check xml-duplicate-template-id
        Triggered when two templates share the same ID

* Check xml-xpath-translatable-item check `xpath` nodes using `contains(text(), 'Text translatable')`
        Since that the text could be translated so it is a mutable value.
        It could raise `ValueError` exception if the language is changed.


[//]: # (end-checks)


[//]: # (start-checks-po)

# Checks PO

* 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

* Check po-duplicate-model-definition
        Verify that no entries share the same 'model:' tag

* Check po-pretty-format
        Check the following:
        1. Entries sorted alphabetically
        2. Lines are wrapped at 78 columns (same as Odoo)
        3. Clear msgstr when it is the same as msgid

* Check po-syntax-error
        Check syntax of PO files from i18n* folders


[//]: # (end-checks-po)


[//]: # (start-help)

# Help
```bash
usage: oca-checks-odoo-module [-h] [--no-verbose] [--no-exit] [--disable DISABLE] [--enable ENABLE] [--config CONFIG] [--list-msgs] [--fix] [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
 --config CONFIG, -c CONFIG Path to a configuration file (default: .oca_hooks.cfg)
 --list-msgs List all currently enabled messages.
 --fix Automatically fix files when possible

```

[//]: # (end-help)


[//]: # (start-help-po)

# Help PO
```bash
usage: oca-checks-po [-h] [--no-verbose] [--no-exit] [--disable DISABLE] [--enable ENABLE] [--config CONFIG] [--list-msgs] [--fix] [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
 --config CONFIG, -c CONFIG Path to a configuration file (default: .oca_hooks.cfg)
 --list-msgs List all currently enabled messages.
 --fix Automatically fix files when possible

```

[//]: # (end-help-po)


[//]: # (start-example)

# Examples


 * csv-duplicate-record-id

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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.31/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.31/test_repo/manifest_werror/__manifest__.py#L1 could not be loaded manifest malformed
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/woinit_module/__manifest__.py#L1 could not be loaded

 * xml-create-user-wo-reset-password

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/res_users.xml#L10 record res.users without `context="{'no_reset_password': True}"`

 * xml-dangerous-filter-wo-user

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo.xml#L60 Dangerous filter without explicit `user_id`

 * xml-dangerous-qweb-replace-low-priority

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L18 Dangerous use of "replace" from view with priority `0 < 99`. Only replace as a last resort. Try position="attributes", position="move" or t-if="False" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L4 Dangerous use of "replace" from view with priority `0 < 99`. Only replace as a last resort. Try position="attributes", position="move" or t-if="False" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L7 Dangerous use of "replace" from view with priority `0 < 99`. Only replace as a last resort. Try position="attributes", position="move" or t-if="False" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy.xml#L18 Dangerous use of "replace" from view with priority `0 < 99`. Only replace as a last resort. Try position="attributes", position="move" or t-if="False" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy.xml#L4 Dangerous use of "replace" from view with priority `0 < 99`. Only replace as a last resort. Try position="attributes", position="move" or t-if="False" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy.xml#L7 Dangerous use of "replace" from view with priority `0 < 99`. Only replace as a last resort. Try position="attributes", position="move" or t-if="False" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy2.xml#L18 Dangerous use of "replace" from view with priority `0 < 99`. Only replace as a last resort. Try position="attributes", position="move" or t-if="False" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy2.xml#L4 Dangerous use of "replace" from view with priority `0 < 99`. Only replace as a last resort. Try position="attributes", position="move" or t-if="False" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy2.xml#L7 Dangerous use of "replace" from view with priority `0 < 99`. Only replace as a last resort. Try position="attributes", position="move" or t-if="False" first

 * xml-deprecated-data-node

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/demo/duplicated_id_demo.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.31/test_repo/broken_module/model_view.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.31/test_repo/broken_module/model_view2.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.31/test_repo/broken_module/model_view_odoo.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.31/test_repo/broken_module/model_view_odoo2.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.31/test_repo/broken_module/skip_xml_check.xml#L5 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.31/test_repo/broken_module/skip_xml_check_2.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.31/test_repo/test_module/model_view.xml#L3 Use `<odoo>` instead of `<odoo><data>` or use `<odoo noupdate="1">` instead of `<odoo><data noupdate="1">`

 * xml-deprecated-openerp-node

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view.xml#L2 Deprecated <openerp> xml node
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L2 Deprecated <openerp> xml node
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/model_view.xml#L2 Deprecated <openerp> xml node
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/res_users.xml#L2 Deprecated <openerp> xml node

 * xml-deprecated-qweb-directive

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L20 Deprecated QWeb directive `"t-field-options"`. Use `"t-options"` instead
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L7 Deprecated QWeb directive `"t-esc-options"`. Use `"t-options"` instead

 * xml-deprecated-tree-attribute

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo.xml#L31 Deprecated "<tree string=..."
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo.xml#L42 Deprecated "<tree colors=..."
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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.31/test_repo/broken_module/model_view_odoo2.xml#L19 Duplicate xml field "model" in lines 20
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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.31/test_repo/broken_module/model_view_odoo2.xml#L74 Duplicate xml field "arch" in lines 77

 * xml-duplicate-record-id

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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.31/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-duplicate-template-id

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L10 Duplicate xml template id "qweb/my_template2_noupdate_0" in test_repo/broken_module/template1_copy2.xml:10
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L17 Duplicate xml template id "qweb/my_template3_noupdate_0" in test_repo/broken_module/template1_copy2.xml:17
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L21 Duplicate xml template id "qweb/my_template4_noupdate_0" in test_repo/broken_module/template1_copy2.xml:21
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L25 Duplicate xml template id "qweb/my_template5_noupdate_0" in test_repo/broken_module/template1_copy2.xml:25
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L29 Duplicate xml template id "qweb/my_duplicate_template_noupdate_0" in test_repo/broken_module/template1.xml:33
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L3 Duplicate xml template id "qweb/my_template1_noupdate_0" in test_repo/broken_module/template1_copy2.xml:3
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L18 Duplicate xml template id "data/test_template_2_noupdate_0" in test_repo/test_module/website_templates_disable.xml:14
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L36 Duplicate xml template id "data/assets_backend_noupdate_0" in test_repo/test_module/website_templates_disable.xml:24
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L5 Duplicate xml template id "data/test_template_1_noupdate_0" in test_repo/test_module/website_templates_disable.xml:7

 * xml-not-valid-char-link

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L39 The resource in in src/href contains a not valid character
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L41 The resource in in src/href contains a not valid character

 * xml-oe-structure-missing-id

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L13 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L24 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L27 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L30 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L9 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates_disable.xml#L21 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'

 * xml-record-missing-id

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view.xml#L21 Record has no id, add a unique one to create a new record, use an existing one to update it
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view.xml#L24 Record has no id, add a unique one to create a new record, use an existing one to update it

 * xml-redundant-module-name

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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"`

 * xml-syntax-error

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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.31/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.31/test_repo/broken_module/model_view2.xml#L108 Dangerous use of "replace" from view with priority 10 < 99. Only replace as a last resort. Try position="attributes", position="move" or invisible="1" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L25 Dangerous use of "replace" from view with priority 0 < 99. Only replace as a last resort. Try position="attributes", position="move" or invisible="1" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L37 Dangerous use of "replace" from view with priority 0 < 99. Only replace as a last resort. Try position="attributes", position="move" or invisible="1" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L47 Dangerous use of "replace" from view with priority 0 < 99. Only replace as a last resort. Try position="attributes", position="move" or invisible="1" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L70 Dangerous use of "replace" from view with priority 10 < 99. Only replace as a last resort. Try position="attributes", position="move" or invisible="1" first
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L92 Dangerous use of "replace" from view with priority 10 < 99. Only replace as a last resort. Try position="attributes", position="move" or invisible="1" first

 * xml-xpath-translatable-item

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view.xml#L11 Use of translatable xpath `text()`
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L39 Use of translatable xpath `text()`
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy.xml#L31 Use of translatable xpath `text()`
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy2.xml#L31 Use of translatable xpath `text()`

[//]: # (end-example)


[//]: # (start-example-po)

# Examples PO


 * po-duplicate-message-definition

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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.31/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.31/test_repo/broken_module/i18n/es.po#L65 Duplicate PO message definition "One variable {variable1}" in lines 71

 * po-duplicate-model-definition

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po#L17 Translation for model:ir.model.fields,field_description:broken_module.field_wizard_description has been defined more than once in line(s) 29
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po#L35 Translation for model:ir.model.fields,field_description2:broken_module.field_wizard_description2 has been defined more than once in line(s) 41
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po#L59 Translation for model:ir.model.fields,field_description5:broken_module.field_wizard_description5 has been defined more than once in line(s) 65
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/i18n/fr.po#L24 Translation for model:ir.model.fields,field_description2:test_module.field_description2 has been defined more than once in line(s) 24
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/i18n/fr.po#L31 Translation for model:ir.model.fields,field_description5:test_module.field_description5 has been defined more than once in line(s) 31
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/i18n/fr.po#L38 Translation for model:ir.model.fields,field_description3:test_module.field_description3 has been defined more than once in line(s) 38
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/i18n/fr.po#L45 Translation for model:ir.model.fields,field_description4:test_module.field_description4 has been defined more than once in line(s) 45

 * po-pretty-format

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/ar_unicode.po is not formatted correctly
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/broken_module.pot is not formatted correctly
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po is not formatted correctly
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/xml_semi_empty.po is not formatted correctly
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/eleven_module/i18n/ugly.po is not formatted correctly
    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/i18n/fr.po is not formatted correctly

 * po-python-parse-format

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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.31/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.31/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.31/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.31/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.31/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.31/test_repo/broken_module/i18n/broken_module.pot#L14 Translation entry requires comment `#. module: MODULE`

 * po-syntax-error

    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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.31/test_repo/syntax_err_module/i18n/es.po#L1 Syntax error in po file (line 19)

[//]: # (end-example-po)

## Licenses

This repository is licensed under [AGPL-3.0](LICENSE).

----
OCA, or the [Odoo Community Association](http://odoo-community.org/), is a nonprofit
organization whose mission is to support the collaborative development of Odoo features
and promote its widespread use.

CHANGES
=======

v0.0.31
-------

* [REF] setup: Add py3.12 support info (#98)
* [REF] .github: Update actions version, fix cache and update lints (#97)
* [REF] tests: Fixing windows po autofix unitest (#96)

v0.0.30
-------

* CI improvements (#93)
* [REF] setup: Enable py311 classifier (#87)

v0.0.29
-------

* IMP] add xml-duplicate-template-id message (#82)
* [FIX] lints (#86)
* [ADD] po-duplicate-model-definition check (#85)
* [REF] Don't filter out messages, move is\_message\_enabled (#83)
* [IMP] add xml-record-missing-id (#84)

v0.0.28
-------

* [FIX] oe-structure-missing-id: change constraints, add docs (#81)

v0.0.27
-------

* [REF] improve xpath expressions (#80)

v0.0.26
-------

* [IMP] Improve XPath expressions, compile them only once, fix false negative, add profiling tests (#79)
* [ADD] pretty-format-po check (#76)
* [IMP] add xml-oe-structure-missing-id check (#78)
* [REF] tests: Generate immutable readme (without extra spaces)
* [IMP] README: Added a section on configuration

v0.0.25
-------

* [REF] requirements.txt: Update polib to fix issues and improves (#72)

v0.0.24
-------

* [FIX] pre-commit: Fix isort hook - RuntimeError The Poetry configuration is invalid (#71)

v0.0.23
-------

* [FIX] Correct documentation (#69)

v0.0.22
-------

* [IMP] Help msg for "xml-view-dangerous-replace-low-priority" (#68)
* Wrote documentation for proposed refactoring (#66)
* [FIX] ci: update flake8 repo URL, tox.ini and gh actions .yml (#65)
* [REF] hooks: Add support for \`<!-- pylint:disable=CHECK -->\` (#62)

v0.0.21
-------

* [REF] duplicate-xml-fields: Only applies to direct record's children (#58)

v0.0.20
-------

* [FIX] xml-xpath-translatable-item: Fix false negative calling a method o.amount\_to\_text() (#57)

v0.0.19
-------

* [FIX] setup: Add missing "requirements.txt" file to package (#441) (#55)

v0.0.18
-------

* [FIX] checks\_odoo\_module: Support glob expression for "qweb" manifest data section (#54)
* [IMP] oca\_pre\_commit\_hooks: Add --list-msgs option (#53)
* [REF] oca\_pre\_commit\_hooks: Silent subprocess git error (#52)

v0.0.17
-------

* [IMP] oca\_pre\_commit\_hooks: Support enable/disable from ENV (#38) (#49)

v0.0.16
-------

* [ADD] xml-xpath-translatable-item: Add new check to identify mutable item used from xpath (#50)

v0.0.15
-------

* [FIX] oca\_pre\_commit\_hooks: Fix exit\_status false error (#48)

v0.0.14
-------

* [IMP] oca\_pre\_commit\_hooks: Support for config file (#41)

v0.0.13
-------

* [REF] pylint\_odoo: Remove TODO comments (#47)
* [REF] requirements: Remove unused libraries and pre-commit hooks (#45)
* [REF] xml-deprecated-data-node: Use the data node sourceline instead of odoo node (#43)
* [IMP] oca\_pre\_commit\_hooks: Support disable XML checks from disable comments (#42)
* [REF] README: Fix name of pypi package (#35)
* [REF] oca\_pre\_commit\_hooks: cli\_po, cli: Add cli\_po and cli global (#36)
* [REF] setup: Match requires-python = ">=3.7" from pre-commit
* [REF] CI: Enable py3.11

v0.0.12
-------

* [REF] checks\_odoo\_module\_xml: Allow duplicated fields with 'groups' (#32)
* [REF] CI: Enable tox with parallels + codecov compatibility (#33)

v0.0.11
-------

* [REF] codecov: Enable codecov again
* [REM] missing-readme: Check add to pylint-odoo
* [REF] TOX: Strip names, remove no-cover, compatible with parallels option (#24)
* [REF] lint: Adapt lints for py packages instead of odoo module (#23)

v0.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
------

* [FIX] README: Fix regex to replace autogenerated content (#18)
* [REF] README: Detect from CI if README needs to be updated (#17)

v0.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
------

* [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
------

* [FIX] oca\_pre\_commit\_hooks: Fix checks if it has syntax error (#8)

v0.0.5
------

* [REF] oca\_pre\_commit\_hooks: Small improvements (#7)

v0.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
------

* [REF] README: Remove deprecated CI build

v0.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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/OCA/odoo-pre-commit-hooks",
    "name": "oca-odoo-pre-commit-hooks",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "pre-commit, OCA, Odoo Community Association, pre-commit-hook",
    "author": "Odoo Community Association (OCA)",
    "author_email": "support@odoo-community.org",
    "download_url": "https://files.pythonhosted.org/packages/9b/1c/4936a1d43b0de5b8628f8ad65a115ace62a9fc9a5ebfdc3a6b559d4b2bb1/oca-odoo-pre-commit-hooks-0.0.31.tar.gz",
    "platform": null,
    "description": "[//]: # (start-badges)\n\n[![Build Status](https://github.com/OCA/odoo-pre-commit-hooks/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/OCA/odoo-pre-commit-hooks/actions/workflows/test.yml?query=branch%3Amain)\n[![codecov](https://codecov.io/gh/OCA/odoo-pre-commit-hooks/branch/main/graph/badge.svg)](https://codecov.io/gh/OCA/odoo-pre-commit-hooks)\n[![version](https://img.shields.io/pypi/v/oca-odoo-pre-commit-hooks.svg)](https://pypi.org/project/oca-odoo-pre-commit-hooks)\n[![wheel](https://img.shields.io/pypi/wheel/oca-odoo-pre-commit-hooks.svg)](https://pypi.org/project/oca-odoo-pre-commit-hooks)\n[![supported-versions](https://img.shields.io/pypi/pyversions/oca-odoo-pre-commit-hooks.svg)](https://pypi.org/project/oca-odoo-pre-commit-hooks)\n[![commits-since](https://img.shields.io/github/commits-since/OCA/odoo-pre-commit-hooks/v0.0.31.svg)](https://github.com/OCA/odoo-pre-commit-hooks/compare/v0.0.31...main)\n[![code-style-black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n[//]: # (end-badges)\n\n# odoo-pre-commit-hooks\n\nOCA's custom pre-commit hooks for Odoo modules\n\n\n# Installation\n\nYou don't need to install it directly only configure your \".pre-commit-config.yaml\" file\n\nYou even can install it directly:\n - Installing from pypi:\n   - `pip install -U oca-odoo-pre-commit-hooks`\n\n - Installing from github:\n   - `pip install --force-reinstall -U git+https://github.com/OCA/odoo-pre-commit-hooks.git@main`\n\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/odoo-pre-commit-hooks\n        rev: v0.0.31\n        hooks:\n        - id: oca-checks-odoo-module\n        - id: oca-checks-po\n          args: [\"--fix\"]\n```\n\n# Usage directly the entry points\n\nIf you install directly the package use the entry point:\n\n    oca-checks-odoo-module --help\n    oca-checks-po --help\n\n\n# Skip one xml-check for only one file\n\nIf you need to skip one check in one particular XML file you can use the follow comment\n\n```xml\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- oca-hooks:disable=xml-check-to-skip -->\n<odoo>\n...\n</odoo>\n```\n\n```xml\n<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- oca-hooks:disable=xml-check-to-skip,\n                       xml-check-to-skip2 -->\n<odoo>\n...\n</odoo>\n```\n\nThe position of the comment it is not relative to the line that throw the check\n\nIt disable the entire file\n\n# Configuration\nBehavior can be configured through several methods and as of now only consists of enabling/disabling checks.\n\n## Enabling or Disabling Checks\nEach available hook consists of multiple checks which can be enabled/disabled using any of the following methods (ordered by priority):\n\n1. As an argument e.g., `oca-checks-odoo --enable=check-to-enable --disable=check-to-disable1,check-to-disable2`\n2. Using environment variables `OCA_HOOKS_ENABLE` or `OCA_HOOKS_DISABLE` e.g., `export OCA_HOOKS_ENABLE=check1,check2`\n3. A configuration file. The path to it can be specified with the argument `--config`. Alternatively a file named `.oca_hooks.cfg`\nwill be looked for (by default) in the following locations (in order):\n   1. Current working directory\n   2. Repo's root\n   3. User's home\n\n### Using a Configuration File\nTo enable or disable checks using a configuration file, add a `disable` or `enable` key under the `MESSAGES_CONTROL` section.\nFor example:\n```\n[MESSAGES_CONTROL]\nenable=check-enable1,check-enable2\ndisable=check-to-disable\n```\n\nAs stated before, each source has a certain priority. This means that if the environment variable `OCA_HOOKS_ENABLE=check1`\nexists, the configuration file above would not have any effect when it comes to enabling checks, and the only enabled\ncheck will be `check1`.\n\nHowever, if `OCA_HOOKS_DISABLE` is not set, the configuration file will still have an effect and `check-to-disable` will\nbe disabled.\n\n[//]: # (start-checks)\n\n# Checks\n\n* Check manifest-syntax-error\n        Check if the manifest file has syntax error\n\n* Check csv-duplicate-record-id\n        duplicate CSV \"id\" AKA xmlid but for CSV files\n\n* Check csv-syntax-error\n        Check syntax error for CSV files declared in the manifest\n\n* Check xml-deprecated-data-node\n        Deprecated <data> node inside <odoo> xml node\n\n* Check xml-deprecated-openerp-node\n        deprecated <openerp> xml node\n\n* Check xml-deprecated-qweb-directive\n        for use of deprecated QWeb directives t-*-options\n\n* Check xml-not-valid-char-link\n        The resource in in src/href contains a not valid character.\n\n* Check xml-oe-structure-missing-id\n\n        Ensure all tags with class 'oe_structure' have an ID. For more information on the rationale, see:\n        https://github.com/OCA/odoo-pre-commit-hooks/issues/27\n\n* Check xml-redundant-module-name\n\n        If the module is called \"module_a\" and the xmlid is\n        `<record id=\"module_a.xmlid_name1\" ...`\n\n        The \"module_a.\" is redundant it could be replaced to only\n        `<record id=\"xmlid_name1\" ...`\n\n* Check xml-dangerous-filter-wo-user\n        Check dangerous filter without a user assigned.\n\n* Check xml-create-user-wo-reset-password\n        records of user without `context=\"{'no_reset_password': True}\"`\n        This context avoid send email and mail log warning\n\n* Check xml-view-dangerous-replace-low-priority in ir.ui.view\n\n            <field name=\"priority\" eval=\"10\"/>\n            ...\n                <field name=\"name\" position=\"replace\"/>\n\n* Check xml-deprecated-tree-attribute\n          The tree-view declaration is using a deprecated attribute.\n\n* Check xml-record-missing-id\n        Generated when a <record> tag has no id.\n\n* Check xml-duplicate-record-id\n\n        If a module has duplicated record_id AKA xml_ids\n        file1.xml\n            <record id=\"xmlid_name1\"\n        file2.xml\n            <record id=\"xmlid_name1\"\n\n* Check xml-duplicate-fields in all record nodes\n            <record id=\"xmlid_name1\"...\n                <field name=\"field_name1\"...\n                <field name=\"field_name1\"...\n\n* Check xml-syntax-error\n        Check syntax of XML files declared in the Odoo manifest\n\n* Check xml-dangerous-qweb-replace-low-priority\n        Dangerous qweb view defined with low priority\n\n* Check xml-duplicate-template-id\n        Triggered when two templates share the same ID\n\n* Check xml-xpath-translatable-item check `xpath` nodes using `contains(text(), 'Text translatable')`\n        Since that the text could be translated so it is a mutable value.\n        It could raise `ValueError` exception if the language is changed.\n\n\n[//]: # (end-checks)\n\n\n[//]: # (start-checks-po)\n\n# Checks PO\n\n* Check po-requires-module\n        Translation entry requires comment `#. module: MODULE`\n\n* Check po-python-parse-printf\n        Check if `msgid` is using `str` variables like `%s`\n        So translation `msgstr` must be the same number of variables too\n\n* Check po-python-parse-format\n        Check if `msgid` is using `str` variables like `{}`\n        So translation `msgstr` must be the same number of variables too\n\n* Check po-duplicate-message-definition (message-id)\n        in all entries of PO files\n\n* Check po-duplicate-model-definition\n        Verify that no entries share the same 'model:' tag\n\n* Check po-pretty-format\n        Check the following:\n        1. Entries sorted alphabetically\n        2. Lines are wrapped at 78 columns (same as Odoo)\n        3. Clear msgstr when it is the same as msgid\n\n* Check po-syntax-error\n        Check syntax of PO files from i18n* folders\n\n\n[//]: # (end-checks-po)\n\n\n[//]: # (start-help)\n\n# Help\n```bash\nusage: oca-checks-odoo-module [-h] [--no-verbose] [--no-exit] [--disable DISABLE] [--enable ENABLE] [--config CONFIG] [--list-msgs] [--fix] [files_or_modules ...]\n\npositional arguments:\n files_or_modules Odoo __manifest__.py paths or Odoo module paths.\n\noptions:\n -h, --help show this help message and exit\n --no-verbose If enabled so disable verbose mode.\n --no-exit If enabled so it will not call exit.\n --disable DISABLE, -d DISABLE Disable the checker with the given 'check-name', separated by commas.\n --enable ENABLE, -e ENABLE Enable the checker with the given 'check-name', separated by commas. Default: All checks are enabled by default\n --config CONFIG, -c CONFIG Path to a configuration file (default: .oca_hooks.cfg)\n --list-msgs List all currently enabled messages.\n --fix Automatically fix files when possible\n\n```\n\n[//]: # (end-help)\n\n\n[//]: # (start-help-po)\n\n# Help PO\n```bash\nusage: oca-checks-po [-h] [--no-verbose] [--no-exit] [--disable DISABLE] [--enable ENABLE] [--config CONFIG] [--list-msgs] [--fix] [po_files ...]\n\npositional arguments:\n po_files PO files.\n\noptions:\n -h, --help show this help message and exit\n --no-verbose If enabled so disable verbose mode.\n --no-exit If enabled so it will not call exit.\n --disable DISABLE, -d DISABLE Disable the checker with the given 'check-name', separated by commas.\n --enable ENABLE, -e ENABLE Enable the checker with the given 'check-name', separated by commas. Default: All checks are enabled by default\n --config CONFIG, -c CONFIG Path to a configuration file (default: .oca_hooks.cfg)\n --list-msgs List all currently enabled messages.\n --fix Automatically fix files when possible\n\n```\n\n[//]: # (end-help-po)\n\n\n[//]: # (start-example)\n\n# Examples\n\n\n * csv-duplicate-record-id\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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\n\n * csv-syntax-error\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/syntax_err_module/ir.model.access.csv#L1 'utf-8' codec can't decode byte 0xf1 in position 47: invalid continuation byte\n\n * manifest-syntax-error\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/manifest_werror/__manifest__.py#L1 could not be loaded manifest malformed\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/woinit_module/__manifest__.py#L1 could not be loaded\n\n * xml-create-user-wo-reset-password\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/res_users.xml#L10 record res.users without `context=\"{'no_reset_password': True}\"`\n\n * xml-dangerous-filter-wo-user\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo.xml#L60 Dangerous filter without explicit `user_id`\n\n * xml-dangerous-qweb-replace-low-priority\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L18 Dangerous use of \"replace\" from view with priority `0 < 99`. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or t-if=\"False\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L4 Dangerous use of \"replace\" from view with priority `0 < 99`. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or t-if=\"False\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L7 Dangerous use of \"replace\" from view with priority `0 < 99`. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or t-if=\"False\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy.xml#L18 Dangerous use of \"replace\" from view with priority `0 < 99`. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or t-if=\"False\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy.xml#L4 Dangerous use of \"replace\" from view with priority `0 < 99`. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or t-if=\"False\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy.xml#L7 Dangerous use of \"replace\" from view with priority `0 < 99`. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or t-if=\"False\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy2.xml#L18 Dangerous use of \"replace\" from view with priority `0 < 99`. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or t-if=\"False\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy2.xml#L4 Dangerous use of \"replace\" from view with priority `0 < 99`. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or t-if=\"False\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy2.xml#L7 Dangerous use of \"replace\" from view with priority `0 < 99`. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or t-if=\"False\" first\n\n * xml-deprecated-data-node\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/demo/duplicated_id_demo.xml#L3 Use `<odoo>` instead of `<odoo><data>` or use `<odoo noupdate=\"1\">` instead of `<odoo><data noupdate=\"1\">`\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view.xml#L3 Use `<odoo>` instead of `<odoo><data>` or use `<odoo noupdate=\"1\">` instead of `<odoo><data noupdate=\"1\">`\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L3 Use `<odoo>` instead of `<odoo><data>` or use `<odoo noupdate=\"1\">` instead of `<odoo><data noupdate=\"1\">`\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo.xml#L3 Use `<odoo>` instead of `<odoo><data>` or use `<odoo noupdate=\"1\">` instead of `<odoo><data noupdate=\"1\">`\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo2.xml#L3 Use `<odoo>` instead of `<odoo><data>` or use `<odoo noupdate=\"1\">` instead of `<odoo><data noupdate=\"1\">`\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/skip_xml_check.xml#L5 Use `<odoo>` instead of `<odoo><data>` or use `<odoo noupdate=\"1\">` instead of `<odoo><data noupdate=\"1\">`\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/skip_xml_check_2.xml#L3 Use `<odoo>` instead of `<odoo><data>` or use `<odoo noupdate=\"1\">` instead of `<odoo><data noupdate=\"1\">`\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/model_view.xml#L3 Use `<odoo>` instead of `<odoo><data>` or use `<odoo noupdate=\"1\">` instead of `<odoo><data noupdate=\"1\">`\n\n * xml-deprecated-openerp-node\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view.xml#L2 Deprecated <openerp> xml node\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L2 Deprecated <openerp> xml node\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/model_view.xml#L2 Deprecated <openerp> xml node\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/res_users.xml#L2 Deprecated <openerp> xml node\n\n * xml-deprecated-qweb-directive\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L20 Deprecated QWeb directive `\"t-field-options\"`. Use `\"t-options\"` instead\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L7 Deprecated QWeb directive `\"t-esc-options\"`. Use `\"t-options\"` instead\n\n * xml-deprecated-tree-attribute\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo.xml#L31 Deprecated \"<tree string=...\"\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo.xml#L42 Deprecated \"<tree colors=...\"\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo.xml#L53 Deprecated \"<tree fonts=...\"\n\n * xml-duplicate-fields\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo2.xml#L19 Duplicate xml field \"model\" in lines 20\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo2.xml#L6 Duplicate xml field \"name\" in lines 13\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view_odoo2.xml#L74 Duplicate xml field \"arch\" in lines 77\n\n * xml-duplicate-record-id\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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\n\n * xml-duplicate-template-id\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L10 Duplicate xml template id \"qweb/my_template2_noupdate_0\" in test_repo/broken_module/template1_copy2.xml:10\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L17 Duplicate xml template id \"qweb/my_template3_noupdate_0\" in test_repo/broken_module/template1_copy2.xml:17\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L21 Duplicate xml template id \"qweb/my_template4_noupdate_0\" in test_repo/broken_module/template1_copy2.xml:21\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L25 Duplicate xml template id \"qweb/my_template5_noupdate_0\" in test_repo/broken_module/template1_copy2.xml:25\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L29 Duplicate xml template id \"qweb/my_duplicate_template_noupdate_0\" in test_repo/broken_module/template1.xml:33\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L3 Duplicate xml template id \"qweb/my_template1_noupdate_0\" in test_repo/broken_module/template1_copy2.xml:3\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L18 Duplicate xml template id \"data/test_template_2_noupdate_0\" in test_repo/test_module/website_templates_disable.xml:14\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L36 Duplicate xml template id \"data/assets_backend_noupdate_0\" in test_repo/test_module/website_templates_disable.xml:24\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L5 Duplicate xml template id \"data/test_template_1_noupdate_0\" in test_repo/test_module/website_templates_disable.xml:7\n\n * xml-not-valid-char-link\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L39 The resource in in src/href contains a not valid character\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L41 The resource in in src/href contains a not valid character\n\n * xml-oe-structure-missing-id\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L13 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L24 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L27 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L30 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates.xml#L9 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/website_templates_disable.xml#L21 Consider removing the class 'oe_structure' or adding a proper id to the tag. The id must contain 'oe_structure'\n\n * xml-record-missing-id\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view.xml#L21 Record has no id, add a unique one to create a new record, use an existing one to update it\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view.xml#L24 Record has no id, add a unique one to create a new record, use an existing one to update it\n\n * xml-redundant-module-name\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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\"`\n\n * xml-syntax-error\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/file_no_exist.xml#L1 [Errno 2] No such file or directory: ''\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/file_no_exist.xml#L1 [Errno 2] No such file or directory: ''\n\n * xml-view-dangerous-replace-low-priority\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L108 Dangerous use of \"replace\" from view with priority 10 < 99. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or invisible=\"1\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L25 Dangerous use of \"replace\" from view with priority 0 < 99. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or invisible=\"1\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L37 Dangerous use of \"replace\" from view with priority 0 < 99. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or invisible=\"1\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L47 Dangerous use of \"replace\" from view with priority 0 < 99. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or invisible=\"1\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L70 Dangerous use of \"replace\" from view with priority 10 < 99. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or invisible=\"1\" first\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view2.xml#L92 Dangerous use of \"replace\" from view with priority 10 < 99. Only replace as a last resort. Try position=\"attributes\", position=\"move\" or invisible=\"1\" first\n\n * xml-xpath-translatable-item\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/model_view.xml#L11 Use of translatable xpath `text()`\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1.xml#L39 Use of translatable xpath `text()`\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy.xml#L31 Use of translatable xpath `text()`\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/template1_copy2.xml#L31 Use of translatable xpath `text()`\n\n[//]: # (end-example)\n\n\n[//]: # (start-example-po)\n\n# Examples PO\n\n\n * po-duplicate-message-definition\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po#L17 Duplicate PO message definition \"Branch\" in lines 23, 29\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po#L35 Duplicate PO message definition \"Message id toooooooooooooooooooooooooooo...\" in lines 41\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po#L65 Duplicate PO message definition \"One variable {variable1}\" in lines 71\n\n * po-duplicate-model-definition\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po#L17 Translation for model:ir.model.fields,field_description:broken_module.field_wizard_description has been defined more than once in line(s) 29\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po#L35 Translation for model:ir.model.fields,field_description2:broken_module.field_wizard_description2 has been defined more than once in line(s) 41\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po#L59 Translation for model:ir.model.fields,field_description5:broken_module.field_wizard_description5 has been defined more than once in line(s) 65\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/i18n/fr.po#L24 Translation for model:ir.model.fields,field_description2:test_module.field_description2 has been defined more than once in line(s) 24\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/i18n/fr.po#L31 Translation for model:ir.model.fields,field_description5:test_module.field_description5 has been defined more than once in line(s) 31\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/i18n/fr.po#L38 Translation for model:ir.model.fields,field_description3:test_module.field_description3 has been defined more than once in line(s) 38\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/i18n/fr.po#L45 Translation for model:ir.model.fields,field_description4:test_module.field_description4 has been defined more than once in line(s) 45\n\n * po-pretty-format\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/ar_unicode.po is not formatted correctly\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/broken_module.pot is not formatted correctly\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po is not formatted correctly\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/xml_semi_empty.po is not formatted correctly\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/eleven_module/i18n/ugly.po is not formatted correctly\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/test_module/i18n/fr.po is not formatted correctly\n\n * po-python-parse-format\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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')\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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')\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po#L65 Translation string couldn't be parsed correctly using str.format KeyError('variable2')\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/es.po#L71 Translation string couldn't be parsed correctly using str.format KeyError('variable2')\n\n * po-python-parse-printf\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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')\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/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')\n\n * po-requires-module\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module/i18n/broken_module.pot#L14 Translation entry requires comment `#. module: MODULE`\n\n * po-syntax-error\n\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/broken_module2/i18n/en.po#L1 Syntax error in po file (line 1)\n    - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.31/test_repo/syntax_err_module/i18n/es.po#L1 Syntax error in po file (line 19)\n\n[//]: # (end-example-po)\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\nCHANGES\n=======\n\nv0.0.31\n-------\n\n* [REF] setup: Add py3.12 support info (#98)\n* [REF] .github: Update actions version, fix cache and update lints (#97)\n* [REF] tests: Fixing windows po autofix unitest (#96)\n\nv0.0.30\n-------\n\n* CI improvements (#93)\n* [REF] setup: Enable py311 classifier (#87)\n\nv0.0.29\n-------\n\n* IMP] add xml-duplicate-template-id message (#82)\n* [FIX] lints (#86)\n* [ADD] po-duplicate-model-definition check (#85)\n* [REF] Don't filter out messages, move is\\_message\\_enabled (#83)\n* [IMP] add xml-record-missing-id (#84)\n\nv0.0.28\n-------\n\n* [FIX] oe-structure-missing-id: change constraints, add docs (#81)\n\nv0.0.27\n-------\n\n* [REF] improve xpath expressions (#80)\n\nv0.0.26\n-------\n\n* [IMP] Improve XPath expressions, compile them only once, fix false negative, add profiling tests (#79)\n* [ADD] pretty-format-po check (#76)\n* [IMP] add xml-oe-structure-missing-id check (#78)\n* [REF] tests: Generate immutable readme (without extra spaces)\n* [IMP] README: Added a section on configuration\n\nv0.0.25\n-------\n\n* [REF] requirements.txt: Update polib to fix issues and improves (#72)\n\nv0.0.24\n-------\n\n* [FIX] pre-commit: Fix isort hook - RuntimeError The Poetry configuration is invalid (#71)\n\nv0.0.23\n-------\n\n* [FIX] Correct documentation (#69)\n\nv0.0.22\n-------\n\n* [IMP] Help msg for \"xml-view-dangerous-replace-low-priority\" (#68)\n* Wrote documentation for proposed refactoring (#66)\n* [FIX] ci: update flake8 repo URL, tox.ini and gh actions .yml (#65)\n* [REF] hooks: Add support for \\`<!-- pylint:disable=CHECK -->\\` (#62)\n\nv0.0.21\n-------\n\n* [REF] duplicate-xml-fields: Only applies to direct record's children (#58)\n\nv0.0.20\n-------\n\n* [FIX] xml-xpath-translatable-item: Fix false negative calling a method o.amount\\_to\\_text() (#57)\n\nv0.0.19\n-------\n\n* [FIX] setup: Add missing \"requirements.txt\" file to package (#441) (#55)\n\nv0.0.18\n-------\n\n* [FIX] checks\\_odoo\\_module: Support glob expression for \"qweb\" manifest data section (#54)\n* [IMP] oca\\_pre\\_commit\\_hooks: Add --list-msgs option (#53)\n* [REF] oca\\_pre\\_commit\\_hooks: Silent subprocess git error (#52)\n\nv0.0.17\n-------\n\n* [IMP] oca\\_pre\\_commit\\_hooks: Support enable/disable from ENV (#38) (#49)\n\nv0.0.16\n-------\n\n* [ADD] xml-xpath-translatable-item: Add new check to identify mutable item used from xpath (#50)\n\nv0.0.15\n-------\n\n* [FIX] oca\\_pre\\_commit\\_hooks: Fix exit\\_status false error (#48)\n\nv0.0.14\n-------\n\n* [IMP] oca\\_pre\\_commit\\_hooks: Support for config file (#41)\n\nv0.0.13\n-------\n\n* [REF] pylint\\_odoo: Remove TODO comments (#47)\n* [REF] requirements: Remove unused libraries and pre-commit hooks (#45)\n* [REF] xml-deprecated-data-node: Use the data node sourceline instead of odoo node (#43)\n* [IMP] oca\\_pre\\_commit\\_hooks: Support disable XML checks from disable comments (#42)\n* [REF] README: Fix name of pypi package (#35)\n* [REF] oca\\_pre\\_commit\\_hooks: cli\\_po, cli: Add cli\\_po and cli global (#36)\n* [REF] setup: Match requires-python = \">=3.7\" from pre-commit\n* [REF] CI: Enable py3.11\n\nv0.0.12\n-------\n\n* [REF] checks\\_odoo\\_module\\_xml: Allow duplicated fields with 'groups' (#32)\n* [REF] CI: Enable tox with parallels + codecov compatibility (#33)\n\nv0.0.11\n-------\n\n* [REF] codecov: Enable codecov again\n* [REM]\u00a0missing-readme: Check add to pylint-odoo\n* [REF] TOX: Strip names, remove no-cover, compatible with parallels option (#24)\n* [REF] lint: Adapt lints for py packages instead of odoo module (#23)\n\nv0.0.10\n-------\n\n* [REF] README: Update README and fix mutable results auto-generating it (#22)\n* [REF] checks\\_odoo\\_module\\_po: Run on modified PO files only (#21)\n* [REF] manifest: Skip duplicated data files (#20)\n\nv0.0.9\n------\n\n* [FIX] README: Fix regex to replace autogenerated content (#18)\n* [REF] README: Detect from CI if README needs to be updated (#17)\n\nv0.0.8\n------\n\n* [REF] README: Add examples of checks section and script to auto-generate it (#16)\n* [REF] README: Add help section and script to auto-generate it (#15)\n\nv0.0.7\n------\n\n* [REF] checks: name\\_checks changed to name-checks (#14)\n* [REF] oca\\_pre\\_commit\\_hooks: Use shorter path in messages (#13)\n* [FIX] pre-commit-hooks.yaml: Run checks even if the manifest was not changed\n* [REF] test: Remove TODO comments already fixed\n\nv0.0.6\n------\n\n* [FIX] oca\\_pre\\_commit\\_hooks: Fix checks if it has syntax error (#8)\n\nv0.0.5\n------\n\n* [REF] oca\\_pre\\_commit\\_hooks: Small improvements (#7)\n\nv0.0.4\n------\n\n* [IMP]\u00a0oca\\_pre\\_commit\\_hooks: Enable feature to 'enable' checks (#6)\n* [IMP] oca\\_pre\\_commit\\_hooks: Add entrypoint arguments to disable checks (#5)\n\nv0.0.3\n------\n\n* [REF] README: Remove deprecated CI build\n\nv0.0.2\n------\n\n* [REF] CI: Re-use tox to run pre-commit in the CI with same caches and packages\n* [ADD] .pre-commit-hooks.yaml: Compatible with pre-commit-hooks to use as hook id directly\n\nv0.0.1\n------\n\n* [ADD] Migrate pylint-odoo checks (not related to python) to pre-commit hooks (#2)\n* Initialize\n",
    "bugtrack_url": null,
    "license": "LGPL-3.0-or-later",
    "summary": "odoo-pre-commit-hooks to use in pre-commit-config.yml files",
    "version": "0.0.31",
    "project_urls": {
        "Homepage": "https://github.com/OCA/odoo-pre-commit-hooks",
        "Issue Tracker": "https://github.com/OCA/odoo-pre-commit-hooks/issues"
    },
    "split_keywords": [
        "pre-commit",
        " oca",
        " odoo community association",
        " pre-commit-hook"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "95ca3babf9317493b43d9ddfbc53f6410ebb69a3548eaead5bf64e1a343beeeb",
                "md5": "3522b9c9dfa1a851f6de85b438113123",
                "sha256": "fb59937a95e1953afed4113787fccf67484d00cdc2ea335a0a933efe5f691768"
            },
            "downloads": -1,
            "filename": "oca_odoo_pre_commit_hooks-0.0.31-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3522b9c9dfa1a851f6de85b438113123",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 40638,
            "upload_time": "2024-03-28T00:07:08",
            "upload_time_iso_8601": "2024-03-28T00:07:08.125523Z",
            "url": "https://files.pythonhosted.org/packages/95/ca/3babf9317493b43d9ddfbc53f6410ebb69a3548eaead5bf64e1a343beeeb/oca_odoo_pre_commit_hooks-0.0.31-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9b1c4936a1d43b0de5b8628f8ad65a115ace62a9fc9a5ebfdc3a6b559d4b2bb1",
                "md5": "6af2e3f074028bca641d64b4defcc168",
                "sha256": "3f621c89a34075b5823cf92df339e47db3f4fb2bd3834c7e7e71b4dad4de1d7b"
            },
            "downloads": -1,
            "filename": "oca-odoo-pre-commit-hooks-0.0.31.tar.gz",
            "has_sig": false,
            "md5_digest": "6af2e3f074028bca641d64b4defcc168",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 51087,
            "upload_time": "2024-03-28T00:07:10",
            "upload_time_iso_8601": "2024-03-28T00:07:10.061241Z",
            "url": "https://files.pythonhosted.org/packages/9b/1c/4936a1d43b0de5b8628f8ad65a115ace62a9fc9a5ebfdc3a6b559d4b2bb1/oca-odoo-pre-commit-hooks-0.0.31.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-03-28 00:07:10",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "OCA",
    "github_project": "odoo-pre-commit-hooks",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [],
    "tox": true,
    "lcname": "oca-odoo-pre-commit-hooks"
}
        
Elapsed time: 0.22456s