symbol-sdk-python 3.1.0__tar.gz → 3.2.2__tar.gz
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.
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/PKG-INFO +3 -3
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/pyproject.toml +3 -3
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/NetworkTimestamp.py +1 -1
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/RuleBasedTransactionFactory.py +1 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/facade/NemFacade.py +46 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/facade/SymbolFacade.py +49 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nc/__init__.py +368 -2713
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/MessageEncoder.py +6 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/TransactionFactory.py +5 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/ripemd160.py +1 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/sc/__init__.py +1089 -7018
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/MessageEncoder.py +6 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/Metadata.py +14 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/Network.py +22 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/TransactionFactory.py +10 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/README.md +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/AccountDescriptorRepository.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/ArrayHelpers.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/BaseValue.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/Bip32.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/BlockchainSettings.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/BufferReader.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/BufferWriter.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/ByteArray.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/Cipher.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/CodeWordsEncoder.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/CryptoTypes.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/DiceMnemonicGenerator.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/Network.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/NodeDescriptorRepository.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/Ordered.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/PrivateKeyStorage.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/QrSignatureStorage.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/QrStorage.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/SharedKey.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/TransactionDescriptorProcessor.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/Transforms.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/__init__.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/external/__init__.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/external/ed25519.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/facade/BatchOperations.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/facade/__init__.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/impl/CipherHelpers.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/impl/__init__.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/KeyPair.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/Network.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/SharedKey.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/__init__.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/IdGenerator.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/KeyPair.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/Merkle.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/SharedKey.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/VotingKeysGenerator.py +0 -0
- {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: symbol-sdk-python
|
|
3
|
-
Version: 3.
|
|
3
|
+
Version: 3.2.2
|
|
4
4
|
Summary: Symbol SDK
|
|
5
5
|
Home-page: https://github.com/symbol/symbol/tree/main/sdk/python
|
|
6
6
|
License: MIT
|
|
@@ -15,9 +15,9 @@ Classifier: Programming Language :: Python :: 3
|
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.9
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.10
|
|
17
17
|
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
-
Requires-Dist: cryptography (>=
|
|
18
|
+
Requires-Dist: cryptography (>=42.0.2,<42.1.0)
|
|
19
19
|
Requires-Dist: mnemonic (>=0.20,<1.0)
|
|
20
|
-
Requires-Dist: pillow (>=10.
|
|
20
|
+
Requires-Dist: pillow (>=10.3.0,<10.4.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)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[tool.poetry]
|
|
2
2
|
name = 'symbol-sdk-python'
|
|
3
|
-
version = '3.
|
|
3
|
+
version = '3.2.2'
|
|
4
4
|
description = 'Symbol SDK'
|
|
5
5
|
authors = ['Symbol Contributors <contributors@symbol.dev>']
|
|
6
6
|
maintainers = ['Symbol Contributors <contributors@symbol.dev>']
|
|
@@ -18,9 +18,9 @@ classifiers = ['Programming Language :: Python :: 3.9', 'Programming Language ::
|
|
|
18
18
|
|
|
19
19
|
[tool.poetry.dependencies]
|
|
20
20
|
python = "^3.9"
|
|
21
|
-
cryptography = ">=
|
|
21
|
+
cryptography = ">=42.0.2,<42.1.0"
|
|
22
22
|
mnemonic = ">=0.20,<1.0"
|
|
23
|
-
pillow = ">=10.
|
|
23
|
+
pillow = ">=10.3.0,<10.4.0"
|
|
24
24
|
pynacl = ">=1.5.0,<1.6.0"
|
|
25
25
|
pyyaml = ">=6.0.1,<6.1.0"
|
|
26
26
|
pyzbar = ">=0.1.9,<0.2.0"
|
|
@@ -50,4 +50,4 @@ class NetworkTimestampDatetimeConverter:
|
|
|
50
50
|
if reference_datetime < self.epoch:
|
|
51
51
|
raise ValueError('timestamp cannot be before epoch')
|
|
52
52
|
|
|
53
|
-
return (reference_datetime - self.epoch)
|
|
53
|
+
return (reference_datetime - self.epoch) // datetime.timedelta(**{self.time_units: 1})
|
{symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/RuleBasedTransactionFactory.py
RENAMED
|
@@ -71,6 +71,7 @@ class RuleBasedTransactionFactory:
|
|
|
71
71
|
"""Creates flag type parser."""
|
|
72
72
|
flags_class = self._get_module_class(name)
|
|
73
73
|
string_to_enum = dict(map(lambda key: (key.name.lower(), key), flags_class))
|
|
74
|
+
string_to_enum['none'] = flags_class(0) # automatically add none => 0 mapping (required for python 3.11+)
|
|
74
75
|
|
|
75
76
|
def parser(flags):
|
|
76
77
|
if isinstance(flags, str):
|
|
@@ -1,12 +1,46 @@
|
|
|
1
|
+
from datetime import datetime, timezone
|
|
2
|
+
|
|
1
3
|
import sha3
|
|
2
4
|
|
|
3
5
|
from ..CryptoTypes import Hash256, PrivateKey, PublicKey
|
|
4
6
|
from ..nem.KeyPair import KeyPair, Verifier
|
|
7
|
+
from ..nem.MessageEncoder import MessageEncoder
|
|
5
8
|
from ..nem.Network import Address, Network
|
|
6
9
|
from ..nem.SharedKey import SharedKey
|
|
7
10
|
from ..nem.TransactionFactory import TransactionFactory
|
|
8
11
|
from ..Network import NetworkLocator
|
|
9
12
|
|
|
13
|
+
# region NemPublicAccount / NemAccount
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class NemPublicAccount:
|
|
17
|
+
"""NEM public account."""
|
|
18
|
+
|
|
19
|
+
def __init__(self, facade, public_key):
|
|
20
|
+
"""Creates a NEM public account."""
|
|
21
|
+
self._facade = facade
|
|
22
|
+
self.public_key = public_key
|
|
23
|
+
self.address = self._facade.network.public_key_to_address(self.public_key)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class NemAccount(NemPublicAccount):
|
|
27
|
+
"""NEM account."""
|
|
28
|
+
|
|
29
|
+
def __init__(self, facade, key_pair):
|
|
30
|
+
"""Creates a NEM account."""
|
|
31
|
+
super().__init__(facade, key_pair.public_key)
|
|
32
|
+
self.key_pair = key_pair
|
|
33
|
+
|
|
34
|
+
def message_encoder(self):
|
|
35
|
+
"""Creates a message encoder that can be used for encrypting and encoding messages between two parties."""
|
|
36
|
+
return MessageEncoder(self.key_pair)
|
|
37
|
+
|
|
38
|
+
def sign_transaction(self, transaction):
|
|
39
|
+
"""Signs a NEM transaction."""
|
|
40
|
+
return self._facade.sign_transaction(self.key_pair, transaction)
|
|
41
|
+
|
|
42
|
+
# endregion
|
|
43
|
+
|
|
10
44
|
|
|
11
45
|
class NemFacade:
|
|
12
46
|
"""Facade used to interact with NEM blockchain."""
|
|
@@ -40,6 +74,18 @@ class NemFacade:
|
|
|
40
74
|
PublicKey: 'public_key'
|
|
41
75
|
}
|
|
42
76
|
|
|
77
|
+
def now(self):
|
|
78
|
+
"""Creates a network timestamp representing the current time."""
|
|
79
|
+
return self.network.from_datetime(datetime.now(timezone.utc))
|
|
80
|
+
|
|
81
|
+
def create_public_account(self, public_key):
|
|
82
|
+
"""Creates a NEM public account from a public key."""
|
|
83
|
+
return NemPublicAccount(self, public_key)
|
|
84
|
+
|
|
85
|
+
def create_account(self, private_key):
|
|
86
|
+
"""Creates a NEM account from a private key."""
|
|
87
|
+
return NemAccount(self, KeyPair(private_key))
|
|
88
|
+
|
|
43
89
|
@staticmethod
|
|
44
90
|
def hash_transaction(transaction):
|
|
45
91
|
"""Hashes a NEM transaction."""
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import hashlib
|
|
2
|
+
from datetime import datetime, timezone
|
|
2
3
|
|
|
3
4
|
from .. import sc
|
|
4
5
|
from ..CryptoTypes import Hash256, PublicKey, Signature
|
|
5
6
|
from ..Network import NetworkLocator
|
|
6
7
|
from ..symbol.KeyPair import KeyPair, Verifier
|
|
7
8
|
from ..symbol.Merkle import MerkleHashBuilder
|
|
9
|
+
from ..symbol.MessageEncoder import MessageEncoder
|
|
8
10
|
from ..symbol.Network import Address, Network
|
|
9
11
|
from ..symbol.SharedKey import SharedKey
|
|
10
12
|
from ..symbol.TransactionFactory import TransactionFactory
|
|
@@ -25,6 +27,41 @@ AGGREGATE_HASHED_SIZE = sum(field[1] for field in [
|
|
|
25
27
|
])
|
|
26
28
|
|
|
27
29
|
|
|
30
|
+
# region SymbolPublicAccount / SymbolAccount
|
|
31
|
+
|
|
32
|
+
class SymbolPublicAccount:
|
|
33
|
+
"""Symbol public account."""
|
|
34
|
+
|
|
35
|
+
def __init__(self, facade, public_key):
|
|
36
|
+
"""Creates a Symbol public account."""
|
|
37
|
+
self._facade = facade
|
|
38
|
+
self.public_key = public_key
|
|
39
|
+
self.address = self._facade.network.public_key_to_address(self.public_key)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class SymbolAccount(SymbolPublicAccount):
|
|
43
|
+
"""Symbol account."""
|
|
44
|
+
|
|
45
|
+
def __init__(self, facade, key_pair):
|
|
46
|
+
"""Creates a Symbol account."""
|
|
47
|
+
super().__init__(facade, key_pair.public_key)
|
|
48
|
+
self.key_pair = key_pair
|
|
49
|
+
|
|
50
|
+
def message_encoder(self):
|
|
51
|
+
"""Creates a message encoder that can be used for encrypting and encoding messages between two parties."""
|
|
52
|
+
return MessageEncoder(self.key_pair)
|
|
53
|
+
|
|
54
|
+
def sign_transaction(self, transaction):
|
|
55
|
+
"""Signs a Symbol transaction."""
|
|
56
|
+
return self._facade.sign_transaction(self.key_pair, transaction)
|
|
57
|
+
|
|
58
|
+
def cosign_transaction(self, transaction, detached=False):
|
|
59
|
+
"""Cosigns a Symbol transaction."""
|
|
60
|
+
return self._facade.cosign_transaction(self.key_pair, transaction, detached)
|
|
61
|
+
|
|
62
|
+
# endregion
|
|
63
|
+
|
|
64
|
+
|
|
28
65
|
class SymbolFacade:
|
|
29
66
|
"""Facade used to interact with Symbol blockchain."""
|
|
30
67
|
|
|
@@ -58,6 +95,18 @@ class SymbolFacade:
|
|
|
58
95
|
PublicKey: 'public_key',
|
|
59
96
|
}
|
|
60
97
|
|
|
98
|
+
def now(self):
|
|
99
|
+
"""Creates a network timestamp representing the current time."""
|
|
100
|
+
return self.network.from_datetime(datetime.now(timezone.utc))
|
|
101
|
+
|
|
102
|
+
def create_public_account(self, public_key):
|
|
103
|
+
"""Creates a Symbol public account from a public key."""
|
|
104
|
+
return SymbolPublicAccount(self, public_key)
|
|
105
|
+
|
|
106
|
+
def create_account(self, private_key):
|
|
107
|
+
"""Creates a Symbol account from a private key."""
|
|
108
|
+
return SymbolAccount(self, KeyPair(private_key))
|
|
109
|
+
|
|
61
110
|
def hash_transaction(self, transaction):
|
|
62
111
|
"""Hashes a Symbol transaction."""
|
|
63
112
|
hasher = hashlib.sha3_256()
|