Name: ai17 cleanup round 2: 0 pylint + 0 ruff violations

State: Failed finished in 15m

PR State: closed

PR Author: David Tran

PR Author Email:

PR: #21

Committer: David Tran

Committer Email: davidtran.hp@gmail.com

Commit: 0dbf6dd9fe0a7af01c90f36bf78a352a0c800080

Description:

                                            [ADD] viindoo: WI15 quality gate test_result — pylint=0 ruff=0 (WI15)
                                            

Branch: 17.0

Instance ID: 0

Age:

Up-time:

Subbuilds Name State Detail
Build 381147 Check the quality with Pylint: from test_lint to test_pylint 14m Failed Log
Build 381148 At install tests: from account to website_twitter 24m Failed Log
Build 381149 Post install tests: step install all modules 14m Failed Log
Build 381150 Post install tests: from account to payment_alipay Failed
Build 381151 Post install tests: from payment_aps to test_viin_web_cohort Failed
Build 381152 Post install tests: from test_website to to_website_apps_store Failed
Build 381153 Post install tests: from to_website_apps_store_loc to viin_estimate_sale Failed
Build 381154 Post install tests: from viin_event_checkin_website to viin_project_gantt Failed
Build 381155 Post install tests: from viin_project_progress to website_twitter Failed
Build 381156 Test install all modules without demo data: from account to website_twitter Killed Log
Create Date Level Message
04/30/2026 14:35:36 INFO
Updated repository Viindoo-odoo
04/30/2026 14:35:36 INFO
Updated repository Viindoo-tvtmaaddons
04/30/2026 14:35:36 INFO
Updated repository Viindoo-erponline-enterprise
04/30/2026 14:35:36 INFO
Updated repository Viindoo-branding
04/30/2026 14:35:36 INFO
Cloned repository Viindoo-ai
04/30/2026 14:50:46 ERROR
Subbuild # 381147: odoo.addons.test_pylint.tests.test_eslint: FAIL: TestESLint.test_eslint Traceback (most recent call last): File "/data/build/Viindoo-tvtmaaddons-17.0/test_pylint/tests/test_eslint.py", line 67, in test_eslint self.assertEqual(process.returncode, 0, msg=f""" AssertionError: 1 != 0 : stdout: /data/build/rb-0dbf6dd-221667/viin_brain/static/tests/components/floating_toolbar_focus_tests.js 47:19 error Replace `⏎············buttons.length·>=·10,⏎············`expected·≥·10·toolbar·buttons,·got·${buttons.length}`⏎········` with `buttons.length·>=·10,·`expected·≥·10·toolbar·buttons,·got·${buttons.length}`` prettier/prettier 96:46 error Replace `⏎················`.o_brain_floating_toolbar·button[title="${title}"]`⏎············` with ``.o_brain_floating_toolbar·button[title="${title}"]`` prettier/prettier /data/build/rb-0dbf6dd-221667/viin_brain_account_reports/static/src/embed_report_lazy_loader.js 40:3 error Insert `··` prettier/prettier 41:1 error Replace `····` with `········` prettier/prettier 42:1 error Insert `····` prettier/prettier 43:1 error Replace `······` with `············` prettier/prettier 44:1 error Replace `········` with `················` prettier/prettier 45:9 error Insert `········` prettier/prettier 46:1 error Insert `··········` prettier/prettier 47:1 error Replace `············` with `························` prettier/prettier 48:1 error Replace `··········}ms`,` with `····················}ms`` prettier/prettier 49:1 error Replace `········` with `················` prettier/prettier 50:1 error Insert `········` prettier/prettier 51:7 error Insert `······` prettier/prettier 52:1 error Replace `······` with `············` prettier/prettier 53:1 error Insert `········` prettier/prettier 54:1 error Replace `········` with `················` prettier/prettier 55:1 error Replace `········` with `················` prettier/prettier 56:9 error Insert `········` prettier/prettier 57:1 error Replace `······},` with `············}` prettier/prettier 58:1 error Replace `····` with `········` prettier/prettier 59:1 error Insert `··` prettier/prettier 60:3 error Insert `··` prettier/prettier 68:3 error Insert `··` prettier/prettier 69:3 error Insert `··` prettier/prettier 70:1 error Replace `····` with `········` prettier/prettier 71:1 error Replace `····` with `········` prettier/prettier 72:1 error Insert `····` prettier/prettier 73:5 error Insert `····` prettier/prettier 74:1 error Replace `··` with `····` prettier/prettier 75:1 error Insert `··` prettier/prettier 79:3 error Insert `··` prettier/prettier 80:1 error Insert `····` prettier/prettier 81:1 error Insert `··` prettier/prettier 82:5 error Insert `····` prettier/prettier 83:1 error Insert `····` prettier/prettier 84:1 error Replace `····console.error(⏎······"[viin_brain_account_reports]·lazy·bundle·load·failed·(block)",⏎······err,` with `········console.error("[viin_brain_account_reports]·lazy·bundle·load·failed·(block)",·err);` prettier/prettier 87:5 error Replace `);` with `}` prettier/prettier 88:3 error Delete `}⏎` prettier/prettier 90:1 error Replace `··` with `····` prettier/prettier 91:1 error Insert `··` prettier/prettier 92:1 error Replace `··` with `····` prettier/prettier 93:1 error Insert `··` prettier/prettier 106:3 error Insert `··` prettier/prettier 107:1 error Insert `··` prettier/prettier 108:1 error Replace `····(el)·=>·el.dataset.staticMount·!==·"editor",` with `········(el)·=>·el.dataset.staticMount·!==·"editor"` prettier/prettier 109:1 error Insert `··` prettier/prettier 110:1 error Insert `··` prettier/prettier 111:1 error Replace `····` with `········` prettier/prettier 112:3 error Insert `··` prettier/prettier 113:1 error Insert `··` prettier/prettier 114:1 error Replace `····` with `········` prettier/prettier 115:1 error Replace `····` with `········` prettier/prettier 116:5 error Insert `····` prettier/prettier 117:1 error Replace `····` with `········` prettier/prettier 118:1 error Replace `······` with `············` prettier/prettier 119:5 error Insert `····` prettier/prettier 120:1 error Replace `····` with `········` prettier/prettier 121:3 error Insert `··` prettier/prettier 122:1 error Insert `··` prettier/prettier 123:5 error Insert `····` prettier/prettier 124:1 error Replace `······` with `············` prettier/prettier 125:1 error Insert `········` prettier/prettier 126:11 error Insert `··········` prettier/prettier 127:1 error Replace `··········` with `····················` prettier/prettier 128:9 error Insert `········` prettier/prettier 129:1 error Insert `······` prettier/prettier 130:5 error Insert `····` prettier/prettier 131:1 error Replace `····{·rootMargin:·ROOT_MARGIN·},` with `········{·rootMargin:·ROOT_MARGIN·}` prettier/prettier 132:1 error Insert `··` prettier/prettier 133:1 error Replace `··` with `····` prettier/prettier 134:5 error Insert `····` prettier/prettier 135:1 error Insert `··` prettier/prettier 143:3 error Insert `··` prettier/prettier 149:1 error Insert `··` prettier/prettier 151:3 error Replace `document.addEventListener(⏎····"DOMContentLoaded",⏎····()·=>·observeReportBlocks(document),` with `··document.addEventListener("DOMContentLoaded",·()·=>·observeReportBlocks(document),·{` prettier/prettier 154:5 error Replace `{·once:·true·}` with `····once:·true` prettier/prettier 155:3 error Insert `··}` prettier/prettier /data/build/rb-0dbf6dd-221667/viin_brain_account_reports/static/src/slash_commands.js 32:3 error Insert `··` prettier/prettier 33:5 error Insert `····` prettier/prettier 34:1 error Insert `····` prettier/prettier 35:1 error Replace `······` with `············` prettier/prettier 36:1 error Insert `········` prettier/prettier 37:1 error Replace `········` with `················` prettier/prettier 38:1 error Insert `········` prettier/prettier 39:9 error Insert `········` prettier/prettier 40:1 error Replace `········` with `················` prettier/prettier 41:1 error Insert `··········` prettier/prettier 42:13 error Insert `············` prettier/prettier 43:1 error Replace `··········}ms`,` with `····················}ms`` prettier/prettier 44:1 error Replace `········` with `················` prettier/prettier 45:1 error Insert `········` prettier/prettier 46:7 error Insert `······` prettier/prettier 47:1 error Insert `······` prettier/prettier 48:1 error Replace `········` with `················` prettier/prettier 49:1 error Replace `········` with `················` prettier/prettier 50:7 error Replace `},` with `······}` prettier/prettier 51:5 error Insert `····` prettier/prettier 52:3 error Insert `··` prettier/prettier 53:1 error Insert `··` prettier/prettier 59:3 error Insert `··` prettier/prettier 60:5 error Insert `····` prettier/prettier 61:1 error Replace `····(c)·=>·({·"<":·"&lt;",·">":·"&gt;",·"&":·"&amp;",·'"':·"&quot;"·})[c],` with `········(c)·=>·({·"<":·"&lt;",·">":·"&gt;",·"&":·"&amp;",·'"':·"&quot;"·}[c])` prettier/prettier 62:1 error Insert `··` prettier/prettier 66:1 error Insert `··` prettier/prettier 67:5 error Insert `····` prettier/prettier 68:1 error Insert `··` prettier/prettier 69:3 error Replace `return·(⏎····"brain-report-"·+⏎····Date.now().toString(36)·+⏎····Math.random().toString(36).slice(2,·6)⏎··` with `··return·"brain-report-"·+·Date.now().toString(36)·+·Math.random().toString(36).slice(2,·6` prettier/prettier 77:3 error Insert `··` prettier/prettier 78:1 error Insert `····` prettier/prettier 79:3 error Insert `··` prettier/prettier 80:1 error Insert `··` prettier/prettier 81:3 error Insert `··` prettier/prettier 82:1 error Replace `····` with `········` prettier/prettier 83:3 error Insert `··` prettier/prettier 84:1 error Replace `··` with `····` prettier/prettier 85:1 error Insert `··` prettier/prettier 86:1 error Replace `··` with `····` prettier/prettier 87:1 error Insert `··` prettier/prettier 88:3 error Insert `··` prettier/prettier 91:34 error Replace `⏎··snapshotId,⏎··capturedByName,⏎··capturedAt,⏎··reportId,⏎` with `·snapshotId,·capturedByName,·capturedAt,·reportId·` prettier/prettier 97:3 error Replace `const·reportUrl·=⏎···` with `··const·reportUrl·=` prettier/prettier 99:1 error Replace `··` with `····` prettier/prettier 100:1 error Insert `····` prettier/prettier 101:7 error Replace `"Viewers·see·the·same·data·regardless·of·their·own·ACL.",` with `······"Viewers·see·the·same·data·regardless·of·their·own·ACL."` prettier/prettier 102:1 error Replace `··` with `····` prettier/prettier 103:1 error Insert `··` prettier/prettier 104:3 error Insert `··` prettier/prettier 105:1 error Replace `····` with `········` prettier/prettier 106:1 error Insert `····` prettier/prettier 107:3 error Insert `··` prettier/prettier 108:1 error Insert `····` prettier/prettier 109:1 error Insert `····` prettier/prettier 110:1 error Replace `····` with `········` prettier/prettier 111:1 error Replace `····` with `········` prettier/prettier 112:1 error Replace `····` with `········` prettier/prettier 113:1 error Insert `····` prettier/prettier 114:5 error Insert `····` prettier/prettier 115:1 error Insert `····` prettier/prettier 116:5 error Insert `····` prettier/prettier 117:1 error Replace `··` with `····` prettier/prettier 121:3 error Insert `··` prettier/prettier 122:1 error Replace `··` with `····` prettier/prettier 123:1 error Insert `··` prettier/prettier 124:3 error Insert `··` prettier/prettier 125:1 error Replace `··` with `····` prettier/prettier 126:1 error Insert `··` prettier/prettier 127:3 error Insert `··` prettier/prettier 129:1 error Insert `··` prettier/prettier 130:1 error Replace `····` with `········` prettier/prettier 131:1 error Insert `····` prettier/prettier 132:1 error Replace `····` with `········` prettier/prettier 133:1 error Replace `····` with `········` prettier/prettier 134:1 error Replace `··` with `····` prettier/prettier 135:1 error Insert `··` prettier/prettier 136:3 error Insert `··` prettier/prettier 137:1 error Replace `··` with `····` prettier/prettier 138:1 error Insert `··` prettier/prettier 139:1 error Replace `··` with `····` prettier/prettier 140:1 error Insert `··` prettier/prettier 141:3 error Insert `··` prettier/prettier 142:1 error Insert `····` prettier/prettier 143:5 error Insert `····` prettier/prettier 144:1 error Replace `····` with `········` prettier/prettier 145:1 error Insert `····` prettier/prettier 146:1 error Replace `····` with `········` prettier/prettier 147:1 error Insert `····` prettier/prettier 148:5 error Insert `····` prettier/prettier 149:1 error Replace `····` with `········` prettier/prettier 150:5 error Insert `····` prettier/prettier 151:1 error Replace `····` with `········` prettier/prettier 152:1 error Replace `····` with `········` prettier/prettier 153:5 error Insert `····` prettier/prettier 154:1 error Insert `····` prettier/prettier 155:1 error Insert `····` prettier/prettier 156:3 error Insert `··` prettier/prettier 162:3 error Insert `··` prettier/prettier 163:1 error Insert `····` prettier/prettier 164:1 error Replace `······` with `············` prettier/prettier 165:1 error Replace `······:·wysiwyg.odooEditor·&&⏎········wysiwyg.odooEditor.options·&&⏎·······` with `············:·wysiwyg.odooEditor·&&·wysiwyg.odooEditor.options·&&` prettier/prettier 168:1 error Insert `··` prettier/prettier 169:1 error Replace `····` with `········` prettier/prettier 170:3 error Insert `··` prettier/prettier 172:1 error Replace `··const·bodyEl·=·document.querySelector(⏎····".o_brain_editor_body_edit[data-page-id]",⏎··` with `····const·bodyEl·=·document.querySelector(".o_brain_editor_body_edit[data-page-id]"` prettier/prettier 175:1 error Insert `··` prettier/prettier 176:3 error Insert `··` prettier/prettier 177:1 error Replace `····` with `········` prettier/prettier 178:3 error Insert `··` prettier/prettier 180:1 error Replace `··` with `····` prettier/prettier 181:3 error Insert `··` prettier/prettier 182:1 error Replace `··` with `····` prettier/prettier 183:1 error Insert `··` prettier/prettier 184:3 error Insert `··` prettier/prettier 185:1 error Insert `····` prettier/prettier 186:3 error Insert `··` prettier/prettier 187:1 error Replace `····env.services.notification.add(⏎······_t("Failed·to·load·report·editor·—·please·refresh."),` with `········env.services.notification.add(_t("Failed·to·load·report·editor·—·please·refresh."),·{` prettier/prettier 189:1 error Replace `······{·type:·"danger"·}` with `············type:·"danger"` prettier/prettier 190:1 error Replace `····` with `········}` prettier/prettier 191:1 error Insert `····` prettier/prettier 192:5 error Replace `console.error(⏎······"[viin_brain_account_reports]·lazy·bundle·failed·(slash·command)",⏎······err,` with `····console.error("[viin_brain_account_reports]·lazy·bundle·failed·(slash·command)",·err);` prettier/prettier 195:5 error Delete `);⏎` prettier/prettier 197:3 error Insert `··` prettier/prettier 199:1 error Replace `··const·{·EmbedReportPicker·}·=⏎···` with `····const·{·EmbedReportPicker·}·=` prettier/prettier 202:3 error Insert `··` prettier/prettier 203:1 error Replace `····` with `········` prettier/prettier 204:1 error Insert `······` prettier/prettier 205:1 error Replace `······` with `············` prettier/prettier 206:1 error Replace `······` with `············` prettier/prettier 207:1 error Replace `········result·=·await·env.services.rpc(⏎··········"/viin_brain_account_reports/embed/capture",` with `················result·=·await·env.services.rpc("/viin_brain_account_reports/embed/capture",·{` prettier/prettier 209:9 error Delete `··{⏎` prettier/prettier 211:1 error Replace `············` with `····················` prettier/prettier 212:1 error Insert `········` prettier/prettier 213:1 error Replace `············` with `····················` prettier/prettier 214:1 error Insert `········` prettier/prettier 215:11 error Replace `},⏎········` with `······}` prettier/prettier 217:1 error Insert `······` prettier/prettier 218:1 error Replace `········env.services.notification.add(⏎··········(err·&&·err.message)·||·_t("Capture·failed"),` with `················env.services.notification.add((err·&&·err.message)·||·_t("Capture·failed"),·{` prettier/prettier 220:9 error Delete `··{⏎` prettier/prettier 222:1 error Replace `··········},` with `················});` prettier/prettier 223:9 error Delete `);⏎` prettier/prettier 225:1 error Replace `······` with `············` prettier/prettier 226:1 error Insert `······` prettier/prettier 227:1 error Replace `········` with `················` prettier/prettier 228:9 error Insert `········` prettier/prettier 229:1 error Replace `········` with `················` prettier/prettier 230:7 error Insert `······` prettier/prettier 231:1 error Replace `······const·capturedByName·=⏎·······` with `············const·capturedByName·=` prettier/prettier 233:7 error Insert `······` prettier/prettier 234:1 error Replace `········` with `················` prettier/prettier 235:9 error Insert `········` prettier/prettier 236:1 error Replace `········` with `················` prettier/prettier 237:1 error Insert `········` prettier/prettier 238:1 error Replace `········` with `················` prettier/prettier 239:1 error Replace `········` with `················` prettier/prettier 240:1 error Insert `········` prettier/prettier 241:1 error Replace `······` with `············` prettier/prettier 242:1 error Insert `······` prettier/prettier 243:1 error Insert `····` prettier/prettier 244:5 error Insert `····` prettier/prettier 245:1 error Insert `··` prettier/prettier 250:3 error Insert `··` prettier/prettier 251:1 error Insert `··` prettier/prettier 252:3 error Replace `description:⏎···` with `··description:` prettier/prettier 254:3 error Insert `··` prettier/prettier 255:1 error Insert `··` prettier/prettier 256:3 error Insert `··` prettier/prettier 261:3 error Insert `··` prettier/prettier 262:1 error Insert `··` prettier/prettier ✖ 248 problems (248 errors, 0 warnings) 248 errors and 0 warnings potentially fixable with the `--fix` option. Perhaps you might benefit from installing the tooling found at: https://github.com/odoo/odoo/wiki/Javascript-coding-guidelines#use-a-linter stderr:
04/30/2026 14:50:46 ERROR
Subbuild # 381147: odoo.addons.test_pylint.tests.test_flake8: FAIL: TestFlake8.test_flake8 Traceback (most recent call last): File "/data/build/Viindoo-tvtmaaddons-17.0/test_pylint/tests/test_flake8.py", line 91, in test_flake8 self.fail("flake8 test failed:\n" + (b"\n" + out + b"\n" + err).decode('utf-8').strip()) AssertionError: flake8 test failed: /data/build/rb-0dbf6dd-221667/viin_brain/tests/test_brain_page_dual_content.py:26:1: E302 expected 2 blank lines, found 1 /data/build/rb-0dbf6dd-221667/viin_brain/tests/test_perf_large_vault.py:34:1: E402 module level import not at top of file /data/build/rb-0dbf6dd-221667/viin_ai_search/tests/test_search_controller.py:9:1: E302 expected 2 blank lines, found 1 /data/build/rb-0dbf6dd-221667/viin_ai_chat/tests/test_tool_confirm.py:19:1: E302 expected 2 blank lines, found 1 /data/build/rb-0dbf6dd-221667/viin_ai_chat/tests/test_tour_wi18c_chat.py:17:1: E302 expected 2 blank lines, found 1
04/30/2026 14:50:46 ERROR
Subbuild # 381147: odoo.modules.loading: Module test_pylint: 2 failures, 0 errors of 7 tests
04/30/2026 14:50:46 ERROR
Subbuild # 381147: odoo.modules.loading: At least one test failed when loading the modules.
04/30/2026 14:50:46 ERROR
Subbuild # 381147: odoo.tests.result: 2 failed, 0 error(s) of 24 tests when loading database 'rb-0dbf6dd-221667-381147'
04/30/2026 15:00:49 WARNING
Subbuild # 381148: odoo.modules.loading: Transient module states were reset
04/30/2026 15:00:49 ERROR
Subbuild # 381148: odoo.modules.registry: Failed to load registry Traceback (most recent call last): File "/data/build/Viindoo-odoo-17.0/odoo/modules/registry.py", line 110, in new odoo.modules.load_modules(registry, force_demo, status, update_module) File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 485, in load_modules processed_modules += load_marked_modules(env, graph, File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 366, in load_marked_modules loaded, processed = load_module_graph( File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 196, in load_module_graph model_names = registry.load(env.cr, package) File "/data/build/Viindoo-odoo-17.0/odoo/modules/registry.py", line 267, in load model = cls._build_model(self, cr) File "/data/build/Viindoo-odoo-17.0/odoo/models.py", line 740, in _build_model raise TypeError("Model %r inherits from non-existing model %r." % (name, parent)) TypeError: Model 'res.partner' inherits from non-existing model 'viin.brain.linkable'.
04/30/2026 15:00:49 CRITICAL
Subbuild # 381148: odoo.service.server: Failed to initialize database `rb-0dbf6dd-221667-381148`. Traceback (most recent call last): File "/data/build/Viindoo-odoo-17.0/odoo/service/server.py", line 1374, in preload_registries registry = Registry.new(dbname, update_module=update_module) File "<decorator-gen-16>", line 2, in new File "/data/build/Viindoo-odoo-17.0/odoo/tools/func.py", line 87, in locked return func(inst, *args, **kwargs) File "/data/build/Viindoo-odoo-17.0/odoo/modules/registry.py", line 110, in new odoo.modules.load_modules(registry, force_demo, status, update_module) File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 485, in load_modules processed_modules += load_marked_modules(env, graph, File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 366, in load_marked_modules loaded, processed = load_module_graph( File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 196, in load_module_graph model_names = registry.load(env.cr, package) File "/data/build/Viindoo-odoo-17.0/odoo/modules/registry.py", line 267, in load model = cls._build_model(self, cr) File "/data/build/Viindoo-odoo-17.0/odoo/models.py", line 740, in _build_model raise TypeError("Model %r inherits from non-existing model %r." % (name, parent)) TypeError: Model 'res.partner' inherits from non-existing model 'viin.brain.linkable'.
04/30/2026 14:50:46 WARNING
Subbuild # 381149: odoo.modules.loading: Transient module states were reset
04/30/2026 14:50:46 ERROR
Subbuild # 381149: odoo.modules.registry: Failed to load registry Traceback (most recent call last): File "/data/build/Viindoo-odoo-17.0/odoo/modules/registry.py", line 110, in new odoo.modules.load_modules(registry, force_demo, status, update_module) File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 485, in load_modules processed_modules += load_marked_modules(env, graph, File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 366, in load_marked_modules loaded, processed = load_module_graph( File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 196, in load_module_graph model_names = registry.load(env.cr, package) File "/data/build/Viindoo-odoo-17.0/odoo/modules/registry.py", line 267, in load model = cls._build_model(self, cr) File "/data/build/Viindoo-odoo-17.0/odoo/models.py", line 740, in _build_model raise TypeError("Model %r inherits from non-existing model %r." % (name, parent)) TypeError: Model 'res.partner' inherits from non-existing model 'viin.brain.linkable'.
04/30/2026 14:50:46 CRITICAL
Subbuild # 381149: odoo.service.server: Failed to initialize database `rb-0dbf6dd-221667-381149`. Traceback (most recent call last): File "/data/build/Viindoo-odoo-17.0/odoo/service/server.py", line 1374, in preload_registries registry = Registry.new(dbname, update_module=update_module) File "<decorator-gen-16>", line 2, in new File "/data/build/Viindoo-odoo-17.0/odoo/tools/func.py", line 87, in locked return func(inst, *args, **kwargs) File "/data/build/Viindoo-odoo-17.0/odoo/modules/registry.py", line 110, in new odoo.modules.load_modules(registry, force_demo, status, update_module) File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 485, in load_modules processed_modules += load_marked_modules(env, graph, File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 366, in load_marked_modules loaded, processed = load_module_graph( File "/data/build/Viindoo-odoo-17.0/odoo/modules/loading.py", line 196, in load_module_graph model_names = registry.load(env.cr, package) File "/data/build/Viindoo-odoo-17.0/odoo/modules/registry.py", line 267, in load model = cls._build_model(self, cr) File "/data/build/Viindoo-odoo-17.0/odoo/models.py", line 740, in _build_model raise TypeError("Model %r inherits from non-existing model %r." % (name, parent)) TypeError: Model 'res.partner' inherits from non-existing model 'viin.brain.linkable'.