44
55import base64
66import json
7- from enum import IntEnum
8- from typing import List , Optional , TYPE_CHECKING
7+ from typing import List
8+
99from xdrlib3 import Packer , Unpacker
10- from .base import DEFAULT_XDR_MAX_DEPTH , Integer , UnsignedInteger , Float , Double , Hyper , UnsignedHyper , Boolean , String , Opaque
11- from .constants import *
1210
11+ from .base import DEFAULT_XDR_MAX_DEPTH
1312from .hash import Hash
14- __all__ = ['FreezeBypassTxsDelta' ]
13+
14+ __all__ = ["FreezeBypassTxsDelta" ]
15+
16+
1517class FreezeBypassTxsDelta :
1618 """
1719 XDR Source Code::
@@ -21,48 +23,62 @@ class FreezeBypassTxsDelta:
2123 Hash removeTxs<>;
2224 };
2325 """
26+
2427 def __init__ (
2528 self ,
2629 add_txs : List [Hash ],
2730 remove_txs : List [Hash ],
2831 ) -> None :
2932 _expect_max_length = 4294967295
3033 if add_txs and len (add_txs ) > _expect_max_length :
31- raise ValueError (f"The maximum length of `add_txs` should be { _expect_max_length } , but got { len (add_txs )} ." )
34+ raise ValueError (
35+ f"The maximum length of `add_txs` should be { _expect_max_length } , but got { len (add_txs )} ."
36+ )
3237 _expect_max_length = 4294967295
3338 if remove_txs and len (remove_txs ) > _expect_max_length :
34- raise ValueError (f"The maximum length of `remove_txs` should be { _expect_max_length } , but got { len (remove_txs )} ." )
39+ raise ValueError (
40+ f"The maximum length of `remove_txs` should be { _expect_max_length } , but got { len (remove_txs )} ."
41+ )
3542 self .add_txs = add_txs
3643 self .remove_txs = remove_txs
44+
3745 def pack (self , packer : Packer ) -> None :
3846 packer .pack_uint (len (self .add_txs ))
3947 for add_txs_item in self .add_txs :
4048 add_txs_item .pack (packer )
4149 packer .pack_uint (len (self .remove_txs ))
4250 for remove_txs_item in self .remove_txs :
4351 remove_txs_item .pack (packer )
52+
4453 @classmethod
45- def unpack (cls , unpacker : Unpacker , depth_limit : int = DEFAULT_XDR_MAX_DEPTH ) -> FreezeBypassTxsDelta :
54+ def unpack (
55+ cls , unpacker : Unpacker , depth_limit : int = DEFAULT_XDR_MAX_DEPTH
56+ ) -> FreezeBypassTxsDelta :
4657 if depth_limit <= 0 :
4758 raise ValueError ("Maximum decoding depth reached" )
4859 length = unpacker .unpack_uint ()
4960 _remaining = len (unpacker .get_buffer ()) - unpacker .get_position ()
5061 if _remaining < length :
51- raise ValueError (f"add_txs length { length } exceeds remaining input length { _remaining } " )
62+ raise ValueError (
63+ f"add_txs length { length } exceeds remaining input length { _remaining } "
64+ )
5265 add_txs = []
5366 for _ in range (length ):
5467 add_txs .append (Hash .unpack (unpacker , depth_limit - 1 ))
5568 length = unpacker .unpack_uint ()
5669 _remaining = len (unpacker .get_buffer ()) - unpacker .get_position ()
5770 if _remaining < length :
58- raise ValueError (f"remove_txs length { length } exceeds remaining input length { _remaining } " )
71+ raise ValueError (
72+ f"remove_txs length { length } exceeds remaining input length { _remaining } "
73+ )
5974 remove_txs = []
6075 for _ in range (length ):
6176 remove_txs .append (Hash .unpack (unpacker , depth_limit - 1 ))
6277 return cls (
6378 add_txs = add_txs ,
6479 remove_txs = remove_txs ,
6580 )
81+
6682 def to_xdr_bytes (self ) -> bytes :
6783 packer = Packer ()
6884 self .pack (packer )
@@ -92,11 +108,13 @@ def to_json(self) -> str:
92108 @classmethod
93109 def from_json (cls , json_str : str ) -> FreezeBypassTxsDelta :
94110 return cls .from_json_dict (json .loads (json_str ))
111+
95112 def to_json_dict (self ) -> dict :
96113 return {
97114 "add_txs" : [item .to_json_dict () for item in self .add_txs ],
98115 "remove_txs" : [item .to_json_dict () for item in self .remove_txs ],
99116 }
117+
100118 @classmethod
101119 def from_json_dict (cls , json_dict : dict ) -> FreezeBypassTxsDelta :
102120 add_txs = [Hash .from_json_dict (item ) for item in json_dict ["add_txs" ]]
@@ -105,15 +123,23 @@ def from_json_dict(cls, json_dict: dict) -> FreezeBypassTxsDelta:
105123 add_txs = add_txs ,
106124 remove_txs = remove_txs ,
107125 )
126+
108127 def __hash__ (self ):
109- return hash ((self .add_txs , self .remove_txs ,))
128+ return hash (
129+ (
130+ self .add_txs ,
131+ self .remove_txs ,
132+ )
133+ )
134+
110135 def __eq__ (self , other : object ):
111136 if not isinstance (other , self .__class__ ):
112137 return NotImplemented
113138 return self .add_txs == other .add_txs and self .remove_txs == other .remove_txs
139+
114140 def __repr__ (self ):
115141 out = [
116- f' add_txs={ self .add_txs } ' ,
117- f' remove_txs={ self .remove_txs } ' ,
142+ f" add_txs={ self .add_txs } " ,
143+ f" remove_txs={ self .remove_txs } " ,
118144 ]
119145 return f"<FreezeBypassTxsDelta [{ ', ' .join (out )} ]>"
0 commit comments