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 8cb866c
Show file tree
Hide file tree
Showing 7 changed files with 373 additions and 38 deletions.
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
176 changes: 176 additions & 0 deletions {% if odoo_version < 13 %}.pre-commit-config.yaml{% endif %}.jinja
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
{# We cannot use the same pre-commit config as MQT's because paths don't match
and it's designed only for Odoo 13.0+, so we design our own version, which
should be as close as possible to MQT's -#}

{#- This namespace holds repo versions #}
{%- set proj_rev = namespace() %}
{%- set proj_rev.pre_commit_hooks = "v3.2.0" %}
{%- set proj_rev.odoo_pre_commit_hooks = "v0.0.29" %}
{%- set proj_rev.node_version = "14.14.0" %}
{%- set proj_rev.mirrors_prettier = "v2.1.2" %}
{%- set proj_rev.mirrors_prettier_prettier = "[email protected]" %}
{%- set proj_rev.mirrors_prettier_xml = "@prettier/[email protected]" %}
{%- set proj_rev.mirrors_eslint = "v7.8.1" %}
{%- set proj_rev.pylint_odoo = "v8.0.0" %}

exclude: |
(?x)
# NOT INSTALLABLE ADDONS
# END NOT INSTALLABLE ADDONS
# Files and folders generated by bots, to avoid loops
/static/description/index\.html$|
# Files that fail if changed manually
.*\.(diff|patch)$|
# Library files can have extraneous formatting (even minimized)
/static/(src/)?lib/|
# You don't usually want a bot to modify your legal texts
(LICENSE.*|COPYING.*)
default_language_version:
python: python3
node: "{{ proj_rev.node_version }}"
repos:
- repo: local
hooks:
- id: forbidden-files
name: forbidden files
entry: found forbidden files; remove them
language: fail
files: "\\.rej$"
- 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/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
- repo: https://github.com/psf/black
rev: 20.8b1
hooks:
- id: black
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.11.5
hooks:
- id: isort
name: isort except __init__.py
args: [--settings, .]
exclude: /__init__\.py$
- repo: https://github.com/pycqa/flake8
rev: 3.8.3
hooks:
- id: flake8
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==20.1.4", "importlib-metadata<5.0.0"]
- repo: https://github.com/pre-commit/mirrors-prettier
# HACK https://github.com/prettier/prettier/issues/15696
rev: {{ proj_rev.mirrors_prettier }}
hooks:
- id: prettier
name: prettier + plugin-xml
additional_dependencies:
# HACK https://github.com/prettier/pre-commit/issues/16#issuecomment-713474520
- {{ 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:
- id: trailing-whitespace
- id: end-of-file-fixer
{%- if odoo_version >= 11 %}
- id: debug-statements
{%- endif %}
- id: fix-encoding-pragma
{%- if odoo_version >= 11 %}
args: ["--remove"]
{%- endif %}
- id: check-case-conflict
- 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:
- id: pylint_odoo
name: pylint with optional checks
args:
- --rcfile=.pylintrc
- --exit-zero
verbose: true
- 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: {{ proj_rev.mirrors_eslint }}
hooks:
- id: eslint
verbose: true
args:
- --color
- --fix
- 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
Loading

0 comments on commit 8cb866c

Please sign in to comment.