moved util.bases into util.math
authorForrest Voight <forrest@forre.st>
Tue, 31 Jan 2012 19:41:03 +0000 (14:41 -0500)
committerForrest Voight <forrest@forre.st>
Tue, 31 Jan 2012 19:50:57 +0000 (14:50 -0500)
p2pool/bitcoin/data.py
p2pool/bitcoin/script.py
p2pool/test/util/test_bases.py [deleted file]
p2pool/test/util/test_math.py
p2pool/util/bases.py [deleted file]
p2pool/util/math.py

index a8094e7..e50aba7 100644 (file)
@@ -2,7 +2,7 @@ from __future__ import division
 
 import hashlib
 
-from p2pool.util import bases, math, pack
+from p2pool.util import math, pack
 
 def hash256(data):
     return pack.IntType(256).unpack(hashlib.sha256(hashlib.sha256(data).digest()).digest())
@@ -33,7 +33,7 @@ class FloatingInteger(object):
     
     @classmethod
     def from_target_upper_bound(cls, target):
-        n = bases.natural_to_string(target)
+        n = math.natural_to_string(target)
         if n and ord(n[0]) >= 128:
             n = '\x00' + n
         bits2 = (chr(len(n)) + (n + 3*chr(0))[:3])[::-1]
@@ -193,11 +193,11 @@ base58_alphabet = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
 
 def base58_encode(bindata):
     bindata2 = bindata.lstrip(chr(0))
-    return base58_alphabet[0]*(len(bindata) - len(bindata2)) + bases.natural_to_string(bases.string_to_natural(bindata2), base58_alphabet)
+    return base58_alphabet[0]*(len(bindata) - len(bindata2)) + math.natural_to_string(math.string_to_natural(bindata2), base58_alphabet)
 
 def base58_decode(b58data):
     b58data2 = b58data.lstrip(base58_alphabet[0])
-    return chr(0)*(len(b58data) - len(b58data2)) + bases.natural_to_string(bases.string_to_natural(b58data2, base58_alphabet))
+    return chr(0)*(len(b58data) - len(b58data2)) + math.natural_to_string(math.string_to_natural(b58data2, base58_alphabet))
 
 human_address_type = ChecksummedType(pack.ComposedType([
     ('version', pack.IntType(8)),
index 171c470..a63cf9c 100644 (file)
@@ -1,4 +1,4 @@
-from p2pool.util import bases, pack
+from p2pool.util import math, pack
 
 def reads_nothing(f):
     return '', f
@@ -7,7 +7,7 @@ def protoPUSH(length):
 def protoPUSHDATA(size_len):
     def _(f):
         length_str, f = pack.read(f, size_len)
-        length = bases.string_to_natural(length_str[::-1].lstrip(chr(0)))
+        length = math.string_to_natural(length_str[::-1].lstrip(chr(0)))
         data, f = pack.read(f, length)
         return data, f
     return _
diff --git a/p2pool/test/util/test_bases.py b/p2pool/test/util/test_bases.py
deleted file mode 100644 (file)
index 9a99ffd..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-import random
-import unittest
-
-from p2pool.util import bases
-
-def generate_alphabet():
-    if random.randrange(2):
-        return None
-    else:
-        a = map(chr, xrange(256))
-        random.shuffle(a)
-        return a[:random.randrange(2, len(a))]
-
-class Test(unittest.TestCase):
-    def test_all(self):
-        for i in xrange(10):
-            alphabet = generate_alphabet()
-            for i in xrange(100):
-                n = random.randrange(100000000000000000000000000000)
-                s = bases.natural_to_string(n, alphabet)
-                n2 = bases.string_to_natural(s, alphabet)
-                #print n, s.encode('hex'), n2
-                self.assertEquals(n, n2)
index 86d81fc..4681ce3 100644 (file)
@@ -1,7 +1,26 @@
+import random
 import unittest
 
 from p2pool.util import math
 
+def generate_alphabet():
+    if random.randrange(2):
+        return None
+    else:
+        a = map(chr, xrange(256))
+        random.shuffle(a)
+        return a[:random.randrange(2, len(a))]
+
 class Test(unittest.TestCase):
     def test_add_tuples(self):
         assert math.add_tuples((1, 2, 3), (4, 5, 6)) == (5, 7, 9)
+    
+    def test_bases(self):
+        for i in xrange(10):
+            alphabet = generate_alphabet()
+            for i in xrange(100):
+                n = random.randrange(100000000000000000000000000000)
+                s = math.natural_to_string(n, alphabet)
+                n2 = math.string_to_natural(s, alphabet)
+                #print n, s.encode('hex'), n2
+                self.assertEquals(n, n2)
diff --git a/p2pool/util/bases.py b/p2pool/util/bases.py
deleted file mode 100644 (file)
index 1477010..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-def natural_to_string(n, alphabet=None):
-    if n < 0:
-        raise TypeError('n must be a natural')
-    if alphabet is None:
-        s = '%x' % (n,)
-        if len(s) % 2:
-            s = '0' + s
-        return s.decode('hex')
-    else:
-        assert len(set(alphabet)) == len(alphabet)
-        res = []
-        while n:
-            n, x = divmod(n, len(alphabet))
-            res.append(alphabet[x])
-        res.reverse()
-        return ''.join(res)
-
-def string_to_natural(s, alphabet=None):
-    if alphabet is None:
-        assert not s.startswith('\x00')
-        return int(s.encode('hex'), 16) if s else 0
-    else:
-        assert len(set(alphabet)) == len(alphabet)
-        assert not s.startswith(alphabet[0])
-        return sum(alphabet.index(char) * len(alphabet)**i for i, char in enumerate(reversed(s)))
index 06c9244..5db5616 100644 (file)
@@ -183,6 +183,32 @@ def weighted_choice(choices):
         target -= weight
     raise AssertionError()
 
+def natural_to_string(n, alphabet=None):
+    if n < 0:
+        raise TypeError('n must be a natural')
+    if alphabet is None:
+        s = '%x' % (n,)
+        if len(s) % 2:
+            s = '0' + s
+        return s.decode('hex')
+    else:
+        assert len(set(alphabet)) == len(alphabet)
+        res = []
+        while n:
+            n, x = divmod(n, len(alphabet))
+            res.append(alphabet[x])
+        res.reverse()
+        return ''.join(res)
+
+def string_to_natural(s, alphabet=None):
+    if alphabet is None:
+        assert not s.startswith('\x00')
+        return int(s.encode('hex'), 16) if s else 0
+    else:
+        assert len(set(alphabet)) == len(alphabet)
+        assert not s.startswith(alphabet[0])
+        return sum(alphabet.index(char) * len(alphabet)**i for i, char in enumerate(reversed(s)))
+
 if __name__ == '__main__':
     import random
     a = 1