16
16
from .registry import get_global_registry
17
17
from .resolvers import get_attr_resolver , get_custom_resolver
18
18
19
+
20
+ class DummyImport :
21
+ def __getattr__ (self , name ):
22
+ return object
23
+
24
+
19
25
try :
20
- from sqlalchemy_utils import ChoiceType , JSONType , ScalarListType , TSVectorType
26
+ import sqlalchemy_utils
21
27
except ImportError :
22
- ChoiceType = JSONType = ScalarListType = TSVectorType = object
28
+ sqlalchemy_utils = DummyImport ()
23
29
24
30
25
31
is_selectin_available = getattr (strategies , 'SelectInLoader' , None )
@@ -183,7 +189,11 @@ def convert_sqlalchemy_type(type, column, registry=None):
183
189
@convert_sqlalchemy_type .register (postgresql .UUID )
184
190
@convert_sqlalchemy_type .register (postgresql .INET )
185
191
@convert_sqlalchemy_type .register (postgresql .CIDR )
186
- @convert_sqlalchemy_type .register (TSVectorType )
192
+ @convert_sqlalchemy_type .register (sqlalchemy_utils .TSVectorType )
193
+ @convert_sqlalchemy_type .register (sqlalchemy_utils .UUIDType )
194
+ @convert_sqlalchemy_type .register (sqlalchemy_utils .EmailType )
195
+ @convert_sqlalchemy_type .register (sqlalchemy_utils .URLType )
196
+ @convert_sqlalchemy_type .register (sqlalchemy_utils .IPAddressType )
187
197
def convert_column_to_string (type , column , registry = None ):
188
198
return String
189
199
@@ -218,7 +228,7 @@ def convert_enum_to_enum(type, column, registry=None):
218
228
219
229
220
230
# TODO Make ChoiceType conversion consistent with other enums
221
- @convert_sqlalchemy_type .register (ChoiceType )
231
+ @convert_sqlalchemy_type .register (sqlalchemy_utils . ChoiceType )
222
232
def convert_choice_to_enum (type , column , registry = None ):
223
233
name = "{}_{}" .format (column .table .name , column .name ).upper ()
224
234
if isinstance (type .choices , EnumMeta ):
@@ -229,7 +239,7 @@ def convert_choice_to_enum(type, column, registry=None):
229
239
return Enum (name , type .choices )
230
240
231
241
232
- @convert_sqlalchemy_type .register (ScalarListType )
242
+ @convert_sqlalchemy_type .register (sqlalchemy_utils . ScalarListType )
233
243
def convert_scalar_list_to_list (type , column , registry = None ):
234
244
return List (String )
235
245
@@ -248,6 +258,6 @@ def convert_json_to_string(type, column, registry=None):
248
258
return JSONString
249
259
250
260
251
- @convert_sqlalchemy_type .register (JSONType )
261
+ @convert_sqlalchemy_type .register (sqlalchemy_utils . JSONType )
252
262
def convert_json_type_to_string (type , column , registry = None ):
253
263
return JSONString
0 commit comments