@@ -681,9 +681,11 @@ def _input_type(
681
681
return result
682
682
683
683
def _output_type (
684
- self , method : d .MethodDescriptorProto , use_stream_iterator : bool = True
684
+ self , method : d .MethodDescriptorProto , async_service : bool , use_stream_iterator : bool = True
685
685
) -> str :
686
686
result = self ._import_message (method .output_type )
687
+ if async_service :
688
+ result = "{}[{}]" .format (self ._import ("typing" , "Awaitable" ), result )
687
689
if use_stream_iterator and method .server_streaming :
688
690
result = "{}[{}]" .format (self ._import ("typing" , "Iterator" ), result )
689
691
return result
@@ -700,6 +702,7 @@ def write_grpc_methods(
700
702
if not methods :
701
703
l ("pass" )
702
704
l ("" )
705
+ async_service = service .options .Extensions [extensions_pb2 .async_service ]
703
706
for i , method in methods :
704
707
scl = scl_prefix + [d .ServiceDescriptorProto .METHOD_FIELD_NUMBER , i ]
705
708
self ._write_comments (scl )
@@ -709,7 +712,7 @@ def write_grpc_methods(
709
712
with self ._indent ():
710
713
l ("request: {}," , self ._input_type (method ))
711
714
l ("context: {}," , self ._import ("grpc" , "ServicerContext" ))
712
- l (") -> {}: ..." , self ._output_type (method ))
715
+ l (") -> {}: ..." , self ._output_type (method , async_service ))
713
716
l ("" )
714
717
715
718
def write_grpc_stub_methods (
@@ -724,14 +727,15 @@ def write_grpc_stub_methods(
724
727
if not methods :
725
728
l ("pass" )
726
729
l ("" )
730
+ async_service = service .options .Extensions [extensions_pb2 .async_service ]
727
731
for i , method in methods :
728
732
scl = scl_prefix + [d .ServiceDescriptorProto .METHOD_FIELD_NUMBER , i ]
729
733
self ._write_comments (scl )
730
734
731
735
l ("{}:{}[" , method .name , self ._callable_type (method ))
732
736
with self ._indent ():
733
737
l ("{}," , self ._input_type (method , False ))
734
- l ("{}] = ..." , self ._output_type (method , False ))
738
+ l ("{}] = ..." , self ._output_type (method , async_service , False ))
735
739
l ("" )
736
740
737
741
def write_grpc_services (
@@ -749,6 +753,8 @@ def write_grpc_services(
749
753
if service .name in PYTHON_RESERVED :
750
754
continue
751
755
756
+ async_service = service .options .Extensions [extensions_pb2 .async_service ]
757
+
752
758
scl = scl_prefix + [i ]
753
759
self ._write_comments (scl )
754
760
@@ -776,7 +782,7 @@ def write_grpc_services(
776
782
"def add_{}Servicer_to_server(servicer: {}Servicer, server: {}) -> None: ..." ,
777
783
service .name ,
778
784
service .name ,
779
- self ._import ("grpc" , "Server" ),
785
+ self ._import ("grpc" , "Server" ) if async_service else self . _import ( "grpc" , "Server" ) ,
780
786
)
781
787
l ("" )
782
788
0 commit comments