symbol-sdk-python 3.2.2__py3-none-any.whl → 3.2.3__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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: symbol-sdk-python
3
- Version: 3.2.2
3
+ Version: 3.2.3
4
4
  Summary: Symbol SDK
5
5
  Home-page: https://github.com/symbol/symbol/tree/main/sdk/python
6
6
  License: MIT
@@ -9,19 +9,19 @@ Author: Symbol Contributors
9
9
  Author-email: contributors@symbol.dev
10
10
  Maintainer: Symbol Contributors
11
11
  Maintainer-email: contributors@symbol.dev
12
- Requires-Python: >=3.9,<4.0
12
+ Requires-Python: >=3.9.2,<4.0.0
13
13
  Classifier: License :: OSI Approved :: MIT License
14
14
  Classifier: Programming Language :: Python :: 3
15
- Classifier: Programming Language :: Python :: 3.9
16
15
  Classifier: Programming Language :: Python :: 3.10
17
16
  Classifier: Programming Language :: Python :: 3.11
18
- Requires-Dist: cryptography (>=42.0.2,<42.1.0)
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Requires-Dist: cryptography (>=44.0.0,<44.1.0)
19
19
  Requires-Dist: mnemonic (>=0.20,<1.0)
20
- Requires-Dist: pillow (>=10.3.0,<10.4.0)
20
+ Requires-Dist: pillow (>=11.0.0,<11.1.0)
21
21
  Requires-Dist: pynacl (>=1.5.0,<1.6.0)
22
22
  Requires-Dist: pyyaml (>=6.0.1,<6.1.0)
23
23
  Requires-Dist: pyzbar (>=0.1.9,<0.2.0)
24
- Requires-Dist: qrcode (>=7.4.2,<7.5.0)
24
+ Requires-Dist: qrcode (>=8.0,<9.0)
25
25
  Requires-Dist: ripemd-hash (>=1.0.1,<1.1.0)
26
26
  Requires-Dist: safe-pysha3 (>=1.0.4,<1.1.0)
27
27
  Project-URL: Repository, https://github.com/symbol/symbol/tree/main/sdk/python
@@ -1,16 +1,16 @@
1
1
  symbolchain/AccountDescriptorRepository.py,sha256=XCIIt6XvxqClQL0R7_-xyFBhb0q9bIUbNTr5-YS5f1o,2508
2
2
  symbolchain/ArrayHelpers.py,sha256=Iu5QqlWW5j_6Qd0oTFO41MfDH_mKwQLT7XeD2frU2mw,3728
3
- symbolchain/BaseValue.py,sha256=AGtUYscbQk-w_rGbd9SS2gh3vnTYhCCwpXBt-9bA4u0,1482
3
+ symbolchain/BaseValue.py,sha256=vc56rclpJtxYIL6Mvo6KWwnA0pUfhtsB71NSEjobQtc,1636
4
4
  symbolchain/Bip32.py,sha256=L8Fs0XTERGWSPX972KUn-AOPwAS2gZMdVTKAq4HOGa8,1787
5
5
  symbolchain/BlockchainSettings.py,sha256=uRHHxi0gW_U9LFUhoDpNMTe2CobLNJQwE9ZMy2o1aX8,723
6
6
  symbolchain/BufferReader.py,sha256=Bcg59ZkUzhgKIo2-B1q7jwtU5x-W5_TuuaOqPnXM1ug,883
7
7
  symbolchain/BufferWriter.py,sha256=JpZkzcxUbbDkGU4Sz-oMhL6dgZ_ovhBVduVB51PEWa4,639
8
- symbolchain/ByteArray.py,sha256=u5FyC6tSxWLXDpT-_Pd3fIYftde1aAK1x5dikROJ0-0,1059
8
+ symbolchain/ByteArray.py,sha256=fVII_BDew55qTU0dQIZWYvWWT_vxfCW_IJzcPglCHr8,1173
9
9
  symbolchain/Cipher.py,sha256=CtNKjLJJPTTI4TV4Q_-bkloGSr20wjzHmaLMAbKp03g,2158
10
10
  symbolchain/CodeWordsEncoder.py,sha256=YydhdbhxTvjXYUp1OkJj7XjTz3WfKVSGi8VIUzGTTHA,1233
11
11
  symbolchain/CryptoTypes.py,sha256=9rMQyYF0xBU5W1vo07fgDqfP4dR3E_Hv5Ec1ozKanUs,1844
12
12
  symbolchain/DiceMnemonicGenerator.py,sha256=F8QU90PQzp-qzNqnnxHowVtG_-rNiqWDALSsi-8I_og,1848
13
- symbolchain/Network.py,sha256=LCMIkYo5yTlV-8_gqIjOZTSGeCBJuBZ7YisJJ1G36z4,3368
13
+ symbolchain/Network.py,sha256=6FK2qOGYsGz7qMEpu7hCcvjvnl6tQKjdMTVx9PwTjOI,3398
14
14
  symbolchain/NetworkTimestamp.py,sha256=M3T2HFYJT5v9B_tkGn2FkjW6C9hueXmdTjyWWSr9rXw,1595
15
15
  symbolchain/NodeDescriptorRepository.py,sha256=DVqhj_D6KWgaYiJC3jKv2ne-AJTvpJrKruhiRmGgtQE,1019
16
16
  symbolchain/Ordered.py,sha256=--tQ_aZpXhZYcsRLgMjUNHPYlAH7BMfuss2CSxMvNhY,397
@@ -25,12 +25,12 @@ symbolchain/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
25
  symbolchain/external/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
26
  symbolchain/external/ed25519.py,sha256=xpq-UOQ3CNCZp4V2uaHsWeyEfXezCfWe44NKsecZCqU,7833
27
27
  symbolchain/facade/BatchOperations.py,sha256=SQR6fXTi1mI7H7ubJsqYEabWQzzVXhbD8BkzgIpoCII,2983
28
- symbolchain/facade/NemFacade.py,sha256=oOvU8hJRNjZAFaoETueyw_R0K-S6AvlNV3pB7ltVOfY,4166
29
- symbolchain/facade/SymbolFacade.py,sha256=Yz7hIGanNY8iFLeIelRB8-M44gmlvbdc0pB_ouGkNg0,6527
28
+ symbolchain/facade/NemFacade.py,sha256=qCaFie17Q1R4wRQqiedKEywJH8yq_CjY_-b9dLgiZQk,4226
29
+ symbolchain/facade/SymbolFacade.py,sha256=YH1WHfZUKZpX2lkHauRe1Kbnyvf1CJbwfLJPV73Vntc,6996
30
30
  symbolchain/facade/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
31
  symbolchain/impl/CipherHelpers.py,sha256=KSYH95oie-PxFfGAYfnqHOC1RWIrdxC7Vp6Go-o469Q,2152
32
32
  symbolchain/impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
- symbolchain/nc/__init__.py,sha256=vosYIQt3McpoGpspAl3YoV3_vrpNO-ddiTDmyqk0u-c,106403
33
+ symbolchain/nc/__init__.py,sha256=ROTctT787pDzqlnJkavy5vAmVe_JLUwj5e9GprFklXM,121192
34
34
  symbolchain/nem/KeyPair.py,sha256=34VwU7EdroB0nnzTCdTEUAK_DMrcDYzo3JKdniXQMG4,3712
35
35
  symbolchain/nem/MessageEncoder.py,sha256=EGm4mtmyXUXQb-R49Xmrl3w40ye_LbZQ8r5aJusH0WE,2699
36
36
  symbolchain/nem/Network.py,sha256=vD7YEqJHyUPK14UAGBT29cX9Cjvq1uHDfeiYudaxgAw,1746
@@ -38,7 +38,7 @@ symbolchain/nem/SharedKey.py,sha256=owBUV_XNo1wCby0b4Amz1Bl6uzTeQmiSFy7UcWFo00I,
38
38
  symbolchain/nem/TransactionFactory.py,sha256=IaKsLdTmW8ZU9s5kaUcaGl7P91awR8BMDfX_zWTAO04,4170
39
39
  symbolchain/nem/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
40
  symbolchain/ripemd160.py,sha256=u2uv8wJY5FY8tll_EfiGE5o65Ri6E-8HbynvJUPBJa8,429
41
- symbolchain/sc/__init__.py,sha256=axRbsZf_j33DLTJ2TvIKg6aAxVG5xo1I2w51lzO2h9M,286967
41
+ symbolchain/sc/__init__.py,sha256=7LmLmA9UxXcwPHIerp8YjUoTplHAUjV1vtEqx007adc,309662
42
42
  symbolchain/symbol/IdGenerator.py,sha256=4CWW5EekbmULDDukscs73ZFN_U179hAacK3luL7Q0TA,1696
43
43
  symbolchain/symbol/KeyPair.py,sha256=CkQh7oOeVRbjKewTfln0t1PZckcTuIXb2roY1zZjVrc,1506
44
44
  symbolchain/symbol/Merkle.py,sha256=FrCwnveXEoXEx7xFP4UC_htjAVuVeUNbvnh8YDdy3z0,7243
@@ -49,6 +49,6 @@ symbolchain/symbol/SharedKey.py,sha256=Bg1qYW_iMNYKtokep5S1m9b7GfywM5OGaCrVUdt01
49
49
  symbolchain/symbol/TransactionFactory.py,sha256=65N6UHDwrzNyHnpxkw-RmjuC32Znto1B9TH5OgcD1Oo,3957
50
50
  symbolchain/symbol/VotingKeysGenerator.py,sha256=tuJ6yl2CqqQ9uupAw3z-GJIW20WOsblcLQb2_fPUCDE,1686
51
51
  symbolchain/symbol/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
- symbol_sdk_python-3.2.2.dist-info/METADATA,sha256=H3eZti6Yn4oq90_uE111bCzAPZkgrfnU2VWN9f1Spzg,5584
53
- symbol_sdk_python-3.2.2.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
54
- symbol_sdk_python-3.2.2.dist-info/RECORD,,
52
+ symbol_sdk_python-3.2.3.dist-info/METADATA,sha256=E-Q5OZVVupO5MjneN1tpBwQ0OUTAcj7JOY4tdb65Ujk,5584
53
+ symbol_sdk_python-3.2.3.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
54
+ symbol_sdk_python-3.2.3.dist-info/RECORD,,
symbolchain/BaseValue.py CHANGED
@@ -49,3 +49,7 @@ class BaseValue(Ordered):
49
49
  unsigned_value = self.value + upper_bound_plus_one
50
50
 
51
51
  return f'0x{unsigned_value:0{self.size * 2}X}'
52
+
53
+ def to_json(self):
54
+ """Returns representation of this object that can be stored in JSON."""
55
+ return str(self.value) if 8 <= self.size else self.value
symbolchain/ByteArray.py CHANGED
@@ -37,3 +37,7 @@ class ByteArray(Ordered):
37
37
 
38
38
  def __str__(self):
39
39
  return hexlify(self.bytes).decode('utf8').upper()
40
+
41
+ def to_json(self):
42
+ """Returns representation of this object that can be stored in JSON."""
43
+ return str(self)
symbolchain/Network.py CHANGED
@@ -9,7 +9,7 @@ class Network:
9
9
  """Represents a network."""
10
10
 
11
11
  def __init__(self, name, identifier, datetime_converter, address_class, network_timestamp_class):
12
- # pylint: disable=too-many-arguments
12
+ # pylint: disable=too-many-arguments,too-many-positional-arguments
13
13
 
14
14
  """Creates a new network with the specified properties."""
15
15
  self.name = name
@@ -93,16 +93,18 @@ class NemFacade:
93
93
  return Hash256(sha3.keccak_256(non_verifiable_transaction.serialize()).digest())
94
94
 
95
95
  @staticmethod
96
- def sign_transaction(key_pair, transaction):
97
- """Signs a NEM transaction."""
96
+ def extract_signing_payload(transaction):
97
+ """Gets the payload to sign given a NEM transaction."""
98
98
  non_verifiable_transaction = TransactionFactory.to_non_verifiable_transaction(transaction)
99
- return key_pair.sign(non_verifiable_transaction.serialize())
99
+ return non_verifiable_transaction.serialize()
100
100
 
101
- @staticmethod
102
- def verify_transaction(transaction, signature):
101
+ def sign_transaction(self, key_pair, transaction):
102
+ """Signs a NEM transaction."""
103
+ return key_pair.sign(self.extract_signing_payload(transaction))
104
+
105
+ def verify_transaction(self, transaction, signature):
103
106
  """Verifies a NEM transaction."""
104
- non_verifiable_transaction = TransactionFactory.to_non_verifiable_transaction(transaction)
105
- return Verifier(transaction.signer_public_key).verify(non_verifiable_transaction.serialize(), signature)
107
+ return Verifier(transaction.signer_public_key).verify(self.extract_signing_payload(transaction), signature)
106
108
 
107
109
  def bip32_path(self, account_id):
108
110
  """Creates a network compatible BIP32 path for the specified account."""
@@ -59,6 +59,10 @@ class SymbolAccount(SymbolPublicAccount):
59
59
  """Cosigns a Symbol transaction."""
60
60
  return self._facade.cosign_transaction(self.key_pair, transaction, detached)
61
61
 
62
+ def cosign_transaction_hash(self, transaction_hash, detached=False):
63
+ """Cosigns a Symbol transaction hash."""
64
+ return self._facade.cosign_transaction_hash(self.key_pair, transaction_hash, detached)
65
+
62
66
  # endregion
63
67
 
64
68
 
@@ -116,22 +120,23 @@ class SymbolFacade:
116
120
  hasher.update(self._transaction_data_buffer(transaction.serialize()))
117
121
  return Hash256(hasher.digest())
118
122
 
119
- def sign_transaction(self, key_pair, transaction):
120
- """Signs a Symbol transaction."""
123
+ def extract_signing_payload(self, transaction):
124
+ """Gets the payload to sign given a Symbol transaction."""
121
125
  sign_buffer = self.network.generation_hash_seed.bytes
122
126
  sign_buffer += self._transaction_data_buffer(transaction.serialize())
123
- return key_pair.sign(sign_buffer)
127
+ return sign_buffer
128
+
129
+ def sign_transaction(self, key_pair, transaction):
130
+ """Signs a Symbol transaction."""
131
+ return key_pair.sign(self.extract_signing_payload(transaction))
124
132
 
125
133
  def verify_transaction(self, transaction, signature):
126
134
  """Verifies a Symbol transaction."""
127
- verify_buffer = self.network.generation_hash_seed.bytes
128
- verify_buffer += self._transaction_data_buffer(transaction.serialize())
129
- return Verifier(transaction.signer_public_key).verify(verify_buffer, signature)
130
-
131
- def cosign_transaction(self, key_pair, transaction, detached=False):
132
- """Cosigns a Symbol transaction."""
133
- transaction_hash = self.hash_transaction(transaction)
135
+ return Verifier(transaction.signer_public_key).verify(self.extract_signing_payload(transaction), signature)
134
136
 
137
+ @staticmethod
138
+ def cosign_transaction_hash(key_pair, transaction_hash, detached=False):
139
+ """Cosigns a Symbol transaction hash."""
135
140
  cosignature = sc.DetachedCosignature() if detached else sc.Cosignature()
136
141
  if detached:
137
142
  cosignature.parent_hash = sc.Hash256(transaction_hash.bytes)
@@ -141,6 +146,11 @@ class SymbolFacade:
141
146
  cosignature.signature = sc.Signature(key_pair.sign(transaction_hash.bytes).bytes)
142
147
  return cosignature
143
148
 
149
+ def cosign_transaction(self, key_pair, transaction, detached=False):
150
+ """Cosigns a Symbol transaction."""
151
+ transaction_hash = self.hash_transaction(transaction)
152
+ return self.cosign_transaction_hash(key_pair, transaction_hash, detached)
153
+
144
154
  @staticmethod
145
155
  def hash_embedded_transactions(embedded_transactions):
146
156
  """Hashes embedded transactions of an aggregate."""