[//]: # (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.34.svg)](https://github.com/OCA/odoo-pre-commit-hooks/compare/v0.0.34...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.34
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.34/test_repo/broken_module/ir.model.access.csv#L5 Duplicate CSV record `access_account_account_type`
* csv-syntax-error
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/test_repo/manifest_werror/__manifest__.py#L1 Manifest could not be loaded
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/woinit_module/__manifest__.py#L1 Manifest could not be loaded
* xml-create-user-wo-reset-password
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/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.34/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.34/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.34/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.34/test_repo/broken_module/template1_copy.xml#L4 Dangerous use of `replace` from view with priority 0 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy.xml#L7 Dangerous use of `replace` from view with priority 0 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy.xml#L18 Dangerous use of `replace` from view with priority 0 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy2.xml#L4 Dangerous use of `replace` from view with priority 0 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy2.xml#L7 Dangerous use of `replace` from view with priority 0 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy2.xml#L18 Dangerous use of `replace` from view with priority 0 < 99
* xml-deprecated-data-node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/demo/duplicated_id_demo.xml#L3 Deprecated `<data>` node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view.xml#L3 Deprecated `<data>` node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view2.xml#L3 Deprecated `<data>` node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo.xml#L3 Deprecated `<data>` node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo2.xml#L3 Deprecated `<data>` node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/skip_xml_check.xml#L5 Deprecated `<data>` node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/skip_xml_check_2.xml#L3 Deprecated `<data>` node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/model_view.xml#L3 Deprecated `<data>` node
* xml-deprecated-openerp-node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view.xml#L2 Deprecated `<openerp>` xml node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view2.xml#L2 Deprecated `<openerp>` xml node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/model_view.xml#L2 Deprecated `<openerp>` xml node
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/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.34/test_repo/test_module/website_templates.xml#L20 Deprecated QWeb directive `t-field-options`. Use `t-options` instead
* xml-deprecated-tree-attribute
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo.xml#L31 Deprecated "<tree string=..."
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo.xml#L42 Deprecated "<tree colors=..."
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/test_repo/broken_module/model_view_odoo2.xml#L6 Duplicate xml field `name`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo2.xml#L19 Duplicate xml field `model`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo2.xml#L74 Duplicate xml field `arch`
* xml-duplicate-record-id
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view.xml#L5 Duplicate xml record id `view_model_form`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view2.xml#L5 Duplicate xml record id `view_model_form2`
* xml-duplicate-template-id
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L3 Duplicate xml template id `qweb/my_template1_noupdate_0`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L10 Duplicate xml template id `qweb/my_template2_noupdate_0`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L17 Duplicate xml template id `qweb/my_template3_noupdate_0`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L21 Duplicate xml template id `qweb/my_template4_noupdate_0`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L25 Duplicate xml template id `qweb/my_template5_noupdate_0`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L29 Duplicate xml template id `qweb/my_duplicate_template_noupdate_0`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/website_templates.xml#L5 Duplicate xml template id `data/test_template_1_noupdate_0`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/website_templates.xml#L18 Duplicate xml template id `data/test_template_2_noupdate_0`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/website_templates.xml#L36 Duplicate xml template id `data/assets_backend_noupdate_0`
* xml-not-valid-char-link
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/test_repo/broken_module/model_view2.xml#L15 Redundant module name `<record id="broken_module.view_model_form2" />`
* xml-syntax-error
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/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.34/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.34/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.34/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.34/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.34/test_repo/broken_module/model_view2.xml#L92 Dangerous use of `replace` from view with priority 10 < 99
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/test_repo/broken_module/skip_xml_check_3.xml#L15 Dangerous use of `replace` from view with priority 0 < 99
* xml-xpath-translatable-item
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view.xml#L11 Use of translatable xpath `text()`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L39 Use of translatable xpath `text()`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy.xml#L31 Use of translatable xpath `text()`
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/test_repo/broken_module/i18n/ar_unicode.po Wrong formatting
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/i18n/broken_module.pot Wrong formatting
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/i18n/es.po Wrong formatting
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/xml_semi_empty.po Wrong formatting
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/eleven_module/i18n/ugly.po Wrong formatting
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/i18n/fr.po Wrong formatting
* po-python-parse-format
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/test_repo/broken_module2/i18n/en.po#L1 Syntax error in po file
- https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/syntax_err_module/i18n/es.po#L19 Syntax error in po file
[//]: # (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.34
-------
* [IMP] \*: Display the duplicated lines (#111)
* [REF] tox.ini: Add compatibility with new pyttest (#112)
* [IMP] csv-duplicate-record-id: show the actual record id
* [IMP] xml-duplicate-record-id: show the actual record id
v0.0.33
-------
* [IMP] check\_odoo\_module\_po: extract line number from error message (#108)
* [IMP] Better error output (#106)
v0.0.32
-------
* [FIX] unwanted execution of globally disabled checks (#105)
* [REF] github-actions: Use exclude macosx-latest for py old (#104)
* [REF] github-actions: Add arch in cache-key to use macosx m1 and intel compatibility (#103)
* [REF] setup: Add setuptools deps to build Related to https://github.com/pypa/build/issues/98
* [REF] github-actions: Use macosx-latest only for py-latest and macosx-14 for older Related to https://github.com/actions/setup-python/issues/825\#issuecomment-2096792396
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/99/15/e1723fbd5c3fdfeda5ded3e076104d5c1f3f7d395c0ad3a2c2133dc2444f/oca_odoo_pre_commit_hooks-0.0.34.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.34.svg)](https://github.com/OCA/odoo-pre-commit-hooks/compare/v0.0.34...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.34\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.34/test_repo/broken_module/ir.model.access.csv#L5 Duplicate CSV record `access_account_account_type`\n\n * csv-syntax-error\n\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/test_repo/manifest_werror/__manifest__.py#L1 Manifest could not be loaded\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/woinit_module/__manifest__.py#L1 Manifest 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.34/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.34/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.34/test_repo/broken_module/template1.xml#L4 Dangerous use of `replace` from view with priority 0 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L7 Dangerous use of `replace` from view with priority 0 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L18 Dangerous use of `replace` from view with priority 0 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy.xml#L4 Dangerous use of `replace` from view with priority 0 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy.xml#L7 Dangerous use of `replace` from view with priority 0 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy.xml#L18 Dangerous use of `replace` from view with priority 0 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy2.xml#L4 Dangerous use of `replace` from view with priority 0 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy2.xml#L7 Dangerous use of `replace` from view with priority 0 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1_copy2.xml#L18 Dangerous use of `replace` from view with priority 0 < 99\n\n * xml-deprecated-data-node\n\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/demo/duplicated_id_demo.xml#L3 Deprecated `<data>` node\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view.xml#L3 Deprecated `<data>` node\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view2.xml#L3 Deprecated `<data>` node\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo.xml#L3 Deprecated `<data>` node\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo2.xml#L3 Deprecated `<data>` node\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/skip_xml_check.xml#L5 Deprecated `<data>` node\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/skip_xml_check_2.xml#L3 Deprecated `<data>` node\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/model_view.xml#L3 Deprecated `<data>` node\n\n * xml-deprecated-openerp-node\n\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view.xml#L2 Deprecated `<openerp>` xml node\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view2.xml#L2 Deprecated `<openerp>` xml node\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/model_view.xml#L2 Deprecated `<openerp>` xml node\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/test_repo/test_module/website_templates.xml#L7 Deprecated QWeb directive `t-esc-options`. Use `t-options` instead\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/website_templates.xml#L20 Deprecated QWeb directive `t-field-options`. Use `t-options` instead\n\n * xml-deprecated-tree-attribute\n\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo.xml#L31 Deprecated \"<tree string=...\"\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo.xml#L42 Deprecated \"<tree colors=...\"\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/test_repo/broken_module/model_view_odoo2.xml#L6 Duplicate xml field `name`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo2.xml#L19 Duplicate xml field `model`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view_odoo2.xml#L74 Duplicate xml field `arch`\n\n * xml-duplicate-record-id\n\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view.xml#L5 Duplicate xml record id `view_model_form`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view2.xml#L5 Duplicate xml record id `view_model_form2`\n\n * xml-duplicate-template-id\n\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L3 Duplicate xml template id `qweb/my_template1_noupdate_0`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L10 Duplicate xml template id `qweb/my_template2_noupdate_0`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L17 Duplicate xml template id `qweb/my_template3_noupdate_0`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L21 Duplicate xml template id `qweb/my_template4_noupdate_0`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L25 Duplicate xml template id `qweb/my_template5_noupdate_0`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/template1.xml#L29 Duplicate xml template id `qweb/my_duplicate_template_noupdate_0`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/website_templates.xml#L5 Duplicate xml template id `data/test_template_1_noupdate_0`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/website_templates.xml#L18 Duplicate xml template id `data/test_template_2_noupdate_0`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/website_templates.xml#L36 Duplicate xml template id `data/assets_backend_noupdate_0`\n\n * xml-not-valid-char-link\n\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/test_repo/broken_module/model_view2.xml#L15 Redundant module name `<record id=\"broken_module.view_model_form2\" />`\n\n * xml-syntax-error\n\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/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.34/test_repo/broken_module/model_view2.xml#L25 Dangerous use of `replace` from view with priority 0 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view2.xml#L37 Dangerous use of `replace` from view with priority 0 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view2.xml#L47 Dangerous use of `replace` from view with priority 0 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view2.xml#L70 Dangerous use of `replace` from view with priority 10 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view2.xml#L92 Dangerous use of `replace` from view with priority 10 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/model_view2.xml#L108 Dangerous use of `replace` from view with priority 10 < 99\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/skip_xml_check_3.xml#L15 Dangerous use of `replace` from view with priority 0 < 99\n\n * xml-xpath-translatable-item\n\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/test_repo/broken_module/template1.xml#L39 Use of translatable xpath `text()`\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/test_repo/broken_module/i18n/ar_unicode.po Wrong formatting\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/i18n/broken_module.pot Wrong formatting\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/i18n/es.po Wrong formatting\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/broken_module/xml_semi_empty.po Wrong formatting\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/eleven_module/i18n/ugly.po Wrong formatting\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/test_module/i18n/fr.po Wrong formatting\n\n * po-python-parse-format\n\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/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.34/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.34/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.34/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.34/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.34/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.34/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.34/test_repo/broken_module2/i18n/en.po#L1 Syntax error in po file\n - https://github.com/OCA/odoo-pre-commit-hooks/blob/v0.0.34/test_repo/syntax_err_module/i18n/es.po#L19 Syntax error in po file\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.34\n-------\n\n* [IMP] \\*: Display the duplicated lines (#111)\n* [REF] tox.ini: Add compatibility with new pyttest (#112)\n* [IMP] csv-duplicate-record-id: show the actual record id\n* [IMP] xml-duplicate-record-id: show the actual record id\n\nv0.0.33\n-------\n\n* [IMP] check\\_odoo\\_module\\_po: extract line number from error message (#108)\n* [IMP] Better error output (#106)\n\nv0.0.32\n-------\n\n* [FIX] unwanted execution of globally disabled checks (#105)\n* [REF] github-actions: Use exclude macosx-latest for py old (#104)\n* [REF] github-actions: Add arch in cache-key to use macosx m1 and intel compatibility (#103)\n* [REF] setup: Add setuptools deps to build Related to https://github.com/pypa/build/issues/98\n* [REF] github-actions: Use macosx-latest only for py-latest and macosx-14 for older Related to https://github.com/actions/setup-python/issues/825\\#issuecomment-2096792396\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.34",
"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": "9655ecf2f4e613126ff4dbb08a6056c77efe3fd5e48c23996df2e51d3460fba5",
"md5": "6a2adbfb7b65281eaa6655f0fc727ca6",
"sha256": "19f4bc2db4cb351cf1689a611f94ac6d196da27ec4f89bd87a4cd305e9fe74ae"
},
"downloads": -1,
"filename": "oca_odoo_pre_commit_hooks-0.0.34-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6a2adbfb7b65281eaa6655f0fc727ca6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 41600,
"upload_time": "2024-11-04T19:04:41",
"upload_time_iso_8601": "2024-11-04T19:04:41.257557Z",
"url": "https://files.pythonhosted.org/packages/96/55/ecf2f4e613126ff4dbb08a6056c77efe3fd5e48c23996df2e51d3460fba5/oca_odoo_pre_commit_hooks-0.0.34-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9915e1723fbd5c3fdfeda5ded3e076104d5c1f3f7d395c0ad3a2c2133dc2444f",
"md5": "7402b411c9e921e1870a5e935c17f93f",
"sha256": "d1b7979a1241718da78e70a00cd42c0c6cd47187169f464dbd9910b1553ca072"
},
"downloads": -1,
"filename": "oca_odoo_pre_commit_hooks-0.0.34.tar.gz",
"has_sig": false,
"md5_digest": "7402b411c9e921e1870a5e935c17f93f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 51861,
"upload_time": "2024-11-04T19:04:42",
"upload_time_iso_8601": "2024-11-04T19:04:42.662678Z",
"url": "https://files.pythonhosted.org/packages/99/15/e1723fbd5c3fdfeda5ded3e076104d5c1f3f7d395c0ad3a2c2133dc2444f/oca_odoo_pre_commit_hooks-0.0.34.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-11-04 19:04:42",
"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": [
{
"name": "lxml",
"specs": [
[
">=",
"4.2.3"
]
]
},
{
"name": "polib",
"specs": [
[
"<=",
"1.2.0"
]
]
},
{
"name": "colorama",
"specs": []
}
],
"tox": true,
"lcname": "oca-odoo-pre-commit-hooks"
}