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.
Files changed (54) hide show
  1. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/PKG-INFO +3 -3
  2. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/pyproject.toml +3 -3
  3. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/NetworkTimestamp.py +1 -1
  4. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/RuleBasedTransactionFactory.py +1 -0
  5. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/facade/NemFacade.py +46 -0
  6. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/facade/SymbolFacade.py +49 -0
  7. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nc/__init__.py +368 -2713
  8. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/MessageEncoder.py +6 -0
  9. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/TransactionFactory.py +5 -0
  10. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/ripemd160.py +1 -0
  11. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/sc/__init__.py +1089 -7018
  12. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/MessageEncoder.py +6 -0
  13. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/Metadata.py +14 -0
  14. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/Network.py +22 -0
  15. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/TransactionFactory.py +10 -0
  16. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/README.md +0 -0
  17. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/AccountDescriptorRepository.py +0 -0
  18. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/ArrayHelpers.py +0 -0
  19. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/BaseValue.py +0 -0
  20. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/Bip32.py +0 -0
  21. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/BlockchainSettings.py +0 -0
  22. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/BufferReader.py +0 -0
  23. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/BufferWriter.py +0 -0
  24. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/ByteArray.py +0 -0
  25. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/Cipher.py +0 -0
  26. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/CodeWordsEncoder.py +0 -0
  27. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/CryptoTypes.py +0 -0
  28. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/DiceMnemonicGenerator.py +0 -0
  29. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/Network.py +0 -0
  30. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/NodeDescriptorRepository.py +0 -0
  31. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/Ordered.py +0 -0
  32. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/PrivateKeyStorage.py +0 -0
  33. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/QrSignatureStorage.py +0 -0
  34. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/QrStorage.py +0 -0
  35. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/SharedKey.py +0 -0
  36. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/TransactionDescriptorProcessor.py +0 -0
  37. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/Transforms.py +0 -0
  38. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/__init__.py +0 -0
  39. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/external/__init__.py +0 -0
  40. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/external/ed25519.py +0 -0
  41. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/facade/BatchOperations.py +0 -0
  42. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/facade/__init__.py +0 -0
  43. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/impl/CipherHelpers.py +0 -0
  44. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/impl/__init__.py +0 -0
  45. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/KeyPair.py +0 -0
  46. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/Network.py +0 -0
  47. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/SharedKey.py +0 -0
  48. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/nem/__init__.py +0 -0
  49. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/IdGenerator.py +0 -0
  50. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/KeyPair.py +0 -0
  51. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/Merkle.py +0 -0
  52. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/SharedKey.py +0 -0
  53. {symbol_sdk_python-3.1.0 → symbol_sdk_python-3.2.2}/symbolchain/symbol/VotingKeysGenerator.py +0 -0
  54. {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.1.0
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 (>=41.0.3,<41.1.0)
18
+ Requires-Dist: cryptography (>=42.0.2,<42.1.0)
19
19
  Requires-Dist: mnemonic (>=0.20,<1.0)
20
- Requires-Dist: pillow (>=10.0.0,<10.1.0)
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.1.0'
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 = ">=41.0.3,<41.1.0"
21
+ cryptography = ">=42.0.2,<42.1.0"
22
22
  mnemonic = ">=0.20,<1.0"
23
- pillow = ">=10.0.0,<10.1.0"
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) / datetime.timedelta(**{self.time_units: 1})
53
+ return (reference_datetime - self.epoch) // datetime.timedelta(**{self.time_units: 1})
@@ -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()