# v2 git bundle
7752d3fcc0a0dbdbac88e4da32280a1e2848a103 refs/heads/bundle
7752d3fcc0a0dbdbac88e4da32280a1e2848a103 HEAD

PACK      ¾"xœ}�Ok!Åï~
!·Å®Pzè¥‡ÒäØK¯¡,VÇÄÖÕÅ™%Ù†|÷Žù[JAÔyóŸ¿…|ÉÉ‡ÍX…œ¤ÏE~¥¼ã[ˆ aO��(ÖM{°ˆê³®œT.z§†I$…†K¬†}ÕdêÖÇã»°[SH>É‘üÝ£€äºì»°½ÉA¢Ãwn5M±
8,"ê|H&v	v—q*#*¡ï¨˜Àâ¦ÛmÁièÚ?E?ež®ÑjâÞqºùã÷B,ä2Ë”IÚ†à1–Š&†”&9iFÊHÀØÀU/s"±>4‰IZ}`«Âb5ŸGÝ4êÖq€¶„¡âÖõù}»%ŽÔèÆõ ÛV¿­ž—¯«–SÎ2úð¬Í¿1×.¯âŸ½‰ø/È³áÁ%È�¶3x6Éü# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
/.venv
/.pytest_cache
/.ruff_cache

# C extensions
*.so

# Distribution / packaging
.Python
env/
bin/
build/
develop-eggs/
dist/
eggs/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg
*.eggs

# Windows installers
*.msi

# Debian packages
*.deb

# Redhat packages
*.rpm

# MacOS packages
*.dmg
*.pkg

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.cache
nosetests.xml
coverage.xml

# Translations
*.mo

# Pycharm
.idea

# Eclipse
.settings

# Visual Studio cache/options directory
.vs/
.vscode

# OSX Files
.DS_Store

# Django stuff:
*.log

# Mr Developer
.mr.developer.cfg
.project
.pydevproject

# Rope
.ropeproject

# Sphinx documentation
docs/_build/

# Backup files
*~
*.swp
¢†Ù³‡xsŒçjsdoc = require("eslint-plugin-jsdoc");

const config = [{
    plugins: {
      jsdoc,
    },

    languageOptions: {
        globals: {
            _: "readonly",
            $: "readonly",
            fuzzy: "readonly",
            jQuery: "readonly",
            moment: "readonly",
            odoo: "readonly",
            openerp: "readonly",
            owl: "readonly",
            luxon: "readonly",
        },

        ecmaVersion: 2024,
        sourceType: "script",
    },

    rules: {
        "accessor-pairs": "warn",
        "array-callback-return": "warn",
        "callback-return": "warn",
        "capitalized-comments": ["warn", "always", {
            ignoreConsecutiveComments: true,
            ignoreInlineComments: true,
        }],
        complexity: ["warn", 15],
        "constructor-super": "warn",
        "dot-notation": "warn",
        eqeqeq: "warn",
        "global-require": "warn",
        "handle-callback-err": "warn",
        "id-blacklist": "warn",
        "id-match": "warn",
        "init-declarations": "error",
        "max-depth": "warn",
        "max-nested-callbacks": "warn",
        "max-statements-per-line": "warn",
        "no-alert": "warn",
        "no-array-constructor": "warn",
        "no-caller": "warn",
        "no-case-declarations": "warn",
        "no-class-assign": "warn",
        "no-cond-assign": "error",
        "no-const-assign": "error",
        "no-constant-condition": "warn",
        "no-control-regex": "warn",
        "no-debugger": "error",
        "no-delete-var": "warn",
        "no-div-regex": "warn",
        "no-dupe-args": "error",
        "no-dupe-class-members": "error",
        "no-dupe-keys": "error",
        "no-duplicate-case": "error",
        "no-duplicate-imports": "error",
        "no-else-return": "warn",
        "no-empty-character-class": "warn",
        "no-empty-function": "error",
        "no-empty-pattern": "error",
        "no-empty": "warn",
        "no-eq-null": "error",
        "no-eval": "error",
        "no-ex-assign": "error",
        "no-extend-native": "warn",
        "no-extra-bind": "warn",
        "no-extra-boolean-cast": "warn",
        "no-extra-label": "warn",
        "no-fallthrough": "warn",
        "no-func-assign": "error",
        "no-global-assign": "error",
        "no-implicit-coercion": ["warn", {
            allow: ["~"],
        }],
        "no-implicit-globals": "warn",
        "no-implied-eval": "warn",
        "no-inline-comments": "warn",
        "no-inner-declarations": "warn",
        "no-invalid-regexp": "warn",
        "no-irregular-whitespace": "warn",
        "no-iterator": "warn",
        "no-label-var": "warn",
        "no-labels": "warn",
        "no-lone-blocks": "warn",
        "no-lonely-if": "error",
        "no-mixed-requires": "error",
        "no-multi-str": "warn",
        "no-native-reassign": "error",
        "no-negated-condition": "warn",
        "no-negated-in-lhs": "error",
        "no-new-func": "warn",
        "no-new-object": "warn",
        "no-new-require": "warn",
        "no-new-symbol": "warn",
        "no-new-wrappers": "warn",
        "no-new": "warn",
        "no-obj-calls": "warn",
        "no-octal-escape": "warn",
        "no-octal": "warn",
        "no-param-reassign": "warn",
        "no-path-concat": "warn",
        "no-process-env": "warn",
        "no-process-exit": "warn",
        "no-proto": "warn",
        "no-prototype-builtins": "warn",
        "no-redeclare": "warn",
        "no-regex-spaces": "warn",
        "no-restricted-globals": "warn",
        "no-restricted-imports": "warn",
        "no-restricted-modules": "warn",
        "no-restricted-syntax": "warn",
        "no-return-assign": "error",
        "no-script-url": "warn",
        "no-self-assign": "warn",
        "no-self-compare": "warn",
        "no-sequences": "warn",
        "no-shadow-restricted-names": "warn",
        "no-shadow": "warn",
        "no-sparse-arrays": "warn",
        "no-sync": "warn",
        "no-this-before-super": "warn",
        "no-throw-literal": "warn",
        "no-undef-init": "warn",
        "no-undef": "error",
        "no-unmodified-loop-condition": "warn",
        "no-unneeded-ternary": "error",
        "no-unreachable": "error",
        "no-unsafe-finally": "error",
        "no-unused-expressions": "error",
        "no-unused-labels": "error",
        "no-unused-vars": "error",
        "no-use-before-define": "error",
        "no-useless-call": "warn",
        "no-useless-computed-key": "warn",
        "no-useless-concat": "warn",
        "no-useless-constructor": "warn",
        "no-useless-escape": "warn",
        "no-useless-rename": "warn",
        "no-void": "warn",
        "no-with": "warn",
        "operator-assignment": ["error", "always"],
        "prefer-const": "warn",
        radix: "warn",
        "require-yield": "warn",
        "sort-imports": "warn",
        "spaced-comment": ["error", "always"],
        strict: ["error", "function"],
        "use-isnan": "error",

        "jsdoc/check-tag-names": "warn",
        "jsdoc/check-types": "warn",
        "jsdoc/require-param-description": "off",
        "jsdoc/require-return": "off",
        "jsdoc/require-return-description": "off",
        "jsdoc/require-return-type": "off",

        "valid-typeof": "warn",
        yoda: "warn",
    },

    settings: {
        jsdoc: {
            tagNamePreference: {
                arg: "param",
                argument: "param",
                augments: "extends",
                constructor: "class",
                exception: "throws",
                func: "function",
                method: "function",
                prop: "property",
                return: "returns",
                virtual: "abstract",
                yield: "yields",
            },
            preferredTypes: {
                array: "Array",
                bool: "Boolean",
                boolean: "Boolean",
                number: "Number",
                object: "Object",
                str: "String",
                string: "String",
            },
        },
    },

}, {
    files: ["**/*.esm.js"],

    languageOptions: {
        ecmaVersion: 2024,
        sourceType: "module",
    },
}];

module.exports = config
Æ/«2°%xœm‘OkÂ@Åï~Šö zõ&¥P¡­àŸ^e“LÌ–ÍnÜ�TCéwïdµµˆ‡�%yïýÞÌ±"BÅÜ„išî4Wm–ä®N�³´VÚ²<ä'ûVÍÝ„�3!ÍŒËäo`ò){õ©Cšgiërµ-¨![�Í5…ÁëŠ@Ç†r¦¥óµâþ…kiÂGžŠþ‚¯É2Œ�+Ï8H3¡lå	zg�§"Ê¡ð—ÓE“$ÄÞ¡Ï&`é`UMpe<Ëph¼û�RgÅÈ5¬�Uf›åØÅ£ìž4;ßaTP©ZÃÚî~}ÚE1¾�øŸyeóª··�®ï¾ÞŸ–«ùâí{œ`ÎÐ!BûVËÐÐ%:×â dGbddÙB¿7)»zžAÛ”ŽŒFyaËU%·›]lçJÂ=!	¡Ò'GüöºY­ä>uÙ�›]fü ²Çl½xm’þ/** @type {import('prettier').Config} */

const config = {
  // https://github.com/prettier/prettier/issues/15388#issuecomment-1717746872
  plugins: [require.resolve("@prettier/plugin-xml")],
  bracketSpacing: false,
  printWidth: 88,
  proseWrap: "always",
  semi: true,
  trailingComma: "es5",
  xmlWhitespaceSensitivity: "preserve",
};

module.exports = config;
%gyù±xœÁÁ	€@EÁ»U,L‚y+îW’,ß™Ý.Dz6òY¶\sP]Æ×¤ü>‚:'µýÅà„ŸIxœ}“I£F…ïüŠ–rI„2îfGšDØ`0Ø¼€/4ÍbcÖÆ6þõñd’œ¢Ôñ½÷•T%=: ÉQ†D„S,ä\J0I£\NEˆT„aÂtÉ@
‘—©yªÊ²š
�`§Š(©¹Âqb.~P‹¼ôO^ÁBf™œòé“…p*U©�pÉŸ¼D$&™hÙ ’ª¡ƒ¯)ý5ÉîUómÉ0~iÚ�tõü¥¨h9¥_p{ÿ ù³…çyr2õ^QJ`Ut=¥àëßØ·ÿÅŠ®«üú}ô•eoÁÞÚƒÐ¶¶Úá¬þÒÀ€çhb]ÓtCÓ|Ýwú÷09F` Ä—§I<–µ¦i{ó5mÂ³<=^k…5‡�R=èójÍ kÜhs¸¹îÆ‹ôNžkÏ¶Ã®©sCÆ•‚3fðt<WÎùâwû‹¾6r>CÃ9o(XÉÙ£Æš,¾{fJ‘…Æ˜õ®}¦iÏý¬?.âHj¶Îê$8Ê&ªö3÷h½çXmú’'k×7cymÌ„ÛÚÝ"ŸˆßçL/Æ‚Ç×›R'‚ŽbYvçò}ô&‰¿wá6fÀâíMþ|SÓnÎSzµmÉˆCZ=Ým“ÖzøWnšþ©AÖFËiwÁä-ŽO[·èr·¿1@CQkî?öiÙ\vtiär˜vÂr±Àíö(A¾KÙE°3ê‡¼k²wF}mÅ+ªLêS»H*•Æ!».õ·MÆ[eŠöÊøÛ½‰m²^ï…“g¬�‚ÝOáÓ-"/ô»›ÐµzÚ~ÿ´ã„c{‡P/’~¥9Ñz=c˜d§×8±Tr—‹Gq©>Kk¼}>²�‘uÕ­Jõu¸X�¸Ï'MZøéÂ˜Í´É›´Ö{·êã‰£·.JW™j|ŽìÃçî;k\n$ãîwiQ”9O“�î¨·ÉÃš·E©k‰i»¥ÂûÍ;iå=;T¢pÅöÎcÏ787ÛðÍ�Ê�DNëÎÆ×y D¦_%Ÿ÷ÎëDÏ›¨‡‰»›ñåÑe¿�il>YÙtªGÃ±5ô kª^»3‰A­µË€‹*N~]GìÄ+¯úáÀ€ßN³2?:±Ú.ÿ»ŒG†‚€nªk0�~"#?!¤€|hï`Û>ª„.8ø2L87¸jŠÎÔ�t É¿‘ãvjè$­ð~þNüò'(tvÎ–xœUÌßJÃ0ðû>Å¹w”œ¶iš1Æ@èâEþœÔÈÒ”4S÷H{Ž½˜A§âÍáð}|¿œˆ€‘C‹�6�k4ê�´:¡;bœ¡DÃT5«DS¢+�–BHÝ12ƒÑï¥š†;^¦Âð¶¯Ô1¿Ä—sºœÃ	î¼µTØØëW¿–N»1(¨M[@!Q2Á[„Ö0V•4øœ)ýíÅÍ÷¾þñvS|ó*ÿ“D+®Rõ´¿|†½ÿ€Û8û"ªiy§´¬!¦–Ãq\A¢9Â¤•Ò~eÕ'ªS`/šxê ÿtree d44f09be8547e58e82ae2fb9b85e18a84e58702f
parent ec1bb130858586bc115fb887cef8daac942c1fa1
author noviat-ci-bot <bot+ci@noviat.com> 1790690460 +0000
committer noviat-ci-bot <bot+ci@noviat.com> 1790690460 +0000

update addons table
ž_G¹“xó ÿtree 5c4535470fa7341f317ba5688c29c3a4a159b8a9
author JÃ©rÃ©my Didderen <didderen.jeremy@gmail.com> 1790690228 +0200
committer JÃ©rÃ©my Didderen <didderen.jeremy@gmail.com> 1790690228 +0200

[ADD] scaffold 20.0 from addons-repo-template v8.0.1
¥rN¯«%x[¤ý100644 .copier-answers.yml Cøµ„Ù¥A' ÛdHž1LF®100644 .editorconfig ¿×¬SßŸ?mÈ…78Æ?ÓdD_Þ40000 .github ñyJˆŸ•,•©çß¥¨=100644 .gitignore ú;†ˆÛüžvIfï2ÔêJ©8,‹100644 .pre-commit-config.yaml „fBÅÍÊëƒºö‚EÓ!m� ‰100644 .pylintrc ð7�p=5"ú` 3">‰md100644 .pylintrc-mandatory !*ˆê$¥+ ]}êO´cë0¨aY100644 .ruff.toml 0¬DÖžûßÕ‚Ðä.¼Q=J¾Û100644 README.md :OCYþ‘.G7X‘Ò²X^eŽÿg100644 eslint.config.cjs W1øš‹Â8”Á}þAäÛLþ100644 oca_dependencies.txt ÷°ÕîÐƒ��ƒ±’ÐÖ€ëÑ100644 prettier.config.cjs ælØ,Áäßíí—IY�Dø ÈI«100644 requirements.txt œÑb’#¿,ÛIÇŒ59	¢­È100644 test-requirements.txt w<iv^|¯ …NAE˜’}ZöþAëùèƒhxœ8 ÇÿÛÛ�E{­A˜ÈÅ;‚C¥ëü�Ú±//mäö!ÑòþÊºbù{ÎU‚9„“ré§²¿x¯Pþ# Do NOT update manually; changes here will be overwritten by Copier
_commit: v8.0.1
_src_path: git@github.com:Noviat-CI/addons-repo-template.git
ci_disable_autoinstall_modules: ''
odoo_test_flavor: Both
odoo_version: 20.0
org_slug: Noviat-Generic
rebel_module_groups: []
repo_name: account_ebics
repo_slug: Modules dedicated to manage the EBICS protocol
repo_type: customer
weblate_project_name: noviat-generic-account-ebics-v19

×gœ'ê‚<xœ[ÏÜÉ<áýÄï*“MM„‹sJÓ­““óKóJâS“2“‹''1j³¨«sq ]¦g¤x$ Ûÿ40000 workflows ™ Owð[t[»Øßõ9Ã0©Gö—ä£x³ Lÿ100644 check-version-bump.yml oœä'	´!ÅmmŽô¡6
*100644 pre-commit.yml éý:\´'­1–L>°íÆ8s€¬100644 test.yml ±GÎ:ÿOÔtT­6}áð<÷—È3100644 update-addons-table.yml •È¨ª½?�S)Ò®!©F�4ò­C®³(xƒ|ýname: Check module version bump

on:
  pull_request:
    branches:
      - "20.0*"

jobs:
  check-version-bump:
    runs-on: ubuntu-latest
    name: Check module version bump
    steps:
      - uses: actions/checkout@v7
        with:
          # HEAD is the PR merge commit, HEAD^1 the tip of the base branch
          fetch-depth: 2
      - name: Add Noviat CI Tools to PATH
        run: |
          git clone https://${{ secrets.PRIVATE_TOKEN }}@github.com/Noviat-CI/noviat-ci-tools.git /opt/noviat-ci-tools
          echo "/opt/noviat-ci-tools" >> $GITHUB_PATH
      - name: Check module version bump
        run: check_module_version_bump
„€Ã›»pxôøname: pre-commit

on:
  pull_request:
    branches:
      - "20.0*"
  push:
    branches:
      - "20.0"

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  pre-commit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
      - uses: actions/setup-python@v7
        with:
          python-version: "3.12"
          cache: 'pip'
          cache-dependency-path: '.pre-commit-config.yaml'
      - name: Get python version
        run: echo "PY=$(python -VV | sha256sum | cut -d' ' -f1)" >> $GITHUB_ENV
      - uses: actions/cache@v6
        with:
          path: ~/.cache/pre-commit
          key: pre-commit|${{ env.PY }}|${{ hashFiles('.pre-commit-config.yaml') }}
      - name: Install pre-commit
        run: pip install pre-commit
      - name: Run pre-commit
        run: pre-commit run --all-files --show-diff-on-failure --color=always
        env:
          # Consider valid a PR that changes README fragments but doesn't
          # change the README.rst file itself. It's not really a problem
          # because the bot will update it anyway after merge. This way, we
          # lower the barrier for functional contributors that want to fix the
          # readme fragments, while still letting developers get README
          # auto-generated (which also helps functionals when using runboat).
          # DOCS https://pre-commit.com/#temporarily-disabling-hooks
          SKIP: oca-gen-addon-readme
      - name: Check that all files generated by pre-commit are in git
        run: |
          newfiles="$(git ls-files --others --exclude-from=.gitignore)"
          if [ "$newfiles" != "" ] ; then
              echo "Please check-in the following files:"
              echo "$newfiles"
              exit 1
          fi
Ý¡à±ÇxqŽëname: tests

on:
  pull_request:
    branches:
      - "20.0*"
  push:
    branches:
      - "20.0"

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  unreleased-deps:
    runs-on: ubuntu-latest
    name: Detect unreleased dependencies
    steps:
      - uses: actions/checkout@v7
      - run: |
          for reqfile in requirements.txt test-requirements.txt ; do
              if [ -f ${reqfile} ] ; then
                  result=0
                  # reject non-comment lines that contain a / (i.e. URLs, relative paths)
                  # unless they have a "# SKIP TEST" comment
                  grep "^[^#].*/" ${reqfile} | grep -v "# SKIP TEST" || result=$?
                  if [ $result -eq 0 ] ; then
                      echo "Unreleased dependencies found in ${reqfile}."
                      exit 1
                  fi
              fi
          done
  test:
    runs-on: ubuntu-latest
    container: ${{ matrix.container }}
    name: ${{ matrix.name }}
    permissions:
      pull-requests: write
      contents: write
    strategy:
      fail-fast: false
      matrix:
        include:
          - container: ghcr.io/oca/oca-ci/py3.12-odoo20.0:latest
            name: test with Odoo Community
            odoo_enterprise : 0
            exclude_modules : ""
          - container: ghcr.io/oca/oca-ci/py3.12-odoo20.0:latest
            name: test with Odoo Enterprise
            odoo_enterprise : 1
            exclude_modules : ""
            makepot: "true"
    services:
      postgres:
        image: postgres:16
        env:
          POSTGRES_USER: odoo
          POSTGRES_PASSWORD: odoo
          POSTGRES_DB: odoo
        ports:
          - 5432:5432
    env:
      INSTALL_ADDONS_DIR: "/tmp/addons-merged"
      ADDITIONAL_ADDONS_DIR: "/tmp/additional-addons"
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
      - name: Upgrade pip in container
        run: python -m pip install --upgrade pip
      - name: Install Odoo upgrade util
        run: python -m pip install git+https://github.com/odoo/upgrade-util@master
      - name: Add Noviat CI Tools to PATH
        run: |
          git clone https://${{ secrets.PRIVATE_TOKEN }}@github.com/Noviat-CI/noviat-ci-tools.git /opt/noviat-ci-tools
          echo "/opt/noviat-ci-tools" >> $GITHUB_PATH
      - name: Clone Odoo Enterprise
        if: ${{ matrix.odoo_enterprise == 1 }}
        run : |
          git clone https://${{ secrets.PRIVATE_TOKEN }}@github.com/odoo/enterprise.git --depth 1 -b 20.0 /opt/enterprise
      - name: Clone Noviat Dependencies
        env:
          PRIVATE_TOKEN: ${{ secrets.PRIVATE_TOKEN }}
        run: clone_oca_dependencies_by_noviat
      - name: Create addons path
        run: |
          mkdir -p ${{ env.INSTALL_ADDONS_DIR }}/setup
          find $(realpath $ADDONS_DIR) $(realpath ${{ env.ADDITIONAL_ADDONS_DIR }}) -name __manifest__.py -exec sh -c 'ln -s "$(dirname "$0")" "${{ env.INSTALL_ADDONS_DIR }}"' {} \;
          find $(realpath $ADDONS_DIR) $(realpath ${{ env.ADDITIONAL_ADDONS_DIR }}) -iwholename '*/setup/*/setup.py' -exec sh -c 'ln -s "$(dirname "$0")" "${{ env.INSTALL_ADDONS_DIR }}/setup"' {} \;
          if [ -n ${{ matrix.exclude}} ]
          then
            remove_excluded_modules ${{ env.INSTALL_ADDONS_DIR }} ${{ matrix.exclude }}
          fi
      - name: Update addons path with enterprise
        if: ${{ matrix.odoo_enterprise == 1 }}
        run: |
          echo "ADDONS_PATH=/opt/odoo/addons,/opt/enterprise,${{ env.INSTALL_ADDONS_DIR }}" >> $GITHUB_ENV
      - name: Update addons path without enterprise
        if: ${{ matrix.odoo_enterprise == 0 }}
        run: |
          echo "ADDONS_PATH=/opt/odoo/addons,${{ env.INSTALL_ADDONS_DIR }}" >> $GITHUB_ENV
      - name: Inject GitHub token for Noviat orgs in test-requirements.txt
        run: |
          sed -i -E "s#https://github.com/(Noviat-(Projects|Generic|ARP|Internal))#https://${{ secrets.PRIVATE_TOKEN }}@github.com/\1#g" test-requirements.txt
      - name: Install addons and dependencies
        run: |
          (ADDONS_PATH=${ADDONS_PATH} ADDONS_DIR=${INSTALL_ADDONS_DIR} oca_install_addons)
      - name: Install external dependencies of core addons (not in Odoo requirements.txt)
        run: |
          (ADDONS_DIR=${INSTALL_ADDONS_DIR} noviat_install_odoo_external_dependencies)
      - name: Initialize test db
        run: oca_init_test_database
      - name: Run tests
        run: oca_run_tests
      - name: Generate coverage files
        run: |
          coverage report -m
          coverage xml -o coverage.xml
      - name: Code Coverage Summary Report
        uses: irongut/CodeCoverageSummary@v1.3.0
        with:
          filename: 'coverage.xml'
          badge: true
          format: 'markdown'
          output: 'both'
          hide_complexity: true
      - name: Write to Job Summary
        run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY
      - name: Update .pot files
        run: noviat_export_and_push_pot https://x-access-token:${{ secrets.PRIVATE_TOKEN }}@github.com/${{ github.repository }}
        if: ${{ matrix.makepot == 'true' && github.event_name == 'push' }}
Àë!°LxÀ?ûname: Update addons table after merge

on:
  push:
    branches:
      - "20.0"
    paths-ignore:
      - "README.md"

permissions:
  contents: write

jobs:
  gen-addons-table:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v7
        with:
          persist-credentials: false
          fetch-depth: 0
      - uses: actions/setup-python@v7
        with:
          python-version: "3.12"
      - name: Install pre-commit
        run: pip install pre-commit
      - name: Run the manual hook to (re)generate the addons table
        run: pre-commit run -a --hook-stage manual oca-gen-addons-table
        continue-on-error: true
      - name: Commit & push if changed
        env:
          PUSH_URL: https://x-access-token:${{ secrets.PRIVATE_TOKEN }}@github.com/${{ github.repository }}.git
        run: |
          if ! git diff --quiet; then
            git config user.name  "noviat-ci-bot"
            git config user.email "bot+ci@noviat.com"
            git add -A
            git commit -m "update addons table"
            git remote set-url origin "$PUSH_URL"
            git config --global --add safe.directory "$GITHUB_WORKSPACE"
            git push origin HEAD:20.0
          fi
îkdä½¶xm’ì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$|^.github/|^eslint.config.cjs|^prettier.config.cjs|
  # Maybe reactivate this when all README files include prettier ignore tags?
  ^README\.md$|
  # Library files can have extraneous formatting (even minimized)
  /static/(src/)?lib/|
  # Repos using Sphinx to generate docs don't need prettying
  ^docs/_templates/.*\.html$|
  # Don't bother non-technical authors with formatting issues in docs
  readme/.*\.(rst|md)$|
  # Ignore build and dist directories in addons
  /build/|/dist/|
  # Ignore test files in addons
  /tests/samples/.*|
  # You don't usually want a bot to modify your legal texts
  (LICENSE.*|COPYING.*)
default_language_version:
  python: python3
  node: "22.23.3"
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$"
      - id: en-po-files
        name: en.po files cannot exist
        entry: found a en.po file
        language: fail
        files: '[a-zA-Z0-9_]*/i18n/en\.po$'
  - repo: https://github.com/sbidoul/whool
    rev: v1.3
    hooks:
      - id: whool-init
        additional_dependencies:
          # force a fresh pre-commit env: up-to-date core addons lists and
          # Odoo 20 support (since v1.16.0)
          - manifestoo-core>=1.16.1
  - repo: https://github.com/oca/maintainer-tools
    rev: b8311a95009805a6e5593f0390f52c0fa350117f
    hooks:
      # update the NOT INSTALLABLE ADDONS section above
      - id: oca-update-pre-commit-excluded-addons
      - id: oca-fix-manifest-website
        args: ["https://www.noviat.com/"]
      - id: oca-gen-external-dependencies
        additional_dependencies:
          # an outdated manifestoo-core ignores recent core addons, and wipes
          # requirements.txt on an Odoo series it does not know
          - manifestoo-core>=1.16.1
      - id: oca-gen-addons-table
        stages: [manual]
  - repo: https://github.com/OCA/odoo-pre-commit-hooks
    rev: v0.2.27
    hooks:
      - id: oca-checks-odoo-module
      - id: oca-checks-odoo-module-fixit
        args:
          - --disable=use-header-comments
      - id: oca-checks-po
        args:
          - --disable=po-pretty-format
          - --fix
  - repo: local
    hooks:
      - id: prettier
        name: prettier (with plugin-xml)
        entry: prettier
        args:
          - --write
          - --list-different
          - --ignore-unknown
        types: [text]
        files: \.(css|htm|html|js|json|jsx|less|md|scss|toml|ts|xml|yaml|yml)$
        language: node
        additional_dependencies:
          - "prettier@3.9.9"
          - "@prettier/plugin-xml@3.4.2"
  - repo: local
    hooks:
      - id: eslint
        name: eslint
        entry: eslint
        args:
          - --color
          - --fix
        verbose: true
        types: [javascript]
        language: node
        additional_dependencies:
          - "eslint@10.11.0"
          - "eslint-plugin-jsdoc@65.0.0"
          - "globals@17.12.0"
  - repo: https://github.com/pre-commit/pre-commit-hooks
    rev: v6.0.0
    hooks:
      - id: trailing-whitespace
        # exclude autogenerated files
        exclude: /README\.rst$|\.pot?$
      - id: end-of-file-fixer
        # exclude autogenerated files
        exclude: /README\.rst$|\.pot?$
      - id: debug-statements
      - id: check-case-conflict
      - id: check-docstring-first
      - id: check-executables-have-shebangs
      - id: check-merge-conflict
        # exclude files where underlines are not distinguishable from merge conflicts
        exclude: /README\.rst$|^docs/.*\.rst$
      - id: check-symlinks
      - id: check-xml
      - id: mixed-line-ending
        args: ["--fix=lf"]
  - repo: https://github.com/asottile/pyupgrade
    rev: v3.21.2
    hooks:
      - id: pyupgrade
  - repo: https://github.com/astral-sh/ruff-pre-commit
    rev: v0.16.9
    hooks:
      - id: ruff-check
        args: [--fix, --exit-non-zero-on-fix]
      - id: ruff-format
        # markdown is prettier's job (ruff >= 0.16 also formats its code blocks)
        types_or: [python, pyi, jupyter]
  - repo: https://github.com/OCA/pylint-odoo
    rev: v10.0.11
    hooks:
      - id: pylint_odoo
        name: pylint (optional, core only)
        args:
          - --rcfile=.pylintrc
          - --exit-zero
        verbose: true
      - id: pylint_odoo
        name: pylint-odoo (mandatory, blocking)
        args:
          - --disable=missing-readme
          - --rcfile=.pylintrc-mandatory
        verbose: true
îJá{¶Îxæó[MASTER]
ignore-patterns=["^.*/TODO/.*$"]
load-plugins=pylint_odoo
score=n

[IMPORTS]
# pytz is no longer an Odoo requirement since 20.0 (use zoneinfo)
deprecated-modules=pdb,pudb,ipdb,bs4,pytz

[ODOOLINT]
#readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
manifest-required-authors=Noviat
manifest-required-keys=license
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
valid-odoo-versions=20.0

[MESSAGES CONTROL]
disable=all

# This .pylintrc contains optional AND mandatory checks and is meant to be
# loaded in an IDE to have it check everything, in the hope this will make
# optional checks more visible to contributors who otherwise never look at a
# green travis to see optional checks that failed.
# .pylintrc-mandatory containing only mandatory checks is used the pre-commit
# config as a blocking check.

enable =
    anomalous-backslash-in-string,
    assignment-from-none,
    attribute-deprecated,
    dangerous-default-value,
    deprecated-module,
    development-status-allowed,
    duplicate-key,
    eval-used,
    license-allowed,
    manifest-author-string,
    manifest-deprecated-key,
    # manifest-required-author,
    manifest-required-key,
    manifest-version-format,
    method-compute,
    method-inverse,
    method-required-super,
    method-search,
    pointless-statement,
    pointless-string-statement,
    print-used,
    redundant-keyword-arg,
    reimported,
    return-in-init,
    sql-injection,
    too-few-format-args,
    translation-field,
    translation-required,
    unreachable,
    use-vim-comment,
    # >= 15
    attribute-string-redundant,
    consider-merging-classes-inherited,
    context-overridden,
    except-pass,
    invalid-commit,
    manifest-external-assets,
    manifest-maintainers-list,
    missing-readme,
    missing-return,
    odoo-addons-relative-import,
    odoo-exception-warning,
    renamed-field-parameter,
    resource-not-exist,
    test-folder-imported,
    translation-contains-variable,
    translation-positional-used,
    website-manifest-key-not-valid-uri,
    # >= 16
    external-request-timeout,
    # >= 19
    bad-builtin-groupby,
    category-allowed,
    deprecated-name-get,
    deprecated-odoo-model-method,
    deprecated-self-cr,
    inheritable-method-lambda,
    inheritable-method-string,
    invalid-email,
    manifest-behind-migrations,
    manifest-data-duplicated,
    missing-odoo-file,
    no-raise-unlink,
    no-search-all,
    no-wizard-in-models,
    prohibited-method-override,
    prefer-env-translation,
    translation-format-interpolation,
    translation-format-truncated,
    translation-injection,
    translation-fstring-interpolation,
    translation-not-lazy,
    translation-too-few-args,
    translation-too-many-args,
    translation-unsupported-format,
    no-write-in-compute,
    odoolint,
    # >= 20
    manifest-summary-multiline,
    # messages that do not cause the lint step to fail
    consider-merging-classes-inherited,
    invalid-commit,
    missing-readme,
    odoo-addons-relative-import,
    redefined-builtin


[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
output-format=colorized
reports=no
âe]†³ªx£
\õ[MASTER]
ignore-patterns=["^.*/TODO/.*$"]
load-plugins=pylint_odoo
score=n

[IMPORTS]
# pytz is no longer an Odoo requirement since 20.0 (use zoneinfo)
deprecated-modules=pdb,pudb,ipdb,bs4,pytz

[ODOOLINT]
#readme-template-url="https://github.com/OCA/maintainer-tools/blob/master/template/module/README.rst"
manifest-required-authors=Noviat
manifest-required-keys=license
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
valid-odoo-versions=20.0

[MESSAGES CONTROL]
disable=all

enable =
    anomalous-backslash-in-string,
    assignment-from-none,
    attribute-deprecated,
    dangerous-default-value,
    deprecated-module,
    development-status-allowed,
    duplicate-key,
    eval-used,
    license-allowed,
    manifest-author-string,
    manifest-deprecated-key,
    # manifest-required-author,
    manifest-required-key,
    manifest-version-format,
    method-compute,
    method-inverse,
    method-required-super,
    method-search,
    pointless-statement,
    pointless-string-statement,
    print-used,
    redundant-keyword-arg,
    reimported,
    return-in-init,
    sql-injection,
    too-few-format-args,
    translation-field,
    translation-required,
    unreachable,
    use-vim-comment,
    # >= 15
    attribute-string-redundant,
    consider-merging-classes-inherited,
    context-overridden,
    except-pass,
    invalid-commit,
    manifest-external-assets,
    manifest-maintainers-list,
    missing-readme,
    missing-return,
    odoo-addons-relative-import,
    odoo-exception-warning,
    renamed-field-parameter,
    resource-not-exist,
    test-folder-imported,
    translation-contains-variable,
    translation-positional-used,
    website-manifest-key-not-valid-uri,
    # >= 16
    external-request-timeout,
    # >= 19
    bad-builtin-groupby,
    category-allowed,
    deprecated-name-get,
    deprecated-odoo-model-method,
    deprecated-self-cr,
    inheritable-method-lambda,
    inheritable-method-string,
    invalid-email,
    manifest-behind-migrations,
    manifest-data-duplicated,
    missing-odoo-file,
    no-raise-unlink,
    no-search-all,
    no-wizard-in-models,
    prohibited-method-override,
    prefer-env-translation,
    translation-format-interpolation,
    translation-format-truncated,
    translation-injection,
    translation-fstring-interpolation,
    translation-not-lazy,
    translation-too-few-args,
    translation-too-many-args,
    translation-unsupported-format,
    no-write-in-compute,
    odoolint,
    # >= 20
    manifest-summary-multiline

[REPORTS]
msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}
output-format=colorized
reports=no
DÅ“öµ9x•jü
target-version = "py312"
fix = true

[lint]
# Explicit rule set: ruff >= 0.16 enables 413 rules by default, many of which go
# against Odoo idioms (naive UTC datetimes, `self = self.with_context()`, list
# `_inherit`). "E4", "E7", "E9" and "F" are the defaults of ruff < 0.16.
select = [
    "E4",
    "E7",
    "E9",
    "F",
    "B",
    "C90",
    "E501",  # line too long (default 88)
    "I",  # isort
    "UP",  # pyupgrade
]
extend-safe-fixes = ["UP008"]
exclude = ["setup/*"]

[format]
exclude = ["setup/*"]

[lint.per-file-ignores]
"__init__.py" = ["F401", "I001"]  # ignore unused and unsorted imports in __init__.py
"__manifest__.py" = ["B018"]  # useless expression

[lint.isort]
section-order = ["future", "standard-library", "third-party", "odoo", "odoo-addons", "first-party", "local-folder"]

[lint.isort.sections]
"odoo" = ["odoo"]
"odoo-addons" = ["odoo.addons"]

[lint.mccabe]
max-complexity = 16
öœµ<xÅ:ü[![Pre-commit Status](https://github.com/Noviat-Generic/Modules dedicated to manage the EBICS protocol/actions/workflows/pre-commit.yml/badge.svg?branch=20.0)](https://github.com/Noviat-Generic/Modules dedicated to manage the EBICS protocol/actions/workflows/pre-commit.yml?query=branch%3A20.0)
[![Build Status](https://github.com/Noviat-Generic/Modules dedicated to manage the EBICS protocol/actions/workflows/test.yml/badge.svg?branch=20.0)](https://github.com/Noviat-Generic/Modules dedicated to manage the EBICS protocol/actions/workflows/test.yml?query=branch%3A20.0)
[![Translation state](https://translation.noviat.io/widget/noviat-generic-account-ebics-v19/multi-auto.svg)](https://translation.noviat.io/engage/noviat-generic-account-ebics-v19/)
<!-- /!\ do not modify above this line -->

# account_ebics

<!-- /!\ do not modify below this line -->

<!-- prettier-ignore-start -->

[//]: # (addons)
[//]: # (end addons)

<!-- prettier-ignore-end -->

----
�|Oóé†Rxœ;ÊÞË:AŸO?199¿4¯$>5)3¹xâÅ‰íF‚‰h"“y˜¤'/fDW6œü‰Ioò=F=F®É™$&»1× 3&x¿x àÿopenupgradelib
lxml_html_clean
È‡«%x[¤ý100644 .copier-answers.yml Cøµ„Ù¥A' ÛdHž1LF®100644 .editorconfig ¿×¬SßŸ?mÈ…78Æ?ÓdD_Þ40000 .github ñyJˆŸ•,•©çß¥¨=100644 .gitignore ú;†ˆÛüžvIfï2ÔêJ©8,‹100644 .pre-commit-config.yaml „fBÅÍÊëƒºö‚EÓ!m� ‰100644 .pylintrc ð7�p=5"ú` 3">‰md100644 .pylintrc-mandatory !*ˆê$¥+ ]}êO´cë0¨aY100644 .ruff.toml 0¬DÖžûßÕ‚Ðä.¼Q=J¾Û100644 README.md ¤\ž›/cpòð/æ¬~Øvµ100644 eslint.config.cjs W1øš‹Â8”Á}þAäÛLþ100644 oca_dependencies.txt ÷°ÕîÐƒ��ƒ±’ÐÖ€ëÑ100644 prettier.config.cjs ælØ,Áäßíí—IY�Dø ÈI«100644 requirements.txt œÑb’#¿,ÛIÇŒ59	¢­È100644 test-requirements.txt w<iv^|¯ …NAE˜’}Zö¸ì¸ºBx*Õû[![Pre-commit Status](https://github.com/Noviat-Generic/Modules dedicated to manage the EBICS protocol/actions/workflows/pre-commit.yml/badge.svg?branch=20.0)](https://github.com/Noviat-Generic/Modules dedicated to manage the EBICS protocol/actions/workflows/pre-commit.yml?query=branch%3A20.0)
[![Build Status](https://github.com/Noviat-Generic/Modules dedicated to manage the EBICS protocol/actions/workflows/test.yml/badge.svg?branch=20.0)](https://github.com/Noviat-Generic/Modules dedicated to manage the EBICS protocol/actions/workflows/test.yml?query=branch%3A20.0)
[![Translation state](https://translation.noviat.io/widget/noviat-generic-account-ebics-v19/multi-auto.svg)](https://translation.noviat.io/engage/noviat-generic-account-ebics-v19/)
<!-- /!\ do not modify above this line -->

# account_ebics

<!-- /!\ do not modify below this line -->

<!-- prettier-ignore-start -->

[//]: # (addons)

This part will be replaced when running the oca-gen-addons-table script from OCA/maintainer-tools.

[//]: # (end addons)

<!-- prettier-ignore-end -->

----
Csçgûz.È«lÅ�§ŽSR»¡þ