1
1
from astroid import MANAGER , AstroidImportError , inference_tip , nodes
2
2
from astroid .nodes import scoped_nodes
3
3
4
- from pylint_django import utils
4
+ from pylint_django import compat , utils
5
5
6
6
_STR_FIELDS = (
7
7
"CharField" ,
@@ -46,7 +46,7 @@ def is_model_or_form_field(cls):
46
46
return is_model_field (cls ) or is_form_field (cls )
47
47
48
48
49
- def apply_type_shim (cls , _context = None ):
49
+ def apply_type_shim (cls , _context = None ): # pylint: disable=too-many-statements
50
50
if cls .name in _STR_FIELDS :
51
51
base_nodes = scoped_nodes .builtin_lookup ("str" )
52
52
elif cls .name in _INT_FIELDS :
@@ -61,13 +61,25 @@ def apply_type_shim(cls, _context=None):
61
61
except AstroidImportError :
62
62
base_nodes = MANAGER .ast_from_module_name ("_pydecimal" ).lookup ("Decimal" )
63
63
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" )
65
68
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" )
67
73
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" )
69
78
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" )
71
83
elif cls .name == "UUIDField" :
72
84
base_nodes = MANAGER .ast_from_module_name ("uuid" ).lookup ("UUID" )
73
85
elif cls .name == "ManyToManyField" :
0 commit comments