Skip to content

Commit

Permalink
[ADD] Pre-commit compatibility for odoo < 13
Browse files Browse the repository at this point in the history
  • Loading branch information
josep-tecnativa committed Oct 21, 2024
1 parent f3df4ad commit e38f0f8
Show file tree
Hide file tree
Showing 6 changed files with 293 additions and 21 deletions.
116 changes: 96 additions & 20 deletions .pre-commit-config.yaml.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,20 @@
{%- set proj_rev.ruff = "v0.1.3" %}
{%- set proj_rev.pre_commit_hooks = "v4.5.0" %}
{%- set proj_rev.odoo_pre_commit_hooks = "v0.0.29" %}
{%- if odoo_version < 16 %}
{%- set proj_rev.node_version = "18.17.1" %}
{%- set proj_rev.mirrors_prettier = "v2.7.1" %}
{%- set proj_rev.mirrors_prettier_prettier = "prettier@2.7.1" %}
{%- set proj_rev.mirrors_prettier_xml = "@prettier/plugin-xml@v2.2.0" %}
{%- set proj_rev.mirrors_eslint = "v8.49.0" %}
{%- set proj_rev.pylint_odoo = "v8.0.0" %}
{%- if odoo_version < 13 %}
{%- set proj_rev.node_version = "14.14.0" %}
{%- set proj_rev.mirrors_prettier = "v2.1.2" %}
{%- set proj_rev.mirrors_prettier_prettier = "prettier@2.1.2" %}
{%- set proj_rev.mirrors_prettier_xml = "@prettier/plugin-xml@0.12.0" %}
{%- set proj_rev.pre_commit_hooks = "v3.2.0" %}
{%- set proj_rev.mirrors_eslint = "v7.8.1" %}
{%- elif odoo_version < 16 %}
{%- set proj_rev.pylint_odoo = "v8.0.0" %}
{%- elif odoo_version < 17 %}
{%- set proj_rev.pylint_odoo = "v8.0.20" %}
Expand All @@ -34,7 +47,7 @@ exclude: |
(LICENSE.*|COPYING.*)
default_language_version:
python: python3
node: "18.17.1"
node: "{{ proj_rev.node_version }}"
repos:
- repo: local
hooks:
Expand All @@ -43,6 +56,38 @@ repos:
entry: found forbidden files; remove them
language: fail
files: "\\.rej$"
{% if odoo_version < 13 -%}
- repo: https://github.com/oca/maintainer-tools
rev: b9c963d
hooks:
# update the NOT INSTALLABLE ADDONS section above
- id: oca-update-pre-commit-excluded-addons
args:
- --addons-dir
- odoo/custom/src/private
- repo: https://github.com/oca/maintainer-tools
rev: 05e2174
hooks:
- id: oca-gen-addon-readme
args:
- --addons-dir=odoo/custom/src/private
- --org-name={{ project_author }}
- --repo-name={{ project_name }}
- --gen-html
- --branch={{ odoo_version }}
- --template-filename=.module-readme.rst.j2
- repo: https://github.com/myint/autoflake
rev: v1.4
hooks:
- id: autoflake
args:
- --expand-star-imports
- --ignore-init-module-imports
- --in-place
- --remove-all-unused-imports
- --remove-duplicate-keys
- --remove-unused-variables
{% else -%}
- &maintainer_tools
repo: https://github.com/oca/maintainer-tools
rev: 400ffa99242c8b225ab4d34de78721a68b292a61
Expand All @@ -52,6 +97,7 @@ repos:
args:
- --addons-dir
- odoo/custom/src/private
{% endif -%}
{% if odoo_version >= 14 -%}
- repo: https://github.com/OCA/odoo-pre-commit-hooks
rev: {{ proj_rev.odoo_pre_commit_hooks }}
Expand All @@ -69,47 +115,49 @@ repos:
- id: ruff-format
{% else -%}
- repo: https://github.com/psf/black
rev: 23.9.1
rev: 20.8b1
hooks:
- id: black
additional_dependencies: ["click<=8.1.7"]
additional_dependencies: ["click<8.1.0"]
- repo: https://github.com/asottile/pyupgrade
rev: v2.7.2
hooks:
- id: pyupgrade
args:
- --keep-percent-format
- repo: https://github.com/PyCQA/isort
rev: 5.12.0
rev: 5.11.5
hooks:
- id: isort
name: isort except __init__.py
args: [--settings, .]
exclude: /__init__\.py$
- repo: https://github.com/pycqa/flake8
rev: 6.1.0
rev: 3.8.3
hooks:
- id: flake8
name: flake8 except __init__.py, __manifest__.py
args: ["--extend-ignore=B023"]
exclude: /__(?:init|manifest)__\.py$
additional_dependencies: ["flake8-bugbear==23.7.10", "importlib-metadata<=6.8.0"]
name: flake8 except __init__.py
exclude: /__init__\.py$
additional_dependencies: ["flake8-bugbear==20.1.4", "importlib-metadata<5.0.0"]
- id: flake8
name: flake8 only __init__.py
args: ["--extend-ignore=F401"] # ignore unused imports in __init__.py
files: /__init__\.py$
additional_dependencies: ["flake8-bugbear==23.7.10", "importlib-metadata<=6.8.0"]
- id: flake8
name: flake8 only __manifest__.py
args: ["--extend-ignore=B018"] # ignore found useless expression in __manifest__.py
files: /__manifest__\.py$
additional_dependencies: ["flake8-bugbear==23.7.10", "importlib-metadata<=6.8.0"]
additional_dependencies: ["flake8-bugbear==20.1.4", "importlib-metadata<5.0.0"]
{% endif -%}
- repo: https://github.com/pre-commit/mirrors-prettier
# HACK https://github.com/prettier/prettier/issues/15696
rev: v2.7.1
rev: {{ proj_rev.mirrors_prettier }}
hooks:
- id: prettier
name: prettier + plugin-xml
{% if odoo_version >= 13 -%}
args: [--plugin=@prettier/plugin-xml]
{% endif -%}
additional_dependencies:
# HACK https://github.com/prettier/pre-commit/issues/16#issuecomment-713474520
- prettier@2.7.1
- "@prettier/plugin-xml@v2.2.0"
- {{ proj_rev.mirrors_prettier_prettier }}
- "{{ proj_rev.mirrors_prettier_xml }}"
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: {{ proj_rev.pre_commit_hooks }}
hooks:
Expand All @@ -126,12 +174,15 @@ repos:
- id: check-docstring-first
- id: check-executables-have-shebangs
- id: check-merge-conflict
{%- if odoo_version >= 11 %}
args: [--assume-in-merge]
exclude: \.rst$ # HACK https://github.com/pre-commit/pre-commit-hooks/issues/985
{%- endif %}
- id: check-symlinks
- id: check-xml
- id: mixed-line-ending
args: ["--fix=lf"]
{%- if odoo_version >= 11 %}
- repo: https://github.com/OCA/pylint-odoo
rev: {{ proj_rev.pylint_odoo }}
hooks:
Expand All @@ -144,14 +195,38 @@ repos:
- id: pylint_odoo
args:
- --rcfile=.pylintrc-mandatory
{%- else %}
- repo: https://github.com/pycqa/pylint
rev: v2.11.1
hooks:
- id: pylint
name: pylint with optional checks
args:
- --valid_odoo_versions=10.0
- --rcfile=.pylintrc
- --exit-zero
verbose: true
additional_dependencies:
- isort==4.3.21
- pylint-odoo==5.0.5
- id: pylint
name: pylint with mandatory checks
args:
- --valid_odoo_versions=10.0
- --rcfile=.pylintrc-mandatory
additional_dependencies:
- isort==4.3.21
- pylint-odoo==5.0.5
{%- endif %}
- repo: https://github.com/pre-commit/mirrors-eslint
rev: v8.49.0
rev: {{ proj_rev.mirrors_eslint }}
hooks:
- id: eslint
verbose: true
args:
- --color
- --fix
{% if odoo_version >= 13 -%}
- <<: *maintainer_tools
hooks:
# Generate readme is last, so its digest includes changes from above
Expand All @@ -165,3 +240,4 @@ repos:
- --if-fragments-changed
- --branch={{ odoo_version }}
- --template-filename=.module-readme.rst.j2
{% endif -%}
47 changes: 46 additions & 1 deletion .pylintrc-mandatory.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,51 @@ valid-odoo-versions={{ odoo_version }}
[MESSAGES CONTROL]
disable=all


{% if odoo_version < 11 %}
enable=anomalous-backslash-in-string,
# api-one-deprecated,
api-one-multi-together,
assignment-from-none,
attribute-deprecated,
class-camelcase,
dangerous-default-value,
dangerous-view-replace-wo-priority,
duplicate-id-csv,
duplicate-key,
duplicate-xml-fields,
duplicate-xml-record-id,
eval-referenced,
eval-used,
incoherent-interpreter-exec-perm,
manifest-author-string,
manifest-deprecated-key,
manifest-required-key,
manifest-version-format,
method-compute,
method-inverse,
method-required-super,
method-search,
missing-import-error,
missing-manifest-dependency,
openerp-exception-warning,
pointless-statement,
pointless-string-statement,
print-used,
redundant-keyword-arg,
redundant-modulename-xml,
reimported,
relative-import,
return-in-init,
rst-syntax-error,
sql-injection,
too-few-format-args,
translation-field,
# translation-required,
unreachable,
use-vim-comment,
wrong-tabs-instead-of-spaces,
xml-syntax-error
{%- else %}
enable=attribute-deprecated,
manifest-author-string,
manifest-deprecated-key,
Expand Down Expand Up @@ -87,6 +131,7 @@ enable=attribute-deprecated,
translation-too-many-args,
translation-unsupported-format
{%- endif %}
{%- endif %}

[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
Expand Down
65 changes: 65 additions & 0 deletions .pylintrc.jinja
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,70 @@ disable=all
# config as a blocking check.

# messages that do not cause the lint step to fail
{%- if odoo_version < 11%}
enable=anomalous-backslash-in-string,
# api-one-deprecated,
api-one-multi-together,
assignment-from-none,
attribute-deprecated,
class-camelcase,
dangerous-default-value,
dangerous-view-replace-wo-priority,
duplicate-id-csv,
duplicate-key,
duplicate-xml-fields,
duplicate-xml-record-id,
eval-referenced,
eval-used,
incoherent-interpreter-exec-perm,
license-allowed,
manifest-author-string,
manifest-deprecated-key,
{%- if project_author %}
manifest-required-author,
{%- endif %}
manifest-required-key,
manifest-version-format,
method-compute,
method-inverse,
method-required-super,
method-search,
missing-import-error,
missing-manifest-dependency,
openerp-exception-warning,
pointless-statement,
pointless-string-statement,
print-used,
redundant-keyword-arg,
redundant-modulename-xml,
reimported,
relative-import,
return-in-init,
rst-syntax-error,
sql-injection,
too-few-format-args,
translation-field,
# translation-required,
unreachable,
use-vim-comment,
wrong-tabs-instead-of-spaces,
xml-syntax-error,
# messages that do not cause the lint step to fail
consider-merging-classes-inherited,
create-user-wo-reset-password,
dangerous-filter-wo-user,
deprecated-module,
file-not-used,
invalid-commit,
missing-newline-extrafiles,
missing-readme,
no-utf8-coding-comment,
odoo-addons-relative-import,
old-api7-method-defined,
redefined-builtin,
too-complex,
unnecessary-utf8-coding-comment
{%- else %}
enable=attribute-deprecated,
consider-merging-classes-inherited,
invalid-commit,
Expand Down Expand Up @@ -120,6 +184,7 @@ enable=attribute-deprecated,
translation-unsupported-format,
website-manifest-key-not-valid-uri
{%- endif %}
{%- endif %}

[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
Expand Down
Loading

0 comments on commit e38f0f8

Please sign in to comment.