openrewrite-remote 0.13.4__py3-none-any.whl → 0.14.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -57,9 +57,7 @@ def receive_nodes(
57
57
  elif diff_event.event_type == EventType.NoChange:
58
58
  after[i] = None # Or some default value
59
59
  else:
60
- raise NotImplementedError(
61
- f"Unexpected operation: {diff_event.event_type}"
62
- )
60
+ raise NotImplementedError(f"Unexpected operation: {diff_event.event_type}")
63
61
  return after # type: ignore
64
62
  elif list_event.event_type == EventType.Update:
65
63
  return _receive_updated_nodes(before, list_event.msg, details, ctx) # type: ignore
@@ -85,7 +83,11 @@ def _receive_updated_nodes(
85
83
  if evt.event_type in (EventType.NoChange, EventType.EndList):
86
84
  break
87
85
 
88
- if evt.event_type in (EventType.Delete, EventType.Update, EventType.Add):
86
+ if evt.event_type in (
87
+ EventType.Delete,
88
+ EventType.Update,
89
+ EventType.Add,
90
+ ):
89
91
  if not modified:
90
92
  after_list = _copy_range(before, before_idx)
91
93
  modified = True
@@ -97,9 +99,7 @@ def _receive_updated_nodes(
97
99
  elif evt.event_type == EventType.Delete:
98
100
  before_idx += 1
99
101
  elif evt.event_type == EventType.Update:
100
- after_list.append(
101
- details.receive_details(before[before_idx], evt.concrete_type, ctx)
102
- )
102
+ after_list.append(details.receive_details(before[before_idx], evt.concrete_type, ctx))
103
103
  before_idx += 1
104
104
  elif evt.event_type == EventType.Add:
105
105
  after_list.append(details.receive_details(None, evt.concrete_type, ctx))
@@ -130,9 +130,7 @@ def receive_values(
130
130
  elif diff_event.event_type == EventType.NoChange:
131
131
  after[i] = None # Or some default value
132
132
  else:
133
- raise NotImplementedError(
134
- f"Unexpected operation: {diff_event.event_type}"
135
- )
133
+ raise NotImplementedError(f"Unexpected operation: {diff_event.event_type}")
136
134
  return after # type: ignore
137
135
  elif list_event.event_type == EventType.Update:
138
136
  return _receive_updated_values(before, list_event.msg, type, ctx) # type: ignore
@@ -155,7 +153,11 @@ def _receive_updated_values(
155
153
  if evt.event_type in (EventType.NoChange, EventType.EndList):
156
154
  break
157
155
 
158
- if evt.event_type in (EventType.Delete, EventType.Update, EventType.Add):
156
+ if evt.event_type in (
157
+ EventType.Delete,
158
+ EventType.Update,
159
+ EventType.Add,
160
+ ):
159
161
  if not modified:
160
162
  after_list = _copy_range(before, before_idx)
161
163
  modified = True
@@ -239,16 +241,20 @@ def calculate_list_diff(
239
241
 
240
242
  # If elements at current indices are not equal, figure out the operation
241
243
  if before_id not in after_map:
242
- consumer(Operation.Delete, before_idx, -1, before[before_idx], None)
244
+ consumer(
245
+ Operation.Delete,
246
+ before_idx,
247
+ -1,
248
+ before[before_idx],
249
+ None,
250
+ )
243
251
  before_idx += 1
244
252
  else:
245
253
  consumer(Operation.Add, -1, after_idx, None, after[after_idx])
246
254
  after_idx += 1
247
255
 
248
256
 
249
- def create_index_map(
250
- lst: List[T], from_index: int, id_function: Callable[[T], I]
251
- ) -> Dict[I, int]:
257
+ def create_index_map(lst: List[T], from_index: int, id_function: Callable[[T], I]) -> Dict[I, int]:
252
258
  result = {}
253
259
  for i in range(from_index, len(lst)):
254
260
  result[id_function(lst[i])] = i
@@ -12,8 +12,6 @@ from typing import (
12
12
  Dict,
13
13
  Optional,
14
14
  Type,
15
- List,
16
- Tuple,
17
15
  Callable,
18
16
  cast,
19
17
  Union,
@@ -108,14 +106,16 @@ class RemotingContext:
108
106
  def new_sender_context(self, output_stream: Any) -> "SenderContext":
109
107
  return SenderContext(
110
108
  JsonSender(
111
- output_stream, SerializationContext(self, self._value_serializers)
109
+ output_stream,
110
+ SerializationContext(self, self._value_serializers),
112
111
  )
113
112
  )
114
113
 
115
114
  def new_receiver_context(self, input_stream: Any) -> "ReceiverContext":
116
115
  return ReceiverContext(
117
116
  JsonReceiver(
118
- input_stream, DeserializationContext(self, self._value_deserializers)
117
+ input_stream,
118
+ DeserializationContext(self, self._value_deserializers),
119
119
  )
120
120
  )
121
121
 
@@ -160,7 +160,6 @@ ERROR = 1
160
160
 
161
161
 
162
162
  class RemotingMessenger:
163
-
164
163
  def __init__(
165
164
  self,
166
165
  context: RemotingContext,
@@ -249,9 +248,7 @@ class RemotingMessenger:
249
248
  root_cursor = Cursor(None, Cursor.ROOT_VALUE)
250
249
  ctx = InMemoryExecutionContext()
251
250
  RemotingExecutionContextView.view(ctx).remoting_context = self._context
252
- print_output = received.print(
253
- Cursor(root_cursor, received), PrintOutputCapture(0)
254
- )
251
+ print_output = received.print(Cursor(root_cursor, received), PrintOutputCapture(0))
255
252
 
256
253
  response_stream = BytesIO()
257
254
  cbor2.dump(RemotingMessageType.Response, response_stream)
@@ -280,7 +277,9 @@ class RemotingMessenger:
280
277
 
281
278
  def send_print_request(self, sock: socket.socket, cursor: Cursor):
282
279
  self.__send_request_stream(
283
- sock, "print", lambda s: self.send_tree(s, cast(Tree, cursor.value))
280
+ sock,
281
+ "print",
282
+ lambda s: self.send_tree(s, cast(Tree, cursor.value)),
284
283
  )
285
284
  if self.recv_byte(sock) != RemotingMessageType.Response:
286
285
  raise ValueError("Unexpected message type.")
@@ -293,16 +292,22 @@ class RemotingMessenger:
293
292
 
294
293
  def send_tree(
295
294
  self,
296
- sock: Union[BinaryIO, socket.socket],
295
+ dest: Union[BinaryIO, socket.socket],
297
296
  after: Tree,
298
297
  before: Optional[Tree] = None,
299
298
  ):
300
299
  b = BytesIO()
301
300
  self._context.new_sender_context(b).send_any_tree(after, before)
302
- sock.sendall(dumps(b.getvalue()))
301
+ if isinstance(dest, socket.socket):
302
+ dest.sendall(dumps(b.getvalue()))
303
+ else:
304
+ b.seek(0)
305
+ dest.write(dumps(b.getvalue()))
303
306
 
304
307
  def receive_tree(
305
- self, data: Union[BinaryIO, socket.socket], before: Optional[Tree] = None
308
+ self,
309
+ data: Union[BinaryIO, socket.socket],
310
+ before: Optional[Tree] = None,
306
311
  ):
307
312
  receiver_context = self._context.new_receiver_context(BytesIO(cbor2.load(data)))
308
313
  return receiver_context.receive_any_tree(before)
rewrite_remote/sender.py CHANGED
@@ -21,7 +21,6 @@ import cbor2
21
21
  from cbor2 import CBOREncoder
22
22
  from rewrite import Tree, Markers, Marker, ParseErrorVisitor, Cursor, Style
23
23
  from rewrite.visitor import TreeVisitor
24
- from rewrite.java import JavaType
25
24
 
26
25
  from rewrite_remote import remote_utils
27
26
  from rewrite_remote.event import *
@@ -52,9 +51,7 @@ class OmniSender(Sender):
52
51
 
53
52
 
54
53
  class TreeSender(Protocol):
55
- def send_node(
56
- self, diff_event: DiffEvent, visitor: Callable[["TreeSender"], None]
57
- ) -> None: ...
54
+ def send_node(self, diff_event: DiffEvent, visitor: Callable[["TreeSender"], None]) -> None: ...
58
55
 
59
56
  def send_value(self, diff_event: DiffEvent) -> None: ...
60
57
 
@@ -69,10 +66,10 @@ class SenderContext(Generic[T]):
69
66
  Registry: Dict[Type[Any], Callable[[], Sender]] = {}
70
67
 
71
68
  def __init__(
72
- self,
73
- sender: "TreeSender",
74
- visitor: TreeVisitor = None,
75
- before: Optional[Any] = None,
69
+ self,
70
+ sender: "TreeSender",
71
+ visitor: TreeVisitor = None,
72
+ before: Optional[Any] = None,
76
73
  ):
77
74
  self.sender = sender
78
75
  self.visitor = visitor
@@ -82,24 +79,20 @@ class SenderContext(Generic[T]):
82
79
  for entry_type, factory in self.Registry.items():
83
80
  # FIXME find better solution
84
81
  try:
85
- if type_.__bases__.__contains__(entry_type) or issubclass(
86
- type_, entry_type
87
- ):
82
+ if type_.__bases__.__contains__(entry_type) or issubclass(type_, entry_type):
88
83
  return factory()
89
84
  except:
90
85
  pass
91
86
  raise ValueError(f"Unsupported sender type: {type_}")
92
87
 
93
- def fork(
94
- self, visitor: TreeVisitor, before: Optional[Any] = None
95
- ) -> "SenderContext[T]":
88
+ def fork(self, visitor: TreeVisitor, before: Optional[Any] = None) -> "SenderContext[T]":
96
89
  return SenderContext(self.sender, visitor, before)
97
90
 
98
91
  def visit(
99
- self,
100
- consumer: Callable[[V, "SenderContext"], None],
101
- after: V,
102
- before: Optional[V] = None,
92
+ self,
93
+ consumer: Callable[[V, "SenderContext"], None],
94
+ after: V,
95
+ before: Optional[V] = None,
103
96
  ) -> None:
104
97
  save_before = self.before
105
98
  self.before = before
@@ -113,10 +106,10 @@ class SenderContext(Generic[T]):
113
106
  OmniSender().send(after, before, self)
114
107
 
115
108
  def send_node(
116
- self,
117
- owner: A,
118
- extractor: Callable[[A], Optional[V]],
119
- details: Callable[[V, "SenderContext[T]"], None],
109
+ self,
110
+ owner: A,
111
+ extractor: Callable[[A], Optional[V]],
112
+ details: Callable[[V, "SenderContext[T]"], None],
120
113
  ) -> None:
121
114
  self.send_node_internal(
122
115
  extractor(owner),
@@ -124,9 +117,7 @@ class SenderContext(Generic[T]):
124
117
  details,
125
118
  )
126
119
 
127
- def send_value(
128
- self, owner: Any, value_extractor: Callable[[T], Optional[V]]
129
- ) -> None:
120
+ def send_value(self, owner: Any, value_extractor: Callable[[T], Optional[V]]) -> None:
130
121
  after_value = value_extractor(owner)
131
122
  before_value = value_extractor(self.before) if self.before is not None else None
132
123
  self.send_value_internal(after_value, before_value)
@@ -136,9 +127,7 @@ class SenderContext(Generic[T]):
136
127
  before_value = value_extractor(self.before) if self.before is not None else None
137
128
  self.send_typed_value_internal(after_value, before_value)
138
129
 
139
- def send_list_event(
140
- self, after: Optional[List[V]], before: Optional[List[V]]
141
- ) -> bool:
130
+ def send_list_event(self, after: Optional[List[V]], before: Optional[List[V]]) -> bool:
142
131
  if after == before:
143
132
  evt = DiffEvent(EventType.NoChange, None, None)
144
133
  elif before is None:
@@ -149,21 +138,17 @@ class SenderContext(Generic[T]):
149
138
  evt = DiffEvent(EventType.Update, None, len(after))
150
139
 
151
140
  self.sender.send_value(evt)
152
- return (
153
- evt.event_type != EventType.NoChange and evt.event_type != EventType.Delete
154
- )
141
+ return evt.event_type != EventType.NoChange and evt.event_type != EventType.Delete
155
142
 
156
143
  def send_nodes(
157
- self,
158
- owner: A,
159
- element_extractor: Callable[[A], List[V]],
160
- details: Callable[[V, "SenderContext"], None],
161
- id_function: Callable[[V], I],
144
+ self,
145
+ owner: A,
146
+ element_extractor: Callable[[A], List[V]],
147
+ details: Callable[[V, "SenderContext"], None],
148
+ id_function: Callable[[V], I],
162
149
  ) -> None:
163
150
  after_list = element_extractor(owner)
164
- before_list = (
165
- element_extractor(self.before) if self.before is not None else None
166
- )
151
+ before_list = element_extractor(self.before) if self.before is not None else None
167
152
 
168
153
  if self.send_list_event(after_list, before_list):
169
154
  if before_list is not None:
@@ -175,14 +160,10 @@ class SenderContext(Generic[T]):
175
160
  id_function,
176
161
  lambda op, _1, _2, bv, av: {
177
162
  Operation.Delete: lambda: self.send_node_internal(av, bv, details),
178
- Operation.NoChange: lambda: self.send_node_internal(
179
- av, bv, details
180
- ),
163
+ Operation.NoChange: lambda: self.send_node_internal(av, bv, details),
181
164
  Operation.Add: lambda: self.send_node_internal(av, bv, details),
182
165
  Operation.Update: lambda: self.send_node_internal(av, bv, details),
183
- Operation.Move: lambda: NotImplementedError(
184
- "Unexpected operation: " + str(op)
185
- ),
166
+ Operation.Move: lambda: NotImplementedError("Unexpected operation: " + str(op)),
186
167
  }[op](),
187
168
  )
188
169
 
@@ -190,10 +171,10 @@ class SenderContext(Generic[T]):
190
171
  self.sender.send_value(DiffEvent(EventType.EndList, None, None))
191
172
 
192
173
  def send_values(
193
- self,
194
- owner: T,
195
- value_extractor: Callable[[T], List[V]],
196
- id_function: Callable[[V], I],
174
+ self,
175
+ owner: T,
176
+ value_extractor: Callable[[T], List[V]],
177
+ id_function: Callable[[V], I],
197
178
  ) -> None:
198
179
  after_list = value_extractor(owner)
199
180
  before_list = value_extractor(self.before) if self.before is not None else None
@@ -211,9 +192,7 @@ class SenderContext(Generic[T]):
211
192
  Operation.NoChange: lambda: self.send_value_internal(av, bv),
212
193
  Operation.Add: lambda: self.send_value_internal(av, bv),
213
194
  Operation.Update: lambda: self.send_value_internal(av, bv),
214
- Operation.Move: lambda: NotImplementedError(
215
- "Unexpected operation: " + str(op)
216
- ),
195
+ Operation.Move: lambda: NotImplementedError("Unexpected operation: " + str(op)),
217
196
  }[op](),
218
197
  )
219
198
 
@@ -221,10 +200,10 @@ class SenderContext(Generic[T]):
221
200
  self.sender.send_value(DiffEvent(EventType.EndList, None, None))
222
201
 
223
202
  def send_typed_values(
224
- self,
225
- owner: T,
226
- value_extractor: Callable[[T], List[V]],
227
- id_function: Callable[[V], I],
203
+ self,
204
+ owner: T,
205
+ value_extractor: Callable[[T], List[V]],
206
+ id_function: Callable[[V], I],
228
207
  ) -> None:
229
208
  after_list = value_extractor(owner)
230
209
  before_list = value_extractor(self.before) if self.before is not None else None
@@ -242,9 +221,7 @@ class SenderContext(Generic[T]):
242
221
  Operation.NoChange: lambda: self.send_typed_value_internal(av, bv),
243
222
  Operation.Add: lambda: self.send_typed_value_internal(av, bv),
244
223
  Operation.Update: lambda: self.send_typed_value_internal(av, bv),
245
- Operation.Move: lambda: NotImplementedError(
246
- "Unexpected operation: " + str(op)
247
- ),
224
+ Operation.Move: lambda: NotImplementedError("Unexpected operation: " + str(op)),
248
225
  }[op](),
249
226
  )
250
227
 
@@ -270,17 +247,15 @@ class SenderContext(Generic[T]):
270
247
  return isinstance(after, (Tree, Markers)) or isinstance(before, (Tree, Markers))
271
248
 
272
249
  def send_node_internal(
273
- self,
274
- after: Optional[V],
275
- before: Optional[V],
276
- details: Callable[[V, "SenderContext"], None],
250
+ self,
251
+ after: Optional[V],
252
+ before: Optional[V],
253
+ details: Callable[[V, "SenderContext"], None],
277
254
  ) -> None:
278
255
  if self.are_equal(after, before):
279
256
  evt = DiffEvent(EventType.NoChange, None, None)
280
257
  elif before is None:
281
- concrete_type = (
282
- to_java_type_name(type(after)) if after is not None else None
283
- )
258
+ concrete_type = to_java_type_name(type(after)) if after is not None else None
284
259
  evt = DiffEvent(EventType.Add, concrete_type, None)
285
260
  elif after is None:
286
261
  evt = DiffEvent(EventType.Delete, None, None)
@@ -293,9 +268,7 @@ class SenderContext(Generic[T]):
293
268
  if self.before is not None and self.are_equal(after, before):
294
269
  evt = DiffEvent(EventType.NoChange, None, None)
295
270
  elif self.before is None or before is None:
296
- concrete_type = (
297
- to_java_type_name(type(after)) if isinstance(after, Marker) else None
298
- )
271
+ concrete_type = to_java_type_name(type(after)) if isinstance(after, Marker) else None
299
272
  evt = DiffEvent(EventType.Add, concrete_type, after)
300
273
  elif after is None:
301
274
  evt = DiffEvent(EventType.Delete, None, None)
@@ -308,9 +281,7 @@ class SenderContext(Generic[T]):
308
281
  if self.before is not None and self.are_equal(after, before):
309
282
  evt = DiffEvent(EventType.NoChange, None, None)
310
283
  elif self.before is None or before is None:
311
- concrete_type = (
312
- to_java_type_name_from_value(after) if after is not None else None
313
- )
284
+ concrete_type = to_java_type_name_from_value(after) if after is not None else None
314
285
  evt = DiffEvent(EventType.Add, concrete_type, after)
315
286
  elif after is None:
316
287
  evt = DiffEvent(EventType.Delete, None, None)
@@ -322,23 +293,21 @@ class SenderContext(Generic[T]):
322
293
 
323
294
  class SerializationContext:
324
295
  def __init__(
325
- self,
326
- remoting_context: "RemotingContext",
327
- value_serializers: Optional[Dict[Type[Any], "ValueSerializer"]] = None,
296
+ self,
297
+ remoting_context: "RemotingContext",
298
+ value_serializers: Optional[Dict[Type[Any], "ValueSerializer"]] = None,
328
299
  ):
329
300
  self.remoting_context = remoting_context
330
301
  self.value_serializers = value_serializers or {}
331
302
 
332
- def serialize(
333
- self, value: Any, type_name: Optional[str], encoder: CBOREncoder
334
- ) -> None:
303
+ def serialize(self, value: Any, type_name: Optional[str], encoder: CBOREncoder) -> None:
335
304
  if value is None:
336
305
  encoder.encode_none(None)
337
306
  return
338
307
 
339
308
  for type_cls, serializer in self.value_serializers.items():
340
309
  if isinstance(value, type_cls):
341
- serializer.serialize(value, type_name, encoder, self)
310
+ serializer(value, type_name, encoder, self)
342
311
  return
343
312
 
344
313
  DefaultValueSerializer().serialize(value, type_name, encoder, self)
@@ -353,7 +322,6 @@ class JsonSender(TreeSender):
353
322
  self._encoder = cbor2.CBOREncoder(self._stream)
354
323
 
355
324
  def send_node(self, diff_event, visitor) -> None:
356
-
357
325
  if diff_event.event_type in (EventType.Add, EventType.Update):
358
326
  self._encoder.encode(
359
327
  [diff_event.event_type.value]
@@ -375,20 +343,16 @@ class JsonSender(TreeSender):
375
343
 
376
344
  def send_value(self, diff_event):
377
345
  if diff_event.event_type in (EventType.Add, EventType.Update):
378
- self._encoder.encode_length(
379
- 4, 3 if diff_event.concrete_type is not None else 2
380
- )
346
+ self._encoder.encode_length(4, 3 if diff_event.concrete_type is not None else 2)
381
347
  self._encoder.encode_int(diff_event.event_type.value)
382
348
  if diff_event.concrete_type is not None:
383
349
  self._encoder.encode(diff_event.concrete_type)
384
- self._context.serialize(
385
- diff_event.msg, diff_event.concrete_type, self._encoder
386
- )
350
+ self._context.serialize(diff_event.msg, diff_event.concrete_type, self._encoder)
387
351
  elif diff_event.event_type in (
388
- EventType.Delete,
389
- EventType.NoChange,
390
- EventType.StartList,
391
- EventType.EndList,
352
+ EventType.Delete,
353
+ EventType.NoChange,
354
+ EventType.StartList,
355
+ EventType.EndList,
392
356
  ):
393
357
  self._encoder.encode([diff_event.event_type.value])
394
358
  else:
@@ -409,11 +373,11 @@ ValueSerializer = Callable[[Any, Optional[str], CBOREncoder, SerializationContex
409
373
 
410
374
 
411
375
  def write_object_using_reflection(
412
- value: Any,
413
- type_name: Optional[str],
414
- with_id: bool,
415
- encoder: CBOREncoder,
416
- context: SerializationContext,
376
+ value: Any,
377
+ type_name: Optional[str],
378
+ with_id: bool,
379
+ encoder: CBOREncoder,
380
+ context: SerializationContext,
417
381
  ) -> None:
418
382
  if with_id and (id := context.remoting_context.try_get_id(value)):
419
383
  encoder.encode_int(id)
@@ -429,8 +393,7 @@ def write_object_using_reflection(
429
393
 
430
394
  for field in fields(value):
431
395
  if field.name[0] == "_" and (
432
- not hasattr(field.type, "__origin__")
433
- or field.type.__origin__ is not ClassVar
396
+ not hasattr(field.type, "__origin__") or field.type.__origin__ is not ClassVar
434
397
  ):
435
398
  encoder.encode_string(to_java_field_name(field))
436
399
  context.serialize(getattr(value, field.name), None, encoder)
@@ -442,11 +405,11 @@ class DefaultValueSerializer(ValueSerializer):
442
405
  return self.serialize(*args, **kwargs)
443
406
 
444
407
  def serialize(
445
- self,
446
- value: Any,
447
- type_name: Optional[str],
448
- encoder: CBOREncoder,
449
- context: SerializationContext,
408
+ self,
409
+ value: Any,
410
+ type_name: Optional[str],
411
+ encoder: CBOREncoder,
412
+ context: SerializationContext,
450
413
  ) -> None:
451
414
  if isinstance(value, (int, float, str, bool, decimal.Decimal)):
452
415
  encoder.encode(value)
@@ -455,11 +418,7 @@ class DefaultValueSerializer(ValueSerializer):
455
418
  elif isinstance(value, UUID):
456
419
  encoder.encode(value.bytes)
457
420
  elif isinstance(value, Enum):
458
- if isinstance(value, JavaType.Primitive):
459
- # FIXME implement type attribution support
460
- encoder.encode(["org.openrewrite.java.tree.JavaType$Primitive", value.value])
461
- else:
462
- encoder.encode(value.value)
421
+ encoder.encode(value.value)
463
422
  elif isinstance(value, Path):
464
423
  encoder.encode(str(value))
465
424
  elif isinstance(value, (list, set, tuple)):
@@ -492,8 +451,8 @@ class DefaultValueSerializer(ValueSerializer):
492
451
  encoder.encode_int(id)
493
452
  for field in fields(value):
494
453
  if field.name[0] == "_" and (
495
- not hasattr(field.type, "__origin__")
496
- or field.type.__origin__ is not ClassVar
454
+ not hasattr(field.type, "__origin__")
455
+ or field.type.__origin__ is not ClassVar
497
456
  ):
498
457
  encoder.encode_string(to_java_field_name(field))
499
458
  context.serialize(getattr(value, field.name), None, encoder)
@@ -504,21 +463,19 @@ class DefaultValueSerializer(ValueSerializer):
504
463
  elif isinstance(value, complex):
505
464
  encoder.encode(str(value))
506
465
  else:
507
- write_object_using_reflection(
508
- value, type_name, False, encoder, context
509
- )
466
+ write_object_using_reflection(value, type_name, False, encoder, context)
510
467
 
511
468
 
512
469
  def delegate_based_serializer(
513
- delegate: Callable[[Any, Optional[str], CBOREncoder, SerializationContext], None]
470
+ delegate: Callable[[Any, Optional[str], CBOREncoder, SerializationContext], None],
514
471
  ) -> Type[ValueSerializer]:
515
472
  class DelegateBasedSerializer(ValueSerializer):
516
473
  def serialize(
517
- self,
518
- value: Any,
519
- type_name: Optional[str],
520
- encoder: CBOREncoder,
521
- context: SerializationContext,
474
+ self,
475
+ value: Any,
476
+ type_name: Optional[str],
477
+ encoder: CBOREncoder,
478
+ context: SerializationContext,
522
479
  ) -> None:
523
480
  delegate(value, type_name, encoder, context)
524
481