Another pass to a working alpha
This commit is contained in:
parent
b552a2d3e4
commit
d5e54b936a
@ -0,0 +1,5 @@
|
|||||||
|
# flat-tree 0.0.1a1 (2020-06-30)
|
||||||
|
|
||||||
|
## Project Announcements
|
||||||
|
|
||||||
|
- The first alpha development release is made!
|
@ -1,3 +1,9 @@
|
|||||||
# pyvarint
|
# pyvarint
|
||||||
|
|
||||||
|
[![Build Status](https://drone.autonomic.zone/api/badges/hyperpy/pyvarint/status.svg)](https://drone.autonomic.zone/hyperpy/pyvarint)
|
||||||
|
|
||||||
## varint, a method of serializing integers using one or more bytes
|
## varint, a method of serializing integers using one or more bytes
|
||||||
|
|
||||||
|
```sh
|
||||||
|
$ pip install pyvarint
|
||||||
|
```
|
||||||
|
@ -1,10 +1,9 @@
|
|||||||
"""Varint encode and decode"""
|
"""Varint encode and decode"""
|
||||||
|
|
||||||
import sys
|
from io import BytesIO
|
||||||
from StringIO import StringIO as BytesIO
|
|
||||||
|
|
||||||
|
|
||||||
def encode(number):
|
def encode(number: int) -> bytes:
|
||||||
"""Encode to varint"""
|
"""Encode to varint"""
|
||||||
buf = b""
|
buf = b""
|
||||||
|
|
||||||
@ -20,9 +19,10 @@ def encode(number):
|
|||||||
return buf
|
return buf
|
||||||
|
|
||||||
|
|
||||||
def decode(buf):
|
def decode(buf: bytes) -> int:
|
||||||
"""Decode to bytes"""
|
"""Decode to bytes"""
|
||||||
stream = BytesIO(buf)
|
stream = BytesIO(buf)
|
||||||
|
|
||||||
shift = 0
|
shift = 0
|
||||||
result = 0
|
result = 0
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ def decode(buf):
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def encoding_length(n):
|
def encoding_length(n: int) -> int:
|
||||||
"""The number of bytes this number will be encoded as."""
|
"""The number of bytes this number will be encoded as."""
|
||||||
N1 = pow(2, 7)
|
N1 = pow(2, 7)
|
||||||
N2 = pow(2, 14)
|
N2 = pow(2, 14)
|
||||||
|
@ -1 +1,18 @@
|
|||||||
# https://github.com/chrisdickinson/varint/blob/master/test.js
|
from math import floor, pow
|
||||||
|
from random import sample
|
||||||
|
|
||||||
|
from pyvarint import decode, encode, encoding_length
|
||||||
|
|
||||||
|
|
||||||
|
def test_fuzz_test():
|
||||||
|
ten_rand_ints = sample(range(100), 10)
|
||||||
|
for rand_int in ten_rand_ints:
|
||||||
|
encoded = encode(rand_int)
|
||||||
|
decoded = decode(encoded)
|
||||||
|
assert decoded == rand_int
|
||||||
|
|
||||||
|
|
||||||
|
def test_encoding_length():
|
||||||
|
for idx in range(0, 53):
|
||||||
|
number = floor(pow(2, idx))
|
||||||
|
assert len(encode(number)) == encoding_length(number)
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
|
|
||||||
def test_version_fails_gracefully(mocker):
|
def test_version_fails_gracefully(mocker):
|
||||||
target = 'pkg_resources.get_distribution'
|
target = "pkg_resources.get_distribution"
|
||||||
mocker.patch(target, side_effect=Exception())
|
mocker.patch(target, side_effect=Exception())
|
||||||
|
|
||||||
from pyvarint.__init__ import __version__
|
from pyvarint.__init__ import __version__
|
||||||
|
|
||||||
assert __version__ == 'unknown'
|
assert __version__ == "unknown"
|
||||||
|
Loading…
Reference in New Issue
Block a user