From d2ccca22fea4c400b6f0017090d503c67bb805b3 Mon Sep 17 00:00:00 2001 From: Thomas DA COSTA Date: Mon, 6 Feb 2023 10:09:33 +0100 Subject: [PATCH] Hardcode Oscar and Django contrib models ref https://github.com/PyCQA/pylint-django/issues/243 --- pylint_django/transforms/foreignkey.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pylint_django/transforms/foreignkey.py b/pylint_django/transforms/foreignkey.py index fc5b1c6e..3ac08095 100644 --- a/pylint_django/transforms/foreignkey.py +++ b/pylint_django/transforms/foreignkey.py @@ -116,8 +116,19 @@ def infer_key_classes(node, context=None): ) from exep # ensure that module is loaded in astroid_cache, for cases when models is a package - if module_name not in MANAGER.astroid_cache: - MANAGER.ast_from_module_name(module_name) + for prefix in ['', 'oscar.apps.', 'django.contrib.']: + try: + if prefix + module_name not in MANAGER.astroid_cache: + MANAGER.ast_from_module_name(prefix + module_name) + except exceptions.AstroidImportError: + continue + else: + # We've imported without a crash! + module_name = prefix + module_name + break + else: + # We've exhausted the prefixes + raise ImportError(f'Could not import {module_name}') # create list from dict_values, because it may be modified in a loop for module in list(MANAGER.astroid_cache.values()):