hive-nectar 0.0.5__py3-none-any.whl → 0.0.7__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.
Potentially problematic release.
This version of hive-nectar might be problematic. Click here for more details.
- {hive_nectar-0.0.5.dist-info → hive_nectar-0.0.7.dist-info}/METADATA +6 -3
- hive_nectar-0.0.7.dist-info/RECORD +91 -0
- nectar/account.py +43 -47
- nectar/amount.py +6 -11
- nectar/block.py +8 -9
- nectar/blockchain.py +10 -11
- nectar/blockchaininstance.py +4 -4
- nectar/blockchainobject.py +5 -6
- nectar/blurt.py +3 -4
- nectar/cli.py +14 -14
- nectar/comment.py +10 -11
- nectar/community.py +4 -5
- nectar/conveyor.py +3 -4
- nectar/exceptions.py +30 -24
- nectar/hive.py +3 -4
- nectar/hivesigner.py +2 -2
- nectar/imageuploader.py +2 -3
- nectar/price.py +6 -13
- nectar/rc.py +1 -2
- nectar/steem.py +3 -4
- nectar/transactionbuilder.py +12 -3
- nectar/version.py +1 -1
- nectar/vote.py +8 -9
- nectar/wallet.py +1 -1
- nectarapi/exceptions.py +20 -14
- nectarapi/graphenerpc.py +49 -76
- nectarapi/version.py +1 -1
- nectarbase/ledgertransactions.py +2 -3
- nectarbase/memo.py +9 -10
- nectarbase/objects.py +4 -5
- nectarbase/operations.py +3 -7
- nectarbase/version.py +1 -1
- nectargraphenebase/__init__.py +0 -1
- nectargraphenebase/account.py +16 -37
- nectargraphenebase/base58.py +5 -8
- nectargraphenebase/bip32.py +5 -11
- nectargraphenebase/bip38.py +6 -7
- nectargraphenebase/ecdsasig.py +32 -37
- nectargraphenebase/objects.py +6 -7
- nectargraphenebase/signedtransactions.py +10 -9
- nectargraphenebase/types.py +9 -19
- nectargraphenebase/unsignedtransactions.py +21 -28
- nectargraphenebase/version.py +1 -1
- nectarstorage/masterpassword.py +2 -3
- hive_nectar-0.0.5.dist-info/RECORD +0 -92
- nectargraphenebase/py23.py +0 -38
- {hive_nectar-0.0.5.dist-info → hive_nectar-0.0.7.dist-info}/WHEEL +0 -0
- {hive_nectar-0.0.5.dist-info → hive_nectar-0.0.7.dist-info}/entry_points.txt +0 -0
- {hive_nectar-0.0.5.dist-info → hive_nectar-0.0.7.dist-info}/licenses/LICENSE.txt +0 -0
nectargraphenebase/objects.py
CHANGED
|
@@ -4,13 +4,12 @@ import json
|
|
|
4
4
|
from nectargraphenebase.types import Id, JsonObj, Optional, String
|
|
5
5
|
|
|
6
6
|
from .operationids import operations
|
|
7
|
-
from .py23 import integer_types, py23_bytes, string_types
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
class Operation(object):
|
|
11
10
|
def __init__(self, op):
|
|
12
11
|
if isinstance(op, list) and len(op) == 2:
|
|
13
|
-
if isinstance(op[0],
|
|
12
|
+
if isinstance(op[0], int):
|
|
14
13
|
self.opId = op[0]
|
|
15
14
|
name = self.getOperationNameForId(self.opId)
|
|
16
15
|
else:
|
|
@@ -61,7 +60,7 @@ class Operation(object):
|
|
|
61
60
|
return class_
|
|
62
61
|
|
|
63
62
|
def __bytes__(self):
|
|
64
|
-
return
|
|
63
|
+
return bytes(Id(self.opId)) + bytes(self.op)
|
|
65
64
|
|
|
66
65
|
def __str__(self):
|
|
67
66
|
return json.dumps([self.opId, self.op.toJson()])
|
|
@@ -83,13 +82,13 @@ class GrapheneObject(object):
|
|
|
83
82
|
|
|
84
83
|
def __bytes__(self):
|
|
85
84
|
if self.data is None:
|
|
86
|
-
return
|
|
85
|
+
return bytes()
|
|
87
86
|
b = b""
|
|
88
87
|
for name, value in list(self.data.items()):
|
|
89
|
-
if isinstance(value,
|
|
90
|
-
b +=
|
|
88
|
+
if isinstance(value, str):
|
|
89
|
+
b += bytes(value, "utf-8")
|
|
91
90
|
else:
|
|
92
|
-
b +=
|
|
91
|
+
b += bytes(value)
|
|
93
92
|
return b
|
|
94
93
|
|
|
95
94
|
def __json__(self):
|
|
@@ -6,8 +6,6 @@ from collections import OrderedDict
|
|
|
6
6
|
|
|
7
7
|
import ecdsa
|
|
8
8
|
|
|
9
|
-
from nectargraphenebase.py23 import py23_bytes
|
|
10
|
-
|
|
11
9
|
from .account import PublicKey
|
|
12
10
|
from .chains import known_chains
|
|
13
11
|
from .ecdsasig import sign_message, verify_message
|
|
@@ -48,9 +46,12 @@ class Signed_Transaction(GrapheneObject):
|
|
|
48
46
|
if "signatures" not in kwargs:
|
|
49
47
|
kwargs["signatures"] = Array([])
|
|
50
48
|
else:
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
)
|
|
49
|
+
# Defensive: if a string, wrap in a list and log warning
|
|
50
|
+
sigs = kwargs["signatures"]
|
|
51
|
+
if isinstance(sigs, str):
|
|
52
|
+
log.warning("signatures was a string, converting to list to avoid type errors.")
|
|
53
|
+
sigs = [sigs]
|
|
54
|
+
kwargs["signatures"] = Array([Signature(unhexlify(a)) for a in sigs])
|
|
54
55
|
|
|
55
56
|
if "operations" in kwargs:
|
|
56
57
|
opklass = self.getOperationKlass()
|
|
@@ -83,7 +84,7 @@ class Signed_Transaction(GrapheneObject):
|
|
|
83
84
|
self.data.pop("signatures", None)
|
|
84
85
|
|
|
85
86
|
# Generage Hash of the seriliazed version
|
|
86
|
-
h = hashlib.sha256(
|
|
87
|
+
h = hashlib.sha256(bytes(self)).digest()
|
|
87
88
|
|
|
88
89
|
# recover signatures
|
|
89
90
|
self.data["signatures"] = sigs
|
|
@@ -133,7 +134,7 @@ class Signed_Transaction(GrapheneObject):
|
|
|
133
134
|
# Get message to sign
|
|
134
135
|
# bytes(self) will give the wire formated data according to
|
|
135
136
|
# GrapheneObject and the data given in __init__()
|
|
136
|
-
self.message = unhexlify(self.chainid) +
|
|
137
|
+
self.message = unhexlify(self.chainid) + bytes(self)
|
|
137
138
|
self.digest = hashlib.sha256(self.message).digest()
|
|
138
139
|
|
|
139
140
|
# restore signatures
|
|
@@ -150,13 +151,13 @@ class Signed_Transaction(GrapheneObject):
|
|
|
150
151
|
|
|
151
152
|
for signature in signatures:
|
|
152
153
|
if recover_parameter:
|
|
153
|
-
p = verify_message(self.message,
|
|
154
|
+
p = verify_message(self.message, bytes(signature))
|
|
154
155
|
else:
|
|
155
156
|
p = None
|
|
156
157
|
if p is None:
|
|
157
158
|
for i in range(4):
|
|
158
159
|
try:
|
|
159
|
-
p = verify_message(self.message,
|
|
160
|
+
p = verify_message(self.message, bytes(signature), recover_parameter=i)
|
|
160
161
|
phex = hexlify(p).decode("ascii")
|
|
161
162
|
pubKeysFound.append(phex)
|
|
162
163
|
except Exception:
|
nectargraphenebase/types.py
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
2
|
import json
|
|
3
3
|
import struct
|
|
4
|
-
import sys
|
|
5
4
|
import time
|
|
6
5
|
from binascii import hexlify, unhexlify
|
|
7
6
|
from calendar import timegm
|
|
8
7
|
from datetime import datetime
|
|
9
8
|
|
|
10
|
-
from .py23 import py23_bytes
|
|
11
|
-
|
|
12
9
|
timeformat = "%Y-%m-%dT%H:%M:%S%Z"
|
|
13
10
|
|
|
14
11
|
|
|
@@ -247,7 +244,7 @@ class Array(object):
|
|
|
247
244
|
|
|
248
245
|
def __bytes__(self):
|
|
249
246
|
"""Returns bytes representation."""
|
|
250
|
-
return
|
|
247
|
+
return bytes(self.length) + b"".join([bytes(a) for a in self.data])
|
|
251
248
|
|
|
252
249
|
def __str__(self):
|
|
253
250
|
"""Returns data as string."""
|
|
@@ -271,10 +268,8 @@ class PointInTime(object):
|
|
|
271
268
|
"""Returns bytes representation."""
|
|
272
269
|
if isinstance(self.data, datetime):
|
|
273
270
|
unixtime = timegm(self.data.timetuple())
|
|
274
|
-
elif sys.version > "3":
|
|
275
|
-
unixtime = timegm(time.strptime((self.data + "UTC"), timeformat))
|
|
276
271
|
else:
|
|
277
|
-
unixtime = timegm(time.strptime((self.data + "UTC"), timeformat
|
|
272
|
+
unixtime = timegm(time.strptime((self.data + "UTC"), timeformat))
|
|
278
273
|
if unixtime < 0:
|
|
279
274
|
return struct.pack("<i", unixtime)
|
|
280
275
|
return struct.pack("<I", unixtime)
|
|
@@ -331,22 +326,17 @@ class Optional(object):
|
|
|
331
326
|
def __bytes__(self):
|
|
332
327
|
"""Returns data as bytes."""
|
|
333
328
|
if not self.data:
|
|
334
|
-
return
|
|
329
|
+
return bytes(Bool(0))
|
|
335
330
|
else:
|
|
336
|
-
return (
|
|
337
|
-
py23_bytes(Bool(1)) + py23_bytes(self.data)
|
|
338
|
-
if py23_bytes(self.data)
|
|
339
|
-
else py23_bytes(Bool(0))
|
|
340
|
-
)
|
|
331
|
+
return bytes(Bool(1)) + bytes(self.data)
|
|
341
332
|
|
|
342
333
|
def __str__(self):
|
|
343
334
|
"""Returns data as string."""
|
|
344
335
|
return str(self.data)
|
|
345
336
|
|
|
346
337
|
def isempty(self):
|
|
347
|
-
if
|
|
348
|
-
|
|
349
|
-
return not bool(py23_bytes(self.data))
|
|
338
|
+
"""Returns True if data is empty, False otherwise."""
|
|
339
|
+
return not self.data
|
|
350
340
|
|
|
351
341
|
|
|
352
342
|
class Static_variant(object):
|
|
@@ -359,7 +349,7 @@ class Static_variant(object):
|
|
|
359
349
|
|
|
360
350
|
def __bytes__(self):
|
|
361
351
|
"""Returns bytes representation."""
|
|
362
|
-
return varint(self.type_id) +
|
|
352
|
+
return varint(self.type_id) + bytes(self.data)
|
|
363
353
|
|
|
364
354
|
def __str__(self):
|
|
365
355
|
"""Returns data as string."""
|
|
@@ -378,7 +368,7 @@ class Map(object):
|
|
|
378
368
|
b = b""
|
|
379
369
|
b += varint(len(self.data))
|
|
380
370
|
for e in self.data:
|
|
381
|
-
b +=
|
|
371
|
+
b += bytes(e[0]) + bytes(e[1])
|
|
382
372
|
return b
|
|
383
373
|
|
|
384
374
|
def __str__(self):
|
|
@@ -395,7 +385,7 @@ class Id(object):
|
|
|
395
385
|
|
|
396
386
|
def __bytes__(self):
|
|
397
387
|
"""Returns bytes representation."""
|
|
398
|
-
return
|
|
388
|
+
return bytes(self.data)
|
|
399
389
|
|
|
400
390
|
def __str__(self):
|
|
401
391
|
"""Returns data as string."""
|
|
@@ -8,12 +8,9 @@ from collections import OrderedDict
|
|
|
8
8
|
import ecdsa
|
|
9
9
|
from asn1crypto.core import OctetString
|
|
10
10
|
|
|
11
|
-
from nectargraphenebase.py23 import py23_bytes
|
|
12
|
-
|
|
13
11
|
from .bip32 import parse_path
|
|
14
12
|
from .chains import known_chains
|
|
15
13
|
from .objects import Operation, isArgsThisClass
|
|
16
|
-
from .py23 import py23_chr, string_types
|
|
17
14
|
from .types import (
|
|
18
15
|
Array,
|
|
19
16
|
JsonObj,
|
|
@@ -46,22 +43,22 @@ class GrapheneObjectASN1(object):
|
|
|
46
43
|
|
|
47
44
|
def __bytes__(self):
|
|
48
45
|
if self.data is None:
|
|
49
|
-
return
|
|
46
|
+
return bytes()
|
|
50
47
|
b = b""
|
|
51
48
|
output = b""
|
|
52
49
|
for name, value in list(self.data.items()):
|
|
53
50
|
if name == "operations":
|
|
54
51
|
for operation in value:
|
|
55
|
-
if isinstance(value,
|
|
56
|
-
b =
|
|
52
|
+
if isinstance(value, str):
|
|
53
|
+
b = bytes(operation, "utf-8")
|
|
57
54
|
else:
|
|
58
|
-
b =
|
|
55
|
+
b = bytes(operation)
|
|
59
56
|
output += OctetString(b).dump()
|
|
60
57
|
elif name != "signatures":
|
|
61
|
-
if isinstance(value,
|
|
62
|
-
b =
|
|
58
|
+
if isinstance(value, str):
|
|
59
|
+
b = bytes(value, "utf-8")
|
|
63
60
|
else:
|
|
64
|
-
b =
|
|
61
|
+
b = bytes(value)
|
|
65
62
|
output += OctetString(b).dump()
|
|
66
63
|
return output
|
|
67
64
|
|
|
@@ -123,7 +120,7 @@ class Unsigned_Transaction(GrapheneObjectASN1):
|
|
|
123
120
|
operations_count = len(kwargs["operations"])
|
|
124
121
|
# opklass = self.getOperationKlass()
|
|
125
122
|
# if all([not isinstance(a, opklass) for a in kwargs["operations"]]):
|
|
126
|
-
# kwargs['operations'] = Array([opklass(a,
|
|
123
|
+
# kwargs['operations'] = Array([opklass(a, ) for a in kwargs["operations"]])
|
|
127
124
|
# else:
|
|
128
125
|
# kwargs['operations'] = (kwargs["operations"])
|
|
129
126
|
|
|
@@ -150,7 +147,7 @@ class Unsigned_Transaction(GrapheneObjectASN1):
|
|
|
150
147
|
self.data.pop("signatures", None)
|
|
151
148
|
|
|
152
149
|
# Generage Hash of the seriliazed version
|
|
153
|
-
h = hashlib.sha256(
|
|
150
|
+
h = hashlib.sha256(bytes(self)).digest()
|
|
154
151
|
|
|
155
152
|
# recover signatures
|
|
156
153
|
self.data["signatures"] = sigs
|
|
@@ -204,16 +201,16 @@ class Unsigned_Transaction(GrapheneObjectASN1):
|
|
|
204
201
|
for name, value in list(self.data.items()):
|
|
205
202
|
if name == "operations":
|
|
206
203
|
for operation in value:
|
|
207
|
-
if isinstance(value,
|
|
208
|
-
b =
|
|
204
|
+
if isinstance(value, str):
|
|
205
|
+
b = bytes(operation, "utf-8")
|
|
209
206
|
else:
|
|
210
|
-
b =
|
|
207
|
+
b = bytes(operation)
|
|
211
208
|
self.message += OctetString(b).dump()
|
|
212
209
|
elif name != "signatures":
|
|
213
|
-
if isinstance(value,
|
|
214
|
-
b =
|
|
210
|
+
if isinstance(value, str):
|
|
211
|
+
b = bytes(value, "utf-8")
|
|
215
212
|
else:
|
|
216
|
-
b =
|
|
213
|
+
b = bytes(value)
|
|
217
214
|
self.message += OctetString(b).dump()
|
|
218
215
|
|
|
219
216
|
self.digest = hashlib.sha256(self.message).digest()
|
|
@@ -251,16 +248,12 @@ class Unsigned_Transaction(GrapheneObjectASN1):
|
|
|
251
248
|
if first:
|
|
252
249
|
total_size = int(len(path)) + 1 + len(chunk)
|
|
253
250
|
apdu = (
|
|
254
|
-
unhexlify("d4040000")
|
|
255
|
-
+ py23_chr(total_size)
|
|
256
|
-
+ py23_chr(path_size)
|
|
257
|
-
+ path
|
|
258
|
-
+ chunk
|
|
251
|
+
unhexlify("d4040000") + bytes([total_size]) + bytes([path_size]) + path + chunk
|
|
259
252
|
)
|
|
260
253
|
first = False
|
|
261
254
|
else:
|
|
262
255
|
total_size = len(chunk)
|
|
263
|
-
apdu = unhexlify("d4048000") +
|
|
256
|
+
apdu = unhexlify("d4048000") + bytes([total_size]) + chunk
|
|
264
257
|
result.append(apdu)
|
|
265
258
|
offset += len(chunk)
|
|
266
259
|
return result
|
|
@@ -270,14 +263,14 @@ class Unsigned_Transaction(GrapheneObjectASN1):
|
|
|
270
263
|
if not request_screen_approval:
|
|
271
264
|
return (
|
|
272
265
|
unhexlify("d4020001")
|
|
273
|
-
+
|
|
274
|
-
+
|
|
266
|
+
+ bytes([int(len(path)) + 1])
|
|
267
|
+
+ bytes([int(len(path) / 4)])
|
|
275
268
|
+ path
|
|
276
269
|
)
|
|
277
270
|
else:
|
|
278
271
|
return (
|
|
279
272
|
unhexlify("d4020101")
|
|
280
|
-
+
|
|
281
|
-
+
|
|
273
|
+
+ bytes([int(len(path)) + 1])
|
|
274
|
+
+ bytes([int(len(path) / 4)])
|
|
282
275
|
+ path
|
|
283
276
|
)
|
nectargraphenebase/version.py
CHANGED
nectarstorage/masterpassword.py
CHANGED
|
@@ -8,7 +8,6 @@ from binascii import hexlify
|
|
|
8
8
|
|
|
9
9
|
from nectargraphenebase import bip38
|
|
10
10
|
from nectargraphenebase.aes import AESCipher
|
|
11
|
-
from nectargraphenebase.py23 import py23_bytes
|
|
12
11
|
|
|
13
12
|
from .exceptions import WalletLocked, WrongMasterPasswordException
|
|
14
13
|
|
|
@@ -192,7 +191,7 @@ class MasterPassword(object):
|
|
|
192
191
|
|
|
193
192
|
def deriveChecksum(self, s):
|
|
194
193
|
"""Derive the checksum"""
|
|
195
|
-
checksum = hashlib.sha256(
|
|
194
|
+
checksum = hashlib.sha256(bytes(s, "ascii")).hexdigest()
|
|
196
195
|
return checksum[:4]
|
|
197
196
|
|
|
198
197
|
def encrypt_text(self, txt):
|
|
@@ -216,7 +215,7 @@ class MasterPassword(object):
|
|
|
216
215
|
checksum, encrypted_text = enctxt.split("$")
|
|
217
216
|
try:
|
|
218
217
|
decrypted_text = aes.decrypt(encrypted_text)
|
|
219
|
-
except:
|
|
218
|
+
except Exception:
|
|
220
219
|
raise WrongMasterPasswordException
|
|
221
220
|
if checksum != self.deriveChecksum(decrypted_text):
|
|
222
221
|
raise WrongMasterPasswordException
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
nectar/__init__.py,sha256=YH9ietjJFhFxTPwQ3K9iw8VJZ__CNK5QTQeGcw1iKzk,503
|
|
2
|
-
nectar/account.py,sha256=ZstMVwgllIKoOSnTmSpL3o2okrkL3-qqTwmwZyJQxyI,172273
|
|
3
|
-
nectar/amount.py,sha256=Zpk-BAoRt1QjwO32CIBmXpCBIhyU1qHm_skYPjfboXg,18235
|
|
4
|
-
nectar/asciichart.py,sha256=DwPyZAqne6o9L_PPRtlw6Xj0QdOZ-aId1lpOnmbyc6Q,8828
|
|
5
|
-
nectar/asset.py,sha256=spGsJmlVQeZ6-oYhcwmQKsI3gpGmrpCzimYO1Qv4MtA,2725
|
|
6
|
-
nectar/block.py,sha256=7nXVaYt8_tu9TJD6Zcr4Vo3owK8Rv8VKueWygawml3U,16064
|
|
7
|
-
nectar/blockchain.py,sha256=BBXPc3UQ5kM-sjptQnvDosIhRXCK4gN3N1mXBSi1XzQ,49061
|
|
8
|
-
nectar/blockchaininstance.py,sha256=mrHuhHsR7h-becNe_bE8WieFqMFyz49s-LecmC_k134,93119
|
|
9
|
-
nectar/blockchainobject.py,sha256=ZlWeOWGMoHyATgw20YfPV47OYlwuOpO75hmf0c9IC_4,7095
|
|
10
|
-
nectar/blurt.py,sha256=cZoUyAdr_HdUTm8K3N-PyaFYfpBL_WmomFWeWTHbeIA,23070
|
|
11
|
-
nectar/cli.py,sha256=jYi_EGZKeML7fvVX3g59uqWsUPL2e72NkxM4qFFrjLM,227475
|
|
12
|
-
nectar/comment.py,sha256=Hqj1TL9vKCWmDnBikVG8yCl7hgAwPBfqN_pkDsjtaxo,46791
|
|
13
|
-
nectar/community.py,sha256=XyxIfdpIWart70MM2ojlZTfbKcRYr6qxGcWtEQNHfuI,17990
|
|
14
|
-
nectar/constants.py,sha256=lrspBwCz9BE0YZY10DMS98oPwwxgmI0LzFdlQ7v53Ig,4974
|
|
15
|
-
nectar/conveyor.py,sha256=dpvaVLaR48Tn56fkCUl5MoDQDcR3eLcrIKYm6ctZkRM,11265
|
|
16
|
-
nectar/discussions.py,sha256=n-4GnYvnDc5AwFdUHSA9wTfdCmLWHb9h06U4vWq05q4,66439
|
|
17
|
-
nectar/exceptions.py,sha256=fTwnJo0VxKrCLV6okNSkInyQLHOj0uaoBD8syq1h9Fw,2639
|
|
18
|
-
nectar/hive.py,sha256=ota3Ttp_K2Eyy34UyWnAdYhI8eEX1uS-CvzalaFqSvc,22254
|
|
19
|
-
nectar/hivesigner.py,sha256=olHHuLtBrjN8PgXfGTeMNzshwi7WtzdcrLuyYLBeIhk,13998
|
|
20
|
-
nectar/imageuploader.py,sha256=kQd-IKrF9K4D5F-vnm8iRC3AuJa-fpozTpKUkKSr0ig,2722
|
|
21
|
-
nectar/instance.py,sha256=oUAycW1q5ynM3M4O9a0drgY7e8UBExTj69aMxrOjxwg,3905
|
|
22
|
-
nectar/market.py,sha256=mlKKsq6DQ4WCLaqNnuuwbJM4qUiejy5pGdXIPKK2Sug,41972
|
|
23
|
-
nectar/memo.py,sha256=lTIuPrX-kPynOa-9q6kJHRzb9BfJjSf0kdpipwEXnY8,17777
|
|
24
|
-
nectar/message.py,sha256=lVGaydsxh8oMTS90khho3DtqxhzgIrt4NmjxwyP0X3k,13019
|
|
25
|
-
nectar/nodelist.py,sha256=3OPrfVVaI6Wza-yuqDfryoCgCA4dDUL64x6wwYqPSFA,15219
|
|
26
|
-
nectar/price.py,sha256=WV1ix2cuWHPIFq4cFJZD37ud-9BDBpvlv4BznI_cGTI,21270
|
|
27
|
-
nectar/profile.py,sha256=t-pqC2DZxzvTV2XLU6iZWT1NdHuk77A_iiisbA0QIOM,1921
|
|
28
|
-
nectar/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
-
nectar/rc.py,sha256=BAc88X1mObL2FQSm4ABhBsRfWDBHkee0SCigZ6QlA2c,12825
|
|
30
|
-
nectar/snapshot.py,sha256=_5hsrmJDpPoWTYtQGZ2grMMuuGBInOGS0ip9gv5-RJo,31696
|
|
31
|
-
nectar/steem.py,sha256=JwfO-dp7HT3mVEZVunHNp87gFbdO8e1tcpXQs_MygJ8,23916
|
|
32
|
-
nectar/storage.py,sha256=yYsWc12fOUKEAkSn5wKGS-wSvsac3sMVn6uzLu_pn8c,1855
|
|
33
|
-
nectar/transactionbuilder.py,sha256=j5PD3Wm_w9gHnKJ1Ug3sxz3RWPclWt-MQIO5ox027X8,25443
|
|
34
|
-
nectar/utils.py,sha256=OGeLuO_nYDAvcX-onrm4xjn1L0binq8Glelgg6RdlSo,18882
|
|
35
|
-
nectar/version.py,sha256=jO96tXyyVF3CBczqrDOywR6SvXRBy-ZjyQi9XlqyjQU,76
|
|
36
|
-
nectar/vote.py,sha256=sO_ukJMEcUO_WI-D2EwbAiiRLApRQ1fyiwyX7YSAiOk,20222
|
|
37
|
-
nectar/wallet.py,sha256=pgbiLJbwXKMiR7EOtuVFee6s3nAdpILHVQ5iPNy7zhs,16222
|
|
38
|
-
nectar/witness.py,sha256=88XYjhTRNhyu9hfIG0sm3Pg1hC9eooo3HhW5EhcaYps,23600
|
|
39
|
-
nectarapi/__init__.py,sha256=c0J2Z-lHOvkSch9bZS3LVQZjKku2XxnYMZToq7OAkfI,157
|
|
40
|
-
nectarapi/exceptions.py,sha256=FnS4-ywWDxEAtV65Hd-4XxAV7j1wRgtQRLIvIGxA0Xs,1824
|
|
41
|
-
nectarapi/graphenerpc.py,sha256=H3u8ybNqa4RgWD4PqbfnEPkdCXOj1Mn3IGAyuUe4KdY,23495
|
|
42
|
-
nectarapi/node.py,sha256=mjK-fMFJ2icDaOUBoiUuDU-beo3aQK0HGwt0l0pC0YQ,5456
|
|
43
|
-
nectarapi/noderpc.py,sha256=FxJz1KbjU6FbNdyp7ovOSZ8TbmD_xqQclKjeBP42Jls,10093
|
|
44
|
-
nectarapi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
|
-
nectarapi/rpcutils.py,sha256=0nKCrEeNHFSEU3AjaOGNh-2pjc8qw4mRA9lCrBkP1FQ,2910
|
|
46
|
-
nectarapi/version.py,sha256=jO96tXyyVF3CBczqrDOywR6SvXRBy-ZjyQi9XlqyjQU,76
|
|
47
|
-
nectarbase/__init__.py,sha256=U18vyJDvtsto3gHN9Fp3DHlcPd954sG06duHc72pNjs,234
|
|
48
|
-
nectarbase/ledgertransactions.py,sha256=97WXhNhcjNDf_XjXDD08lBMzYmvHC63oZMLRQqVNvWY,2545
|
|
49
|
-
nectarbase/memo.py,sha256=_-y9bxGr1DyEaD2-twVJ5Y-1ttFD-VJLyVAYzlT2ijw,7570
|
|
50
|
-
nectarbase/objects.py,sha256=ukBsUft2actWwlka2prwZkZtTKwLL0HgJfQtAvZfLIs,14894
|
|
51
|
-
nectarbase/objecttypes.py,sha256=zrKBFwoUJXvWDSn8RugWioKqf7TS7dY0EEXVAZv_-K0,690
|
|
52
|
-
nectarbase/operationids.py,sha256=wpKltPFlInpueyvLl3XCI2fjP9ziIs4MStoIj2mbPfQ,3645
|
|
53
|
-
nectarbase/operations.py,sha256=K-ypT0KMcRPjcoOuYyUhpRaRUv5FtAhfdc7kSqbFyCs,47628
|
|
54
|
-
nectarbase/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
55
|
-
nectarbase/signedtransactions.py,sha256=r-MRnEQDnx6U6XFPcM3hPXiDZvU6sQVx4Vv_0nZF7fs,1792
|
|
56
|
-
nectarbase/transactions.py,sha256=D7TK4Pkxr1N7p0Yh2bxvdXpOuEYpLl2tWK84Pj_93c0,319
|
|
57
|
-
nectarbase/version.py,sha256=jO96tXyyVF3CBczqrDOywR6SvXRBy-ZjyQi9XlqyjQU,76
|
|
58
|
-
nectargrapheneapi/__init__.py,sha256=_Gxdt_qaQQwwYABHEFBuf4tMh93ItIa3HPBH9nk1PTw,151
|
|
59
|
-
nectargrapheneapi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
-
nectargraphenebase/__init__.py,sha256=PzB_0qiWfqJku5vKQs0CpkVeipPmZ33Fpc1px4VCV-Q,570
|
|
61
|
-
nectargraphenebase/account.py,sha256=pi3TFr6_CwGajdwDuAqlRGElmLhjBXlxC7mMOpc0vUU,29789
|
|
62
|
-
nectargraphenebase/aes.py,sha256=BywHJR8F7n2IBXhBmXqyc61DlVXcJ_QIE9qkubFdX2M,1578
|
|
63
|
-
nectargraphenebase/base58.py,sha256=NHvj7O6E94nX4BVK78u9IxAR8-QMIsasj6fj6yidm9Q,5552
|
|
64
|
-
nectargraphenebase/bip32.py,sha256=o2PZ37R1fZAg4YHPzvmCjp9qHNcC9Zkju_C1NRNUNbM,16274
|
|
65
|
-
nectargraphenebase/bip38.py,sha256=qSgH2_Y6kdcXLNI67qMmkjikI6aT4YET4R--GHT170Q,4530
|
|
66
|
-
nectargraphenebase/chains.py,sha256=JhaqY8qZaK-6OYf72RLVNxJtrc6yZtYxJm8p9U-i338,6185
|
|
67
|
-
nectargraphenebase/dictionary.py,sha256=Fooynl3XWE9ALy31jsVNb9CEHZh5N8TeJUAZJvqslnY,360748
|
|
68
|
-
nectargraphenebase/ecdsasig.py,sha256=BIaKNg4-_9ijo3xjbLfEmN0amIIVaK_yG5haUUevcEQ,12425
|
|
69
|
-
nectargraphenebase/objects.py,sha256=tYBvmAf7VU-06uDccRpFAQORGuOEtQd_jOqS3muK7zo,3998
|
|
70
|
-
nectargraphenebase/objecttypes.py,sha256=8YkRyxtd1hNZ06XvyHBRA5PatVeTd8XCFQmW_2p8MGk,160
|
|
71
|
-
nectargraphenebase/operationids.py,sha256=TLXB8FovmDwC39PNAR8OaW-NWyo1gFH0zE4ibShcMiI,65
|
|
72
|
-
nectargraphenebase/operations.py,sha256=fPTQ98sUtQRClAakBKPCGZjG0iIAAJqM5Y72Ip_HWWI,653
|
|
73
|
-
nectargraphenebase/prefix.py,sha256=tpX2_uz5lPveUoGbmXC4zsrG-5QsaVbIGIFPWJvYRbg,280
|
|
74
|
-
nectargraphenebase/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
|
-
nectargraphenebase/py23.py,sha256=aI1MAQ74DngxkjdpRlWEspmB1HNTQcpj3uHKo0b7rsM,784
|
|
76
|
-
nectargraphenebase/signedtransactions.py,sha256=y5tq9ijO_EXUpn77cHgqx55RcsY0Jr-lwj_r_0w7OHI,6947
|
|
77
|
-
nectargraphenebase/types.py,sha256=OZGVxgOoNPLiElNyDluUpmXNyREGzCEekZwq5uwPfGE,9771
|
|
78
|
-
nectargraphenebase/unsignedtransactions.py,sha256=HwhbWkWS1mYCJWKMsUI18PogEmZ5sVTWLPwolvM6ZR0,9522
|
|
79
|
-
nectargraphenebase/version.py,sha256=jO96tXyyVF3CBczqrDOywR6SvXRBy-ZjyQi9XlqyjQU,76
|
|
80
|
-
nectarstorage/__init__.py,sha256=AQXmR8clT9bO9SnIM8QEr5S8ZOpbKuG_BnBsDmGvec0,1347
|
|
81
|
-
nectarstorage/base.py,sha256=h7Oca1_RaJw39P1I_xXRKup016pS8zCLOs3e4IHKKdE,9734
|
|
82
|
-
nectarstorage/exceptions.py,sha256=0erk_d0Ejia9td_Ke7XFBl17H1BxbM42gFpkej8EbV0,421
|
|
83
|
-
nectarstorage/interfaces.py,sha256=WK2YR2mKUk1Qts50ZYLd407gECywA02A8iWr_p0KfCw,6786
|
|
84
|
-
nectarstorage/masterpassword.py,sha256=nyG90LeHeqEjXVbRT36gAWGe-MxyKGCfQ8SqvytK1no,8696
|
|
85
|
-
nectarstorage/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
86
|
-
nectarstorage/ram.py,sha256=Cy6JbMrlgcEG673_KqfyaofhAdJR-luRKTedj3qTZEE,1034
|
|
87
|
-
nectarstorage/sqlite.py,sha256=fkkDgi1lPv7lRo5wEAe4BzSVd2kDBGss3vCDYeNzDCs,10625
|
|
88
|
-
hive_nectar-0.0.5.dist-info/METADATA,sha256=kyu0ECk_98mpV64S6FGUe9Z6V_9428EPgVVHptGeklQ,6015
|
|
89
|
-
hive_nectar-0.0.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
90
|
-
hive_nectar-0.0.5.dist-info/entry_points.txt,sha256=DbqiJb5fFpQvGZ0ojvc2w3dXZitTg6FPz09CobKq4m8,47
|
|
91
|
-
hive_nectar-0.0.5.dist-info/licenses/LICENSE.txt,sha256=WjJRNR4r7FuLEO2BTBLGa05T7bBecGGgH47NgKsSY0E,1158
|
|
92
|
-
hive_nectar-0.0.5.dist-info/RECORD,,
|
nectargraphenebase/py23.py
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
import sys
|
|
3
|
-
|
|
4
|
-
PY2 = sys.version_info[0] == 2
|
|
5
|
-
PY3 = sys.version_info[0] == 3
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if PY3:
|
|
9
|
-
bytes_types = (bytes,)
|
|
10
|
-
string_types = (str,)
|
|
11
|
-
integer_types = (int,)
|
|
12
|
-
text_type = str
|
|
13
|
-
binary_type = bytes
|
|
14
|
-
else:
|
|
15
|
-
bytes_types = (bytes,)
|
|
16
|
-
string_types = (basestring,) # noqa: F821
|
|
17
|
-
integer_types = (int, long) # noqa: F821
|
|
18
|
-
text_type = unicode # noqa: F821
|
|
19
|
-
binary_type = str
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
def py23_bytes(item=None, encoding=None):
|
|
23
|
-
if item is None:
|
|
24
|
-
return b""
|
|
25
|
-
if hasattr(item, "__bytes__"):
|
|
26
|
-
return item.__bytes__()
|
|
27
|
-
else:
|
|
28
|
-
if encoding:
|
|
29
|
-
return bytes(item, encoding)
|
|
30
|
-
else:
|
|
31
|
-
return bytes(item)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
def py23_chr(item):
|
|
35
|
-
if PY2:
|
|
36
|
-
return chr(item)
|
|
37
|
-
else:
|
|
38
|
-
return bytes([item])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|