@@ -293,10 +293,7 @@ def _generate_imports(
293293
294294 # Collect all imports needed
295295 imports = self ._collect_imports (proto_file )
296-
297- # Import the generated utility module
298- utils_module = self ._get_utils_module_path ()
299- imports .add (f"import { utils_module } as _utils" )
296+ imports .add (f"import { self ._get_utils_module_path ()} " )
300297
301298 # Generate cross file imports
302299 if imports :
@@ -464,8 +461,9 @@ def _generate_to_dict(
464461 f'_result["{ field .json_name } "] = self.{ field .name } '
465462 )
466463 else :
464+ utils = self ._get_utils_module_path ()
467465 writer .writeln (
468- f'_result["{ field .json_name } "] = _utils .encode_repeated('
466+ f'_result["{ field .json_name } "] = { utils } .encode_repeated('
469467 f"self.{ field .name } , lambda _v: { item_expr } )"
470468 )
471469 else :
@@ -518,21 +516,22 @@ def _get_serialization_expr(
518516 self , field_type : ProtoType , field_name : str , var_name : str
519517 ) -> str :
520518 """Get the Python expression to serialize a value of a given type."""
519+ utils = self ._get_utils_module_path ()
521520 if field_type .is_message :
522521 return f"{ var_name } .to_dict()"
523522 if field_type .is_enum :
524523 return f"builtins.int({ var_name } )"
525524 if is_hex_encoded_field (field_name ):
526- return f"_utils .encode_hex({ var_name } )"
525+ return f"{ utils } .encode_hex({ var_name } )"
527526 if is_int64_type (field_type .proto_type ):
528- return f"_utils .encode_int64({ var_name } )"
527+ return f"{ utils } .encode_int64({ var_name } )"
529528 if is_bytes_type (field_type .proto_type ):
530- return f"_utils .encode_base64({ var_name } )"
529+ return f"{ utils } .encode_base64({ var_name } )"
531530 if field_type .proto_type in (
532531 descriptor .FieldDescriptorProto .TYPE_FLOAT ,
533532 descriptor .FieldDescriptorProto .TYPE_DOUBLE ,
534533 ):
535- return f"_utils .encode_float({ var_name } )"
534+ return f"{ utils } .encode_float({ var_name } )"
536535
537536 return var_name
538537
@@ -557,7 +556,8 @@ def _generate_from_dict(
557556 f" { message .name } instance" ,
558557 ]
559558 )
560- writer .writeln ('_utils.validate_type(data, builtins.dict, "data")' )
559+ utils = self ._get_utils_module_path ()
560+ writer .writeln (f'{ utils } .validate_type(data, builtins.dict, "data")' )
561561 writer .writeln ("_args = {}" )
562562 writer .blank_line ()
563563
@@ -582,7 +582,7 @@ def _generate_from_dict(
582582 field_type , field .name , "_v" , message
583583 )
584584 writer .writeln (
585- f'_args["{ field .name } "] = _utils .decode_repeated('
585+ f'_args["{ field .name } "] = { utils } .decode_repeated('
586586 f'_value, lambda _v: { item_expr } , "{ field .name } ")'
587587 )
588588 else :
@@ -640,6 +640,7 @@ def _generate_deserialization_statements(
640640 ) -> None :
641641 """Generate validation and assignment statements for a field."""
642642 field_type = field .field_type
643+ utils = self ._get_utils_module_path ()
643644 if field_type .is_message and (type_name := field_type .type_name ):
644645 msg_type = self ._resolve_message_type (type_name , message )
645646 writer .writeln (
@@ -648,36 +649,36 @@ def _generate_deserialization_statements(
648649 elif field_type .is_enum and (type_name := field_type .type_name ):
649650 enum_type = self ._resolve_enum_type (type_name , message )
650651 writer .writeln (
651- f'_utils .validate_type({ var_name } , builtins.int, "{ field .name } ")'
652+ f'{ utils } .validate_type({ var_name } , builtins.int, "{ field .name } ")'
652653 )
653654 writer .writeln (
654655 f'{ target_dict } ["{ field .name } "] = { enum_type } ({ var_name } )'
655656 )
656657 elif is_hex_encoded_field (field .name ):
657658 writer .writeln (
658- f'{ target_dict } ["{ field .name } "] = _utils .decode_hex({ var_name } , "{ field .name } ")'
659+ f'{ target_dict } ["{ field .name } "] = { utils } .decode_hex({ var_name } , "{ field .name } ")'
659660 )
660661 elif is_int64_type (field_type .proto_type ):
661662 writer .writeln (
662- f'{ target_dict } ["{ field .name } "] = _utils .decode_int64({ var_name } , "{ field .name } ")'
663+ f'{ target_dict } ["{ field .name } "] = { utils } .decode_int64({ var_name } , "{ field .name } ")'
663664 )
664665 elif is_bytes_type (field_type .proto_type ):
665666 writer .writeln (
666- f'{ target_dict } ["{ field .name } "] = _utils .decode_base64({ var_name } , "{ field .name } ")'
667+ f'{ target_dict } ["{ field .name } "] = { utils } .decode_base64({ var_name } , "{ field .name } ")'
667668 )
668669 elif field_type .proto_type in (
669670 descriptor .FieldDescriptorProto .TYPE_FLOAT ,
670671 descriptor .FieldDescriptorProto .TYPE_DOUBLE ,
671672 ):
672673 writer .writeln (
673- f'{ target_dict } ["{ field .name } "] = _utils .decode_float({ var_name } , "{ field .name } ")'
674+ f'{ target_dict } ["{ field .name } "] = { utils } .decode_float({ var_name } , "{ field .name } ")'
674675 )
675676 else :
676677 allowed_types = get_json_allowed_types (
677678 field_type .proto_type , field .name
678679 )
679680 writer .writeln (
680- f'_utils .validate_type({ var_name } , { allowed_types } , "{ field .name } ")'
681+ f'{ utils } .validate_type({ var_name } , { allowed_types } , "{ field .name } ")'
681682 )
682683 writer .writeln (f'{ target_dict } ["{ field .name } "] = { var_name } ' )
683684
@@ -689,23 +690,24 @@ def _get_deserialization_expr(
689690 context : MessageInfo ,
690691 ) -> str :
691692 """Get the Python expression to deserialize a value of a given type."""
693+ utils = self ._get_utils_module_path ()
692694 if field_type .is_message and (type_name := field_type .type_name ):
693695 msg_type = self ._resolve_message_type (type_name , context )
694696 return f"{ msg_type } .from_dict({ var_name } )"
695697 if field_type .is_enum and (type_name := field_type .type_name ):
696698 enum_type = self ._resolve_enum_type (type_name , context )
697699 return f"{ enum_type } ({ var_name } )"
698700 if is_hex_encoded_field (field_name ):
699- return f'_utils .decode_hex({ var_name } , "{ field_name } ")'
701+ return f'{ utils } .decode_hex({ var_name } , "{ field_name } ")'
700702 if is_int64_type (field_type .proto_type ):
701- return f'_utils .decode_int64({ var_name } , "{ field_name } ")'
703+ return f'{ utils } .decode_int64({ var_name } , "{ field_name } ")'
702704 if is_bytes_type (field_type .proto_type ):
703- return f'_utils .decode_base64({ var_name } , "{ field_name } ")'
705+ return f'{ utils } .decode_base64({ var_name } , "{ field_name } ")'
704706 if field_type .proto_type in (
705707 descriptor .FieldDescriptorProto .TYPE_FLOAT ,
706708 descriptor .FieldDescriptorProto .TYPE_DOUBLE ,
707709 ):
708- return f'_utils .decode_float({ var_name } , "{ field_name } ")'
710+ return f'{ utils } .decode_float({ var_name } , "{ field_name } ")'
709711
710712 return var_name
711713
0 commit comments