@@ -179,15 +179,19 @@ def __init__(
179
179
self .string_namespacing = string_referencing
180
180
self .default = default
181
181
self ._canonical = canonical
182
- self ._shared_containers : dict [
183
- int , tuple [object , int | None ]
184
- ] = {} # indexes used for value sharing
185
- self ._string_references : dict [str | bytes , int ] = {} # indexes used for string references
182
+ self ._shared_containers : dict [int , tuple [object , int | None ]] = (
183
+ {}
184
+ ) # indexes used for value sharing
185
+ self ._string_references : dict [str | bytes , int ] = (
186
+ {}
187
+ ) # indexes used for string references
186
188
self ._encoders = default_encoders .copy ()
187
189
if canonical :
188
190
self ._encoders .update (canonical_encoders )
189
191
190
- def _find_encoder (self , obj_type : type ) -> Callable [[CBOREncoder , Any ], None ] | None :
192
+ def _find_encoder (
193
+ self , obj_type : type
194
+ ) -> Callable [[CBOREncoder , Any ], None ] | None :
191
195
for type_or_tuple , enc in list (self ._encoders .items ()):
192
196
if type (type_or_tuple ) is tuple :
193
197
try :
@@ -306,7 +310,11 @@ def encode(self, obj: Any) -> None:
306
310
the object to encode
307
311
"""
308
312
obj_type = obj .__class__
309
- encoder = self ._encoders .get (obj_type ) or self ._find_encoder (obj_type ) or self ._default
313
+ encoder = (
314
+ self ._encoders .get (obj_type )
315
+ or self ._find_encoder (obj_type )
316
+ or self ._default
317
+ )
310
318
if not encoder :
311
319
raise CBOREncodeTypeError (f"cannot serialize type { obj_type .__name__ } " )
312
320
@@ -327,15 +335,19 @@ def encode_to_bytes(self, obj: Any) -> bytes:
327
335
self .fp = old_fp
328
336
return fp .getvalue ()
329
337
330
- def encode_container (self , encoder : Callable [[CBOREncoder , Any ], Any ], value : Any ) -> None :
338
+ def encode_container (
339
+ self , encoder : Callable [[CBOREncoder , Any ], Any ], value : Any
340
+ ) -> None :
331
341
if self .string_namespacing :
332
342
# Create a new string reference domain
333
343
self .encode_length (6 , 256 )
334
344
335
345
with self .disable_string_namespacing ():
336
346
self .encode_shared (encoder , value )
337
347
338
- def encode_shared (self , encoder : Callable [[CBOREncoder , Any ], Any ], value : Any ) -> None :
348
+ def encode_shared (
349
+ self , encoder : Callable [[CBOREncoder , Any ], Any ], value : Any
350
+ ) -> None :
339
351
value_id = id (value )
340
352
try :
341
353
index = self ._shared_containers [id (value )][1 ]
@@ -470,7 +482,9 @@ def encode_sortable_key(self, value: Any) -> tuple[int, bytes]:
470
482
@container_encoder
471
483
def encode_canonical_map (self , value : Mapping [Any , Any ]) -> None :
472
484
"""Reorder keys according to Canonical CBOR specification"""
473
- keyed_keys = ((self .encode_sortable_key (key ), key , value ) for key , value in value .items ())
485
+ keyed_keys = (
486
+ (self .encode_sortable_key (key ), key , value ) for key , value in value .items ()
487
+ )
474
488
self .encode_length (5 , len (value ))
475
489
for sortkey , realkey , value in sorted (keyed_keys ):
476
490
if self .string_referencing :
@@ -507,7 +521,8 @@ def encode_datetime(self, value: datetime) -> None:
507
521
value = value .replace (tzinfo = self ._timezone )
508
522
else :
509
523
raise CBOREncodeValueError (
510
- f"naive datetime { value !r} encountered and no default timezone " "has been set"
524
+ f"naive datetime { value !r} encountered and no default timezone "
525
+ "has been set"
511
526
)
512
527
513
528
if self .datetime_as_timestamp :
@@ -593,7 +608,9 @@ def encode_ipaddress(self, value: IPv4Address | IPv6Address) -> None:
593
608
594
609
def encode_ipnetwork (self , value : IPv4Network | IPv6Network ) -> None :
595
610
# Semantic tag 261
596
- self .encode_semantic (CBORTag (261 , {value .network_address .packed : value .prefixlen }))
611
+ self .encode_semantic (
612
+ CBORTag (261 , {value .network_address .packed : value .prefixlen })
613
+ )
597
614
598
615
#
599
616
# Special encoders (major tag 7)
0 commit comments