File tree Expand file tree Collapse file tree 3 files changed +41
-0
lines changed Expand file tree Collapse file tree 3 files changed +41
-0
lines changed Original file line number Diff line number Diff line change
1
+ # flake8: noqa
2
+
3
+ from .readonly import readonly
4
+ from .converter import converter
Original file line number Diff line number Diff line change
1
+ from cellengine .utils .helpers import to_camel_case
2
+ from attr import has , fields
3
+ from cattr .converters import GenConverter
4
+ from cattr .gen import make_dict_unstructure_fn , make_dict_structure_fn , override
5
+
6
+
7
+ def get_converter ():
8
+ converter = GenConverter ()
9
+
10
+ def to_camel_case_unstructure (cls ):
11
+ return make_dict_unstructure_fn (
12
+ cls ,
13
+ converter ,
14
+ ** {a .name : override (rename = to_camel_case (a .name )) for a in fields (cls )}
15
+ )
16
+
17
+ def to_camel_case_structure (cls ):
18
+ return make_dict_structure_fn (
19
+ cls ,
20
+ converter ,
21
+ ** {a .name : override (rename = to_camel_case (a .name )) for a in fields (cls )}
22
+ )
23
+
24
+ converter .register_unstructure_hook_factory (has , to_camel_case_unstructure )
25
+ converter .register_structure_hook_factory (has , to_camel_case_structure )
26
+
27
+ return converter
28
+
29
+
30
+ converter = get_converter ()
Original file line number Diff line number Diff line change @@ -18,6 +18,13 @@ def check_id(_id):
18
18
ValueError ("Object has an invalid ID." , e )
19
19
20
20
21
+ def to_camel_case (snake_str : str ) -> str :
22
+ if snake_str == "_id" :
23
+ return snake_str
24
+ components = snake_str .split ("_" )
25
+ return components [0 ] + "" .join (x .title () for x in components [1 :])
26
+
27
+
21
28
def get_args_as_kwargs (cls_context , locals ):
22
29
# fmt: off
23
30
arg_names = cls_context .create .__code__ .co_varnames [
You can’t perform that action at this time.
0 commit comments