11from astroid import MANAGER , AstroidImportError , inference_tip , nodes
22from astroid .nodes import scoped_nodes
33
4- from pylint_django import utils
4+ from pylint_django import compat , utils
55
66_STR_FIELDS = (
77 "CharField" ,
@@ -46,7 +46,7 @@ def is_model_or_form_field(cls):
4646 return is_model_field (cls ) or is_form_field (cls )
4747
4848
49- def apply_type_shim (cls , _context = None ):
49+ def apply_type_shim (cls , _context = None ): # pylint: disable=too-many-statements
5050 if cls .name in _STR_FIELDS :
5151 base_nodes = scoped_nodes .builtin_lookup ("str" )
5252 elif cls .name in _INT_FIELDS :
@@ -61,13 +61,25 @@ def apply_type_shim(cls, _context=None):
6161 except AstroidImportError :
6262 base_nodes = MANAGER .ast_from_module_name ("_pydecimal" ).lookup ("Decimal" )
6363 elif cls .name in ("SplitDateTimeField" , "DateTimeField" ):
64- base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("datetime" )
64+ if compat .COMPILED_DATETIME_CLASSES :
65+ base_nodes = MANAGER .ast_from_module_name ("_pydatetime" ).lookup ("datetime" )
66+ else :
67+ base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("datetime" )
6568 elif cls .name == "TimeField" :
66- base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("time" )
69+ if compat .COMPILED_DATETIME_CLASSES :
70+ base_nodes = MANAGER .ast_from_module_name ("_pydatetime" ).lookup ("time" )
71+ else :
72+ base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("time" )
6773 elif cls .name == "DateField" :
68- base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("date" )
74+ if compat .COMPILED_DATETIME_CLASSES :
75+ base_nodes = MANAGER .ast_from_module_name ("_pydatetime" ).lookup ("date" )
76+ else :
77+ base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("date" )
6978 elif cls .name == "DurationField" :
70- base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("timedelta" )
79+ if compat .COMPILED_DATETIME_CLASSES :
80+ base_nodes = MANAGER .ast_from_module_name ("_pydatetime" ).lookup ("timedelta" )
81+ else :
82+ base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("timedelta" )
7183 elif cls .name == "UUIDField" :
7284 base_nodes = MANAGER .ast_from_module_name ("uuid" ).lookup ("UUID" )
7385 elif cls .name == "ManyToManyField" :
0 commit comments