From 0f00d0c7caaf72a8cd219d8ad09397fb915f6a43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Marques?= Date: Thu, 25 Nov 2021 14:59:55 +0000 Subject: [PATCH] [IMP] Apply copier template - Update pre-commit config - Add GH Actions - Remove Travis CI --- .copier-answers.yml | 15 ++++++ .eslintrc.yml | 9 +++- .flake8 | 4 +- .github/workflows/pre-commit.yml | 20 +++++++ .github/workflows/stale.yml | 69 ++++++++++++++++++++++++ .github/workflows/test.yml | 52 ++++++++++++++++++ .gitignore | 19 ++++++- .isort.cfg | 1 + .pre-commit-config.yaml | 93 ++++++++++++++++++++------------ .prettierrc.yml | 2 +- .pylintrc | 4 +- .pylintrc-mandatory | 2 - .travis.yml => .t2d.yml | 12 +---- LICENSE | 12 ++--- README.md | 41 ++++++++++---- 15 files changed, 286 insertions(+), 69 deletions(-) create mode 100644 .copier-answers.yml create mode 100644 .github/workflows/pre-commit.yml create mode 100644 .github/workflows/stale.yml create mode 100644 .github/workflows/test.yml rename .travis.yml => .t2d.yml (67%) diff --git a/.copier-answers.yml b/.copier-answers.yml new file mode 100644 index 000000000..81f8831c7 --- /dev/null +++ b/.copier-answers.yml @@ -0,0 +1,15 @@ +# Do NOT update manually; changes here will be overwritten by Copier +_commit: v1.3.6 +_src_path: https://github.com/OCA/oca-addons-repo-template.git +ci: GitHub +dependency_installation_mode: OCA +generate_requirements_txt: true +include_wkhtmltopdf: false +odoo_version: 13.0 +rebel_module_groups: [] +repo_description: Account financial Tools for Odoo/OpenERP +repo_name: Account Financial Tools +repo_slug: account-financial-tools +travis_apt_packages: [] +travis_apt_sources: [] + diff --git a/.eslintrc.yml b/.eslintrc.yml index 88f2881b4..d4cc423cc 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,10 +1,17 @@ env: browser: true + es6: true # See https://github.com/OCA/odoo-community.org/issues/37#issuecomment-470686449 parserOptions: ecmaVersion: 2017 +overrides: + - files: + - "**/*.esm.js" + parserOptions: + sourceType: module + # Globals available in Odoo that shouldn't produce errorings globals: _: readonly @@ -14,7 +21,7 @@ globals: moment: readonly odoo: readonly openerp: readonly - Promise: readonly + owl: readonly # Styling is handled by Prettier, so we only need to enable AST rules; # see https://github.com/OCA/maintainer-quality-tools/pull/618#issuecomment-558576890 diff --git a/.flake8 b/.flake8 index 44ed868f7..e397e8ed4 100644 --- a/.flake8 +++ b/.flake8 @@ -1,5 +1,5 @@ [flake8] -max-line-length = 80 +max-line-length = 88 max-complexity = 16 # B = bugbear # B9 = bugbear opinionated (incl line length) @@ -8,3 +8,5 @@ select = C,E,F,W,B,B9 # E501: flake8 line length (covered by bugbear B950) # W503: line break before binary operator (black behaviour) ignore = E203,E501,W503 +per-file-ignores= + __init__.py:F401 diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 000000000..80ab1a211 --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,20 @@ +name: pre-commit + +on: + pull_request: + push: + +jobs: + pre-commit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + # The pylint-odoo version we use here does not support python 3.10 + # https://github.com/OCA/oca-addons-repo-template/issues/80 + # We also need to pin to an older version of python for older odoo versions + # where we are not using black > 21. Older black versions won't work with + # Python 3.9.8+, and we can't bump black without reformatting. + python-version: "3.9.7" + - uses: pre-commit/action@v2.0.0 diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 000000000..1693a1253 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,69 @@ +name: Mark stale issues and pull requests + +on: + schedule: + - cron: "0 12 * * 0" + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - name: Stale PRs and issues policy + uses: actions/stale@v4 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + # General settings. + ascending: true + remove-stale-when-updated: true + # Pull Requests settings. + # 120+30 day stale policy for PRs + # * Except PRs marked as "no stale" + days-before-pr-stale: 120 + days-before-pr-close: 30 + exempt-pr-labels: "no stale" + stale-pr-label: "stale" + stale-pr-message: > + There hasn't been any activity on this pull request in the past 4 months, so + it has been marked as stale and it will be closed automatically if no + further activity occurs in the next 30 days. + + If you want this PR to never become stale, please ask a PSC member to apply + the "no stale" label. + # Issues settings. + # 180+30 day stale policy for open issues + # * Except Issues marked as "no stale" + days-before-issue-stale: 180 + days-before-issue-close: 30 + exempt-issue-labels: "no stale,needs more information" + stale-issue-label: "stale" + stale-issue-message: > + There hasn't been any activity on this issue in the past 6 months, so it has + been marked as stale and it will be closed automatically if no further + activity occurs in the next 30 days. + + If you want this issue to never become stale, please ask a PSC member to + apply the "no stale" label. + + # 15+30 day stale policy for issues pending more information + # * Issues that are pending more information + # * Except Issues marked as "no stale" + - name: Needs more information stale issues policy + uses: actions/stale@v4 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + ascending: true + only-labels: "needs more information" + exempt-issue-labels: "no stale" + days-before-stale: 15 + days-before-close: 30 + days-before-pr-stale: -1 + days-before-pr-close: -1 + remove-stale-when-updated: true + stale-issue-label: "stale" + stale-issue-message: > + This issue needs more information and there hasn't been any activity + recently, so it has been marked as stale and it will be closed automatically + if no further activity occurs in the next 30 days. + + If you think this is a mistake, please ask a PSC member to remove the "needs + more information" label. diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml new file mode 100644 index 000000000..4431699bb --- /dev/null +++ b/.github/workflows/test.yml @@ -0,0 +1,52 @@ +name: test Odoo addons + +on: + pull_request: + branches: + - "13.0*" + push: + branches: + - "13.0*" + +jobs: + test: + runs-on: ubuntu-latest + container: ${{ matrix.container }} + strategy: + fail-fast: false + matrix: + include: + - container: ghcr.io/oca/oca-ci/py3.6-odoo13.0:latest + makepot: "true" + - container: ghcr.io/oca/oca-ci/py3.6-ocb13.0:latest + services: + postgres: + image: postgres:9.6 + env: + POSTGRES_USER: odoo + POSTGRES_PASSWORD: odoo + POSTGRES_DB: odoo + ports: + - 5432:5432 + steps: + - uses: actions/checkout@v2 + with: + persist-credentials: false + - name: Install addons and dependencies + run: oca_install_addons + - name: Check licenses + run: manifestoo -d . check-licenses + - name: Check development status + run: manifestoo -d . check-dev-status --default-dev-status=Beta + - name: Initialize test db + run: oca_init_test_database + - name: Run tests + run: oca_run_tests + - uses: codecov/codecov-action@v1 + - name: Update .pot files + run: + oca_export_and_push_pot https://x-access-token:${{ secrets.GIT_PUSH_TOKEN + }}@github.com/${{ github.repository }} + if: + ${{ matrix.makepot == 'true' && github.event_name == 'push' && + github.repository_owner == 'OCA' }} diff --git a/.gitignore b/.gitignore index 3be2f28fa..818770fb1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] +/.venv +/.pytest_cache # C extensions *.so @@ -41,6 +43,19 @@ coverage.xml # Pycharm .idea +# Eclipse +.settings + +# Visual Studio cache/options directory +.vs/ +.vscode + +# OSX Files +.DS_Store + +# Django stuff: +*.log + # Mr Developer .mr.developer.cfg .project @@ -56,5 +71,5 @@ docs/_build/ *~ *.swp -# Vscode -.vscode +# OCA rules +!static/lib/ diff --git a/.isort.cfg b/.isort.cfg index 7683badfa..0ec187efd 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -10,3 +10,4 @@ known_odoo=odoo known_odoo_addons=odoo.addons sections=FUTURE,STDLIB,THIRDPARTY,ODOO,ODOO_ADDONS,FIRSTPARTY,LOCALFOLDER default_section=THIRDPARTY +ensure_newline_before_comments = True diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6c30e9008..894f122cc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,11 @@ exclude: | (?x) + # NOT INSTALLABLE ADDONS + # END NOT INSTALLABLE ADDONS # Files and folders generated by bots, to avoid loops ^setup/|/static/description/index\.html$| + # We don't want to mess with tool-generated files + .svg$|/tests/([^/]+/)?cassettes/|^.copier-answers.yml$| # Maybe reactivate this when all README files include prettier ignore tags? ^README\.md$| # Library files can have extraneous formatting (even minimized) @@ -14,25 +18,47 @@ default_language_version: python: python3 node: "14.13.0" repos: + - repo: local + hooks: + # These files are most likely copier diff rejection junks; if found, + # review them manually, fix the problem (if needed) and remove them + - id: forbidden-files + name: forbidden files + entry: found forbidden files; remove them + language: fail + files: "\\.rej$" + - repo: https://github.com/oca/maintainer-tools + rev: ab1d7f6 + hooks: + # update the NOT INSTALLABLE ADDONS section above + - id: oca-update-pre-commit-excluded-addons + - id: oca-fix-manifest-website + args: ["https://github.com/OCA/account-financial-tools"] + - 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: 19.10b0 hooks: - id: black - - repo: https://github.com/prettier/pre-commit - rev: "v1.19.1" + - repo: https://github.com/pre-commit/mirrors-prettier + rev: v1.19.1 hooks: - 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 - name: prettier xml plugin + name: prettier (with plugin-xml) + entry: prettier --write --list-different additional_dependencies: - "prettier@1.19.1" - "@prettier/plugin-xml@0.7.2" - files: \.xml$ + files: \.(css|htm|html|js|json|jsx|less|md|scss|toml|ts|xml|yaml|yml)$ - repo: https://github.com/pre-commit/mirrors-eslint rev: v6.8.0 hooks: @@ -63,34 +89,11 @@ repos: - id: check-xml - id: mixed-line-ending args: ["--fix=lf"] - - repo: https://gitlab.com/pycqa/flake8 - rev: 3.7.9 - hooks: - - id: flake8 - name: flake8 except __init__.py - exclude: /__init__\.py$ - additional_dependencies: ["flake8-bugbear==19.8.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==19.8.0"] - - repo: https://github.com/pre-commit/mirrors-pylint - rev: v2.5.3 - hooks: - - id: pylint - name: pylint with optional checks - args: ["--rcfile=.pylintrc", "--exit-zero"] - verbose: true - additional_dependencies: ["pylint-odoo==3.5.0"] - - id: pylint - name: pylint with mandatory checks - args: ["--rcfile=.pylintrc-mandatory"] - additional_dependencies: ["pylint-odoo==3.5.0"] - repo: https://github.com/asottile/pyupgrade rev: v1.26.2 hooks: - id: pyupgrade + args: ["--keep-percent-format"] - repo: https://github.com/pre-commit/mirrors-isort rev: v4.3.21 hooks: @@ -101,3 +104,25 @@ repos: rev: 2.5.2 hooks: - id: setuptools-odoo-make-default + - repo: https://gitlab.com/pycqa/flake8 + rev: 3.7.9 + hooks: + - id: flake8 + name: flake8 + additional_dependencies: ["flake8-bugbear==19.8.0"] + - repo: https://github.com/pre-commit/mirrors-pylint + rev: v2.5.3 + hooks: + - id: pylint + name: pylint with optional checks + args: + - --rcfile=.pylintrc + - --exit-zero + verbose: true + additional_dependencies: &pylint_deps + - pylint-odoo==3.5.0 + - id: pylint + name: pylint with mandatory checks + args: + - --rcfile=.pylintrc-mandatory + additional_dependencies: *pylint_deps diff --git a/.prettierrc.yml b/.prettierrc.yml index fc5f3a7c4..5b6d4b361 100644 --- a/.prettierrc.yml +++ b/.prettierrc.yml @@ -5,4 +5,4 @@ printWidth: 88 proseWrap: always semi: true trailingComma: "es5" -xmlWhitespaceSensitivity: "ignore" +xmlWhitespaceSensitivity: "strict" diff --git a/.pylintrc b/.pylintrc index 485836baf..c3d75e12d 100644 --- a/.pylintrc +++ b/.pylintrc @@ -46,8 +46,6 @@ enable=anomalous-backslash-in-string, method-inverse, method-required-super, method-search, - missing-import-error, - missing-manifest-dependency, openerp-exception-warning, pointless-statement, pointless-string-statement, @@ -73,6 +71,7 @@ enable=anomalous-backslash-in-string, deprecated-module, file-not-used, invalid-commit, + missing-manifest-dependency, missing-newline-extrafiles, missing-readme, no-utf8-coding-comment, @@ -82,6 +81,7 @@ enable=anomalous-backslash-in-string, too-complex, unnecessary-utf8-coding-comment + [REPORTS] msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg} output-format=colorized diff --git a/.pylintrc-mandatory b/.pylintrc-mandatory index 55893fe8b..3e19630b6 100644 --- a/.pylintrc-mandatory +++ b/.pylintrc-mandatory @@ -39,8 +39,6 @@ enable=anomalous-backslash-in-string, method-inverse, method-required-super, method-search, - missing-import-error, - missing-manifest-dependency, openerp-exception-warning, pointless-statement, pointless-string-statement, diff --git a/.travis.yml b/.t2d.yml similarity index 67% rename from .travis.yml rename to .t2d.yml index 6716bfade..adfc61173 100644 --- a/.travis.yml +++ b/.t2d.yml @@ -14,24 +14,16 @@ addons: - expect-dev # provides unbuffer utility stages: - - linting - test jobs: include: - - stage: linting - name: "pre-commit" - before_install: - install: pip install pre-commit - script: pre-commit run --all --show-diff-on-failure --verbose --color always - after_success: - stage: test env: - - TESTS="1" ODOO_REPO="odoo/odoo" MAKEPOT="1" + - TESTS=1 ODOO_REPO="odoo/odoo" MAKEPOT="1" - stage: test env: - - TESTS="1" ODOO_REPO="OCA/OCB" - + - TESTS=1 ODOO_REPO="OCA/OCB" env: global: - VERSION="13.0" TESTS="0" LINT_CHECK="0" MAKEPOT="0" diff --git a/LICENSE b/LICENSE index 58777e31a..be3f7b28e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,7 @@ -GNU AFFERO GENERAL PUBLIC LICENSE + GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -633,8 +633,8 @@ the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, or + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -643,7 +643,7 @@ the "copyright" line and a pointer to where the full notice is found. GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. @@ -658,4 +658,4 @@ specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see -. +. diff --git a/README.md b/README.md index 4bc19143e..0a7cc5344 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,13 @@ -![Licence](https://img.shields.io/badge/licence-AGPL--3-blue.svg) [![Runbot Status](https://runbot.odoo-community.org/runbot/badge/flat/92/13.0.svg)](https://runbot.odoo-community.org/runbot/repo/github-com-oca-account-financial-tools-92) -[![Build Status](https://travis-ci.org/OCA/account-financial-tools.svg?branch=13.0)](https://travis-ci.org/OCA/account-financial-tools) -[![Coverage Status](https://coveralls.io/repos/OCA/account-financial-tools/badge.svg?branch=13.0)](https://coveralls.io/r/OCA/account-financial-tools?branch=13.0) +[![Build Status](https://travis-ci.com/OCA/account-financial-tools.svg?branch=13.0)](https://travis-ci.com/OCA/account-financial-tools) +[![codecov](https://codecov.io/gh/OCA/account-financial-tools/branch/13.0/graph/badge.svg)](https://codecov.io/gh/OCA/account-financial-tools) +[![Translation Status](https://translation.odoo-community.org/widgets/account-financial-tools-13-0/-/svg-badge.svg)](https://translation.odoo-community.org/engage/account-financial-tools-13-0/?utm_source=widget) + + + +# Account Financial Tools Account financial Tools for Odoo/OpenERP -======================================== This project aims to make the accounting usage system easy and painless. It provides addons to: @@ -18,10 +21,28 @@ It provides addons to: And much more. -Contributing ------------- -Do you want to contribute? Please read our [contributing guidelines](https://github.com/OCA/maintainer-tools/blob/master/CONTRIBUTING.md). + -Translation Status ------------------- -[![Transifex Status](https://www.transifex.com/projects/p/OCA-account-financial-tools-13-0/chart/image_png)](https://www.transifex.com/projects/p/OCA-account-financial-tools-13-0) + + +[//]: # (addons) + +This part will be replaced when running the oca-gen-addons-table script from OCA/maintainer-tools. + +[//]: # (end addons) + + + +## 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.