24
24
25
25
@dataclass
26
26
class ParameterDescriptor :
27
- """Detailed information about a method parameter"""
27
+ """Information about a method parameter"""
28
28
29
29
name : str
30
30
annotation : Any
@@ -34,7 +34,7 @@ class ParameterDescriptor:
34
34
35
35
@dataclass
36
36
class MethodDescriptor :
37
- """Complete method descriptor with all necessary information """
37
+ """Method descriptor with function details """
38
38
39
39
function : Callable
40
40
name : str
@@ -44,13 +44,16 @@ class MethodDescriptor:
44
44
45
45
46
46
class DubboSerializationService :
47
- """Dubbo serialization service with robust type handling"""
47
+ """Dubbo serialization service with type handling"""
48
48
49
49
@staticmethod
50
50
def create_transport_codec (
51
- transport_type : str = "json" , parameter_types : list [type ] = None , return_type : type = None , ** codec_options
51
+ transport_type : str = "json" ,
52
+ parameter_types : Optional [list [type ]] = None ,
53
+ return_type : Optional [type ] = None ,
54
+ ** codec_options ,
52
55
):
53
- """Create transport codec with enhanced parameter structure """
56
+ """Create transport codec"""
54
57
55
58
try :
56
59
from dubbo .classes import CodecHelper
@@ -67,13 +70,19 @@ def create_transport_codec(
67
70
68
71
@staticmethod
69
72
def create_encoder_decoder_pair (
70
- transport_type : str , parameter_types : list [type ] = None , return_type : type = None , ** codec_options
73
+ transport_type : str ,
74
+ parameter_types : Optional [list [type ]] = None ,
75
+ return_type : Optional [type ] = None ,
76
+ ** codec_options ,
71
77
) -> tuple [Any , Any ]:
72
- """Create separate encoder and decoder instances"""
78
+ """Create encoder and decoder instances"""
73
79
74
80
try :
75
81
codec_instance = DubboSerializationService .create_transport_codec (
76
- transport_type = transport_type , parameter_types = parameter_types , return_type = return_type , ** codec_options
82
+ transport_type = transport_type ,
83
+ parameter_types = parameter_types ,
84
+ return_type = return_type ,
85
+ ** codec_options ,
77
86
)
78
87
79
88
encoder = codec_instance .get_encoder ()
@@ -90,13 +99,19 @@ def create_encoder_decoder_pair(
90
99
91
100
@staticmethod
92
101
def create_serialization_functions (
93
- transport_type : str , parameter_types : list [type ] = None , return_type : type = None , ** codec_options
102
+ transport_type : str ,
103
+ parameter_types : Optional [list [type ]] = None ,
104
+ return_type : Optional [type ] = None ,
105
+ ** codec_options ,
94
106
) -> tuple [Callable , Callable ]:
95
- """Create serializer and deserializer functions for RPC (backward compatibility) """
107
+ """Create serializer and deserializer functions"""
96
108
97
109
try :
98
110
parameter_encoder , return_decoder = DubboSerializationService .create_encoder_decoder_pair (
99
- transport_type = transport_type , parameter_types = parameter_types , return_type = return_type , ** codec_options
111
+ transport_type = transport_type ,
112
+ parameter_types = parameter_types ,
113
+ return_type = return_type ,
114
+ ** codec_options ,
100
115
)
101
116
102
117
def serialize_method_parameters (* args ) -> bytes :
@@ -125,17 +140,17 @@ def deserialize_method_return(data: bytes):
125
140
def create_method_descriptor (
126
141
func : Callable ,
127
142
method_name : Optional [str ] = None ,
128
- parameter_types : list [type ] = None ,
129
- return_type : type = None ,
130
- interface : Callable = None ,
143
+ parameter_types : Optional [ list [type ] ] = None ,
144
+ return_type : Optional [ type ] = None ,
145
+ interface : Optional [ Callable [..., Any ]] = None ,
131
146
) -> MethodDescriptor :
132
147
"""Create a method descriptor from function and configuration"""
133
148
134
149
if not callable (func ):
135
150
raise TypeError ("func must be callable" )
136
151
137
152
# Use interface signature if provided, otherwise use func signature
138
- target_function = interface if interface else func
153
+ target_function = interface if interface is not None else func
139
154
name = method_name or target_function .__name__
140
155
141
156
try :
@@ -166,14 +181,17 @@ def create_method_descriptor(
166
181
167
182
parameters .append (
168
183
ParameterDescriptor (
169
- name = param_name , annotation = param_type , is_required = is_required , default_value = default_value
184
+ name = param_name ,
185
+ annotation = param_type ,
186
+ is_required = is_required ,
187
+ default_value = default_value ,
170
188
)
171
189
)
172
190
173
191
param_index += 1
174
192
175
193
# Resolve return type
176
- if return_type :
194
+ if return_type is not None :
177
195
resolved_return_type = return_type
178
196
elif sig .return_annotation != inspect .Signature .empty :
179
197
resolved_return_type = sig .return_annotation
0 commit comments