[IMP]update config files from oca-addons-repo-template

This commit is contained in:
AaronHForgeFlow
2020-12-23 13:39:00 +01:00
parent cc89fbd805
commit a4074af516
11 changed files with 298 additions and 327 deletions

13
.copier-answers.yml Normal file
View File

@@ -0,0 +1,13 @@
# Do NOT update manually; changes here will be overwritten by Copier
_commit: v1.1.1
_src_path: https://github.com/OCA/oca-addons-repo-template.git
dependency_installation_mode: OCA
generate_requirements_txt: false
include_wkhtmltopdf: true
odoo_version: 13.0
rebel_module_groups: []
repo_description: null
repo_name: stock-rma
repo_slug: https://github.com/ForgeFlow/stock-rma
travis_apt_packages: []
travis_apt_sources: []

View File

@@ -1,282 +1,180 @@
{ env:
"globals": browser: true
{
"$": false, # See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449
"_": false, parserOptions:
"fuzzy": false, ecmaVersion: 2017
"jQuery": false,
"moment": false, # Globals available in Odoo that shouldn't produce errorings
"odoo": false, globals:
"openerp": false, _: readonly
"self": false, $: readonly
}, fuzzy: readonly
"env": { "browser": true }, jQuery: readonly
"rules": moment: readonly
{ odoo: readonly
"no-alert": "warn", openerp: readonly
"no-array-constructor": "warn", Promise: readonly
"no-bitwise": "off",
"no-caller": "warn", # Styling is handled by Prettier, so we only need to enable AST rules;
"no-case-declarations": "warn", # see https://github.com/OCA/maintainer-quality-tools/pull/618#issuecomment-558576890
"no-catch-shadow": "warn", rules:
"no-class-assign": "warn", accessor-pairs: warn
"no-cond-assign": "warn", array-callback-return: warn
"no-confusing-arrow": "warn", callback-return: warn
"no-console": "off", capitalized-comments:
"no-const-assign": "warn", - warn
"no-constant-condition": "warn", - always
"no-continue": "off", - ignoreConsecutiveComments: true
"no-control-regex": "warn", ignoreInlineComments: true
"no-debugger": "warn", complexity:
"no-delete-var": "warn", - warn
"no-div-regex": "warn", - 15
"no-dupe-args": "warn", constructor-super: warn
"no-dupe-class-members": "warn", dot-notation: warn
"no-dupe-keys": "warn", eqeqeq: warn
"no-duplicate-case": "warn", global-require: warn
"no-duplicate-imports": "warn", handle-callback-err: warn
"no-else-return": "warn", id-blacklist: warn
"no-empty": "warn", id-match: warn
"no-empty-character-class": "warn", init-declarations: error
"no-empty-function": "warn", max-depth: warn
"no-empty-pattern": "warn", max-nested-callbacks: warn
"no-eq-null": "warn", max-statements-per-line: warn
"no-eval": "warn", no-alert: warn
"no-ex-assign": "warn", no-array-constructor: warn
"no-extend-native": "warn", no-caller: warn
"no-extra-bind": "warn", no-case-declarations: warn
"no-extra-boolean-cast": "warn", no-class-assign: warn
"no-extra-label": "warn", no-cond-assign: error
"no-extra-parens": "warn", no-const-assign: error
"no-extra-semi": "warn", no-constant-condition: warn
"no-fallthrough": "warn", no-control-regex: warn
"no-floating-decimal": "warn", no-debugger: error
"no-func-assign": "warn", no-delete-var: warn
"no-implicit-coercion": ["warn", { "allow": ["~"] }], no-div-regex: warn
"no-implicit-globals": "warn", no-dupe-args: error
"no-implied-eval": "warn", no-dupe-class-members: error
"no-inline-comments": "warn", no-dupe-keys: error
"no-inner-declarations": "warn", no-duplicate-case: error
"no-invalid-regexp": "warn", no-duplicate-imports: error
"no-invalid-this": "off", no-else-return: warn
"no-irregular-whitespace": "warn", no-empty-character-class: warn
"no-iterator": "warn", no-empty-function: error
"no-label-var": "warn", no-empty-pattern: error
"no-labels": "warn", no-empty: warn
"no-lone-blocks": "warn", no-eq-null: error
"no-lonely-if": "warn", no-eval: error
"no-loop-func": "off", no-ex-assign: error
"no-magic-numbers": "off", no-extend-native: warn
"no-mixed-operators": "warn", no-extra-bind: warn
"no-mixed-requires": "warn", no-extra-boolean-cast: warn
"no-mixed-spaces-and-tabs": "warn", no-extra-label: warn
"no-multi-spaces": "warn", no-fallthrough: warn
"no-multi-str": "warn", no-func-assign: error
"no-multiple-empty-lines": "warn", no-global-assign: error
"no-native-reassign": "warn", no-implicit-coercion:
"no-negated-condition": "warn", - warn
"no-negated-in-lhs": "warn", - allow: ["~"]
"no-nested-ternary": "off", no-implicit-globals: warn
"no-new": "warn", no-implied-eval: warn
"no-new-func": "warn", no-inline-comments: warn
"no-new-object": "warn", no-inner-declarations: warn
"no-new-require": "warn", no-invalid-regexp: warn
"no-new-symbol": "warn", no-irregular-whitespace: warn
"no-new-wrappers": "warn", no-iterator: warn
"no-obj-calls": "warn", no-label-var: warn
"no-octal": "warn", no-labels: warn
"no-octal-escape": "warn", no-lone-blocks: warn
"no-param-reassign": "warn", no-lonely-if: error
"no-path-concat": "warn", no-mixed-requires: error
"no-plusplus": "off", no-multi-str: warn
"no-process-env": "warn", no-native-reassign: error
"no-process-exit": "warn", no-negated-condition: warn
"no-proto": "warn", no-negated-in-lhs: error
"no-prototype-builtins": "warn", no-new-func: warn
"no-redeclare": "warn", no-new-object: warn
"no-regex-spaces": "warn", no-new-require: warn
"no-restricted-globals": "warn", no-new-symbol: warn
"no-restricted-imports": "warn", no-new-wrappers: warn
"no-restricted-modules": "warn", no-new: warn
"no-restricted-syntax": "warn", no-obj-calls: warn
"no-return-assign": "warn", no-octal-escape: warn
"no-script-url": "warn", no-octal: warn
"no-self-assign": "warn", no-param-reassign: warn
"no-self-compare": "warn", no-path-concat: warn
"no-sequences": "warn", no-process-env: warn
"no-shadow": "warn", no-process-exit: warn
"no-shadow-restricted-names": "warn", no-proto: warn
"no-whitespace-before-property": "warn", no-prototype-builtins: warn
"no-spaced-func": "warn", no-redeclare: warn
"no-sparse-arrays": "warn", no-regex-spaces: warn
"no-sync": "warn", no-restricted-globals: warn
"no-tabs": "warn", no-restricted-imports: warn
"no-ternary": "off", no-restricted-modules: warn
"no-trailing-spaces": "warn", no-restricted-syntax: warn
"no-this-before-super": "warn", no-return-assign: error
"no-throw-literal": "warn", no-script-url: warn
"no-undef": "warn", no-self-assign: warn
"no-undef-init": "warn", no-self-compare: warn
"no-undefined": "off", no-sequences: warn
"no-unexpected-multiline": "warn", no-shadow-restricted-names: warn
"no-underscore-dangle": "off", no-shadow: warn
"no-unmodified-loop-condition": "warn", no-sparse-arrays: warn
"no-unneeded-ternary": "warn", no-sync: warn
"no-unreachable": "warn", no-this-before-super: warn
"no-unsafe-finally": "warn", no-throw-literal: warn
"no-unused-expressions": "warn", no-undef-init: warn
"no-unused-labels": "warn", no-undef: error
"no-unused-vars": "warn", no-unmodified-loop-condition: warn
"no-use-before-define": "warn", no-unneeded-ternary: error
"no-useless-call": "warn", no-unreachable: error
"no-useless-computed-key": "warn", no-unsafe-finally: error
"no-useless-concat": "warn", no-unused-expressions: error
"no-useless-constructor": "warn", no-unused-labels: error
"no-useless-escape": "warn", no-unused-vars: error
"no-useless-rename": "warn", no-use-before-define: error
"no-void": "warn", no-useless-call: warn
"no-var": "off", no-useless-computed-key: warn
"no-warning-comments": "off", no-useless-concat: warn
"no-with": "warn", no-useless-constructor: warn
"array-bracket-spacing": "off", no-useless-escape: warn
"array-callback-return": "warn", no-useless-rename: warn
"arrow-body-style": "warn", no-void: warn
"arrow-parens": "warn", no-with: warn
"arrow-spacing": "off", operator-assignment: [error, always]
"accessor-pairs": "warn", prefer-const: warn
"block-scoped-var": "off", radix: warn
"block-spacing": ["warn", "always"], require-yield: warn
"brace-style": "warn", sort-imports: warn
"callback-return": "warn", spaced-comment: [error, always]
"camelcase": "off", strict: [error, function]
"capitalized-comments": use-isnan: error
[ valid-jsdoc:
"warn", - warn
"always", - prefer:
{ "ignoreConsecutiveComments": true, "ignoreInlineComments": true }, arg: param
], argument: param
"comma-dangle": ["warn", "always-multiline"], augments: extends
"comma-spacing": ["warn", { "before": false, "after": true }], constructor: class
"comma-style": "warn", exception: throws
"complexity": ["warn", 15], func: function
"computed-property-spacing": "off", method: function
"consistent-return": "off", prop: property
"consistent-this": "off", return: returns
"constructor-super": "warn", virtual: abstract
"curly": "warn", yield: yields
"default-case": "off", preferType:
"dot-location": ["warn", "property"], array: Array
"dot-notation": "warn", bool: Boolean
"eol-last": "warn", boolean: Boolean
"eqeqeq": "warn", number: Number
"func-names": "off", object: Object
"func-style": "off", str: String
"generator-star-spacing": "off", string: String
"global-require": "warn", requireParamDescription: false
"guard-for-in": "off", requireReturn: false
"handle-callback-err": "warn", requireReturnDescription: false
"id-blacklist": "warn", requireReturnType: false
"id-length": "off", valid-typeof: warn
"id-match": "warn", yoda: warn
"indent": "warn",
"init-declarations": "warn",
"jsx-quotes": "warn",
"key-spacing": "off",
"keyword-spacing": "warn",
"linebreak-style": ["warn", "unix"],
"lines-around-comment": "warn",
"max-depth": "warn",
"max-len":
[
"warn",
{ "code": 88, "ignorePattern": "odoo\\.define\\(", "tabWidth": 4 },
],
"max-lines": "off",
"max-nested-callbacks": "warn",
"max-params": "off",
"max-statements": "off",
"max-statements-per-line": "warn",
"multiline-ternary": "off",
"new-cap": "off",
"new-parens": "warn",
"newline-after-var": "off",
"newline-before-return": "off",
"newline-per-chained-call": "off",
"object-curly-newline": ["warn", { "consistent": true }],
"object-curly-spacing": ["warn", "never"],
"object-property-newline":
["warn", { "allowAllPropertiesOnSameLine": true }],
"object-shorthand": "off",
"one-var": "off",
"one-var-declaration-per-line": "off",
"operator-assignment": "warn",
"operator-linebreak": "warn",
"padded-blocks": "off",
"prefer-arrow-callback": "off",
"prefer-const": "warn",
"prefer-reflect": "off",
"prefer-rest-params": "off",
"prefer-spread": "off",
"prefer-template": "off",
"quote-props": "off",
"quotes": "off",
"radix": "warn",
"require-yield": "warn",
"rest-spread-spacing": "off",
"semi": ["warn", "always"],
"semi-spacing": "warn",
"sort-imports": "warn",
"sort-vars": "off",
"space-before-blocks": "warn",
"space-before-function-paren": "warn",
"space-in-parens": "off",
"space-infix-ops": "off",
"space-unary-ops": "off",
"spaced-comment": ["warn", "always"],
"strict": ["warn", "function"],
"template-curly-spacing": "off",
"unicode-bom": "warn",
"use-isnan": "warn",
"valid-jsdoc":
[
"warn",
{
"prefer":
{
"arg": "param",
"argument": "param",
"augments": "extends",
"constructor": "class",
"exception": "throws",
"func": "function",
"method": "function",
"prop": "property",
"return": "returns",
"virtual": "abstract",
"yield": "yields",
},
"preferType":
{
"array": "Array",
"bool": "Boolean",
"boolean": "Boolean",
"number": "Number",
"object": "Object",
"str": "String",
"string": "String",
},
"requireParamDescription": false,
"requireReturn": false,
"requireReturnDescription": false,
"requireReturnType": false,
},
],
"valid-typeof": "warn",
"vars-on-top": "off",
"wrap-iife": "warn",
"wrap-regex": "warn",
"yield-star-spacing": "off",
"yoda": "warn",
},
"parserOptions": { "ecmaVersion": 2017 },
}

13
.github/workflows/pre-commit.yml vendored Normal file
View File

@@ -0,0 +1,13 @@
name: pre-commit
on:
pull_request:
push:
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- uses: pre-commit/action@v2.0.0

19
.gitignore vendored
View File

@@ -1,6 +1,8 @@
# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
__pycache__/ __pycache__/
*.py[cod] *.py[cod]
/.venv
/.pytest_cache
# C extensions # C extensions
*.so *.so
@@ -21,6 +23,7 @@ var/
*.egg-info/ *.egg-info/
.installed.cfg .installed.cfg
*.egg *.egg
*.eggs
# Installer logs # Installer logs
pip-log.txt pip-log.txt
@@ -40,6 +43,19 @@ coverage.xml
# Pycharm # Pycharm
.idea .idea
# Eclipse
.settings
# Visual Studio cache/options directory
.vs/
.vscode
# OSX Files
.DS_Store
# Django stuff:
*.log
# Mr Developer # Mr Developer
.mr.developer.cfg .mr.developer.cfg
.project .project
@@ -54,3 +70,6 @@ docs/_build/
# Backup files # Backup files
*~ *~
*.swp *.swp
# OCA rules
!static/lib/

View File

@@ -12,20 +12,21 @@ exclude: |
(LICENSE.*|COPYING.*) (LICENSE.*|COPYING.*)
default_language_version: default_language_version:
python: python3 python: python3
node: "14.13.0"
repos: repos:
- repo: https://github.com/myint/autoflake
rev: v1.4
hooks:
- id: autoflake
args: ["-i", "--ignore-init-module-imports"]
- repo: https://github.com/psf/black - repo: https://github.com/psf/black
rev: 19.10b0 rev: 19.10b0
hooks: hooks:
- id: black - id: black
- repo: https://github.com/prettier/prettier - repo: https://github.com/pre-commit/mirrors-prettier
rev: "1.19.1" rev: v1.19.1
hooks: hooks:
- id: prettier - id: prettier
# TODO Avoid awebdeveloper/pre-commit-prettier if possible
# HACK https://github.com/prettier/prettier/issues/7407
- repo: https://github.com/awebdeveloper/pre-commit-prettier
rev: v0.0.1
hooks:
- id: prettier - id: prettier
name: prettier xml plugin name: prettier xml plugin
additional_dependencies: additional_dependencies:
@@ -75,17 +76,17 @@ repos:
files: /__init__\.py$ files: /__init__\.py$
additional_dependencies: ["flake8-bugbear==19.8.0"] additional_dependencies: ["flake8-bugbear==19.8.0"]
- repo: https://github.com/pre-commit/mirrors-pylint - repo: https://github.com/pre-commit/mirrors-pylint
rev: v2.3.1 rev: v2.5.3
hooks: hooks:
- id: pylint - id: pylint
name: pylint with optional checks name: pylint with optional checks
args: ["--rcfile=.pylintrc", "--exit-zero"] args: ["--rcfile=.pylintrc", "--exit-zero"]
verbose: true verbose: true
additional_dependencies: ["pylint-odoo==3.1.0"] additional_dependencies: ["pylint-odoo==3.5.0"]
- id: pylint - id: pylint
name: pylint with mandatory checks name: pylint with mandatory checks
args: ["--rcfile=.pylintrc-mandatory"] args: ["--rcfile=.pylintrc-mandatory"]
additional_dependencies: ["pylint-odoo==3.1.0"] additional_dependencies: ["pylint-odoo==3.5.0"]
- repo: https://github.com/asottile/pyupgrade - repo: https://github.com/asottile/pyupgrade
rev: v1.26.2 rev: v1.26.2
hooks: hooks:

8
.prettierrc.yml Normal file
View File

@@ -0,0 +1,8 @@
# Defaults for all prettier-supported languages.
# Prettier will complete this with settings from .editorconfig file.
bracketSpacing: false
printWidth: 88
proseWrap: always
semi: true
trailingComma: "es5"
xmlWhitespaceSensitivity: "strict"

View File

@@ -3,7 +3,8 @@ load-plugins=pylint_odoo
score=n score=n
[ODOOLINT] [ODOOLINT]
readme_template_url="https://github.com/ForgeFlow/maintainer-tools/blob/master/template/module/README.rst" readme_template_url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
manifest_required_authors=Odoo Community Association (OCA)
manifest_required_keys=license manifest_required_keys=license
manifest_deprecated_keys=description,active manifest_deprecated_keys=description,active
license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
@@ -27,6 +28,7 @@ enable=anomalous-backslash-in-string,
class-camelcase, class-camelcase,
dangerous-default-value, dangerous-default-value,
dangerous-view-replace-wo-priority, dangerous-view-replace-wo-priority,
development-status-allowed,
duplicate-id-csv, duplicate-id-csv,
duplicate-key, duplicate-key,
duplicate-xml-fields, duplicate-xml-fields,
@@ -43,8 +45,6 @@ enable=anomalous-backslash-in-string,
method-inverse, method-inverse,
method-required-super, method-required-super,
method-search, method-search,
missing-import-error,
missing-manifest-dependency,
openerp-exception-warning, openerp-exception-warning,
pointless-statement, pointless-statement,
pointless-string-statement, pointless-string-statement,
@@ -70,6 +70,7 @@ enable=anomalous-backslash-in-string,
deprecated-module, deprecated-module,
file-not-used, file-not-used,
invalid-commit, invalid-commit,
missing-manifest-dependency,
missing-newline-extrafiles, missing-newline-extrafiles,
missing-readme, missing-readme,
no-utf8-coding-comment, no-utf8-coding-comment,
@@ -79,6 +80,7 @@ enable=anomalous-backslash-in-string,
too-complex, too-complex,
unnecessary-utf8-coding-comment unnecessary-utf8-coding-comment
[REPORTS] [REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg} msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
output-format=colorized output-format=colorized

View File

@@ -3,7 +3,8 @@ load-plugins=pylint_odoo
score=n score=n
[ODOOLINT] [ODOOLINT]
readme_template_url="https://github.com/ForgeFlow/maintainer-tools/blob/master/template/module/README.rst" readme_template_url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
manifest_required_authors=Odoo Community Association (OCA)
manifest_required_keys=license manifest_required_keys=license
manifest_deprecated_keys=description,active manifest_deprecated_keys=description,active
license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3 license_allowed=AGPL-3,GPL-2,GPL-2 or any later version,GPL-3,GPL-3 or any later version,LGPL-3
@@ -20,6 +21,7 @@ enable=anomalous-backslash-in-string,
class-camelcase, class-camelcase,
dangerous-default-value, dangerous-default-value,
dangerous-view-replace-wo-priority, dangerous-view-replace-wo-priority,
development-status-allowed,
duplicate-id-csv, duplicate-id-csv,
duplicate-key, duplicate-key,
duplicate-xml-fields, duplicate-xml-fields,
@@ -36,8 +38,6 @@ enable=anomalous-backslash-in-string,
method-inverse, method-inverse,
method-required-super, method-required-super,
method-search, method-search,
missing-import-error,
missing-manifest-dependency,
openerp-exception-warning, openerp-exception-warning,
pointless-statement, pointless-statement,
pointless-string-statement, pointless-string-statement,

View File

@@ -14,30 +14,25 @@ addons:
- expect-dev # provides unbuffer utility - expect-dev # provides unbuffer utility
stages: stages:
- linting
- test - test
jobs: jobs:
include: include:
- stage: linting
name: "pre-commit"
before_install:
install: pip install pre-commit
script: pre-commit run --all --show-diff-on-failure
after_success:
- stage: test - stage: test
env: env:
- TESTS="1" ODOO_REPO="odoo/odoo" MAKEPOT="1" - TESTS=1 ODOO_REPO="odoo/odoo" MAKEPOT="1"
- stage: test - stage: test
env: env:
- TESTS="1" ODOO_REPO="OCA/OCB" - TESTS=1 ODOO_REPO="OCA/OCB"
env: env:
global: global:
- VERSION="13.0" TESTS="0" LINT_CHECK="0" MAKEPOT="0" - VERSION="13.0" TESTS="0" LINT_CHECK="0" MAKEPOT="0"
- WKHTMLTOPDF_VERSION="0.12.5"
install: install:
- git clone -b master-eficent https://github.com/ForgeFlow/maintainer-quality-tools.git $HOME/maintainer-quality-tools - git clone -b master-eficent
https://github.com/ForgeFlow/maintainer-quality-tools.git
$HOME/maintainer-quality-tools
- export PATH=${HOME}/maintainer-quality-tools/travis:${PATH} - export PATH=${HOME}/maintainer-quality-tools/travis:${PATH}
- travis_install_nightly - travis_install_nightly

10
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,10 @@
# OCA Guidelines
Please follow the official guide from the
[OCA Guidelines page](https://odoo-community.org/page/contributing).
## Project Specific Guidelines
<!-- /!\ do not modify above this line -->
This project does not have specific coding guidelines.

View File

@@ -1,24 +1,36 @@
[![Build Status](https://travis-ci.org/forgeflow/stock-rma.svg?branch=13.0)](https://travis-ci.org/forgeflow/stock-rma) [![Runbot Status](https://runbot.odoo-community.org/runbot/badge/flat//13.0.svg)](https://runbot.odoo-community.org/runbot/repo/github-com-oca-https://github.com/ForgeFlow/stock-rma-)
[![codecov](https://codecov.io/gh/forgeflow/stock-rma/branch/13.0/graph/badge.svg)](https://codecov.io/gh/forgeflow/stock-rma) [![Build Status](https://travis-ci.com/OCA/https://github.com/ForgeFlow/stock-rma.svg?branch=13.0)](https://travis-ci.com/OCA/https://github.com/ForgeFlow/stock-rma)
[![codecov](https://codecov.io/gh/OCA/https://github.com/ForgeFlow/stock-rma/branch/13.0/graph/badge.svg)](https://codecov.io/gh/OCA/https://github.com/ForgeFlow/stock-rma)
[![Translation Status](https://translation.odoo-community.org/widgets/https://github.com/ForgeFlow/stock-rma-13-0/-/svg-badge.svg)](https://translation.odoo-community.org/engage/https://github.com/ForgeFlow/stock-rma-13-0/?utm_source=widget)
RMA (Return Merchandise Authorization) <!-- /!\ do not modify above this line -->
======================================
A Return Merchandise Authorization (RMA), is a part of the process of # stock-rma
returning a product in order to receive a refund, replacement, or repair
during the product's warranty period.
The purchaser of the product must contact the manufacturer (or distributor None
or retailer) to obtain authorization to return the product.
The resulting RMA number must be displayed on or included in the returned <!-- /!\ do not modify below this line -->
product's packaging.
The issuance of an RMA is a key gatekeeping moment in the reverse logistics <!-- prettier-ignore-start -->
cycle, providing the vendor with a final opportunity to diagnose and correct
the customer's problem with the product (such as improper installation or
configuration) before the customer permanently relinquishes ownership
of the product to the manufacturer, commonly referred to as a return.
As returns are costly for the vendor and inconvenient for the customer, [//]: # (addons)
any return that can be prevented benefits both parties.
This part will be replaced when running the oca-gen-addons-table script from OCA/maintainer-tools.
[//]: # (end addons)
<!-- prettier-ignore-end -->
## Licenses
This repository is licensed under [AGPL-3.0](LICENSE).
However, each module can have a totally different license, as long as they adhere to OCA
policy. Consult each module's `__manifest__.py` file, which contains a `license` key
that explains its 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.