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 compat
4
5
from pylint_django import utils
5
6
6
7
_STR_FIELDS = (
@@ -46,7 +47,7 @@ def is_model_or_form_field(cls):
46
47
return is_model_field (cls ) or is_form_field (cls )
47
48
48
49
49
- def apply_type_shim (cls , _context = None ):
50
+ def apply_type_shim (cls , _context = None ): # pylint: disable=too-many-statements
50
51
if cls .name in _STR_FIELDS :
51
52
base_nodes = scoped_nodes .builtin_lookup ("str" )
52
53
elif cls .name in _INT_FIELDS :
@@ -61,13 +62,25 @@ def apply_type_shim(cls, _context=None):
61
62
except AstroidImportError :
62
63
base_nodes = MANAGER .ast_from_module_name ("_pydecimal" ).lookup ("Decimal" )
63
64
elif cls .name in ("SplitDateTimeField" , "DateTimeField" ):
64
- base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("datetime" )
65
+ if compat .COMPILED_DATETIME_CLASSES :
66
+ base_nodes = MANAGER .ast_from_module_name ("_pydatetime" ).lookup ("datetime" )
67
+ else :
68
+ base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("datetime" )
65
69
elif cls .name == "TimeField" :
66
- base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("time" )
70
+ if compat .COMPILED_DATETIME_CLASSES :
71
+ base_nodes = MANAGER .ast_from_module_name ("_pydatetime" ).lookup ("time" )
72
+ else :
73
+ base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("time" )
67
74
elif cls .name == "DateField" :
68
- base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("date" )
75
+ if compat .COMPILED_DATETIME_CLASSES :
76
+ base_nodes = MANAGER .ast_from_module_name ("_pydatetime" ).lookup ("date" )
77
+ else :
78
+ base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("date" )
69
79
elif cls .name == "DurationField" :
70
- base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("timedelta" )
80
+ if compat .COMPILED_DATETIME_CLASSES :
81
+ base_nodes = MANAGER .ast_from_module_name ("_pydatetime" ).lookup ("timedelta" )
82
+ else :
83
+ base_nodes = MANAGER .ast_from_module_name ("datetime" ).lookup ("timedelta" )
71
84
elif cls .name == "UUIDField" :
72
85
base_nodes = MANAGER .ast_from_module_name ("uuid" ).lookup ("UUID" )
73
86
elif cls .name == "ManyToManyField" :
0 commit comments