From f6795e439f7a9156f35f7236a0e21a7e0fad85d6 Mon Sep 17 00:00:00 2001 From: Kristaps Kaupe Date: Sat, 18 Mar 2023 05:08:52 +0200 Subject: [PATCH] Add typehints to jmbitcoin/jmbitcoin/amount.py --- jmbitcoin/jmbitcoin/amount.py | 21 +++++++++++---------- jmbitcoin/test/test_amounts.py | 20 ++++++++++---------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/jmbitcoin/jmbitcoin/amount.py b/jmbitcoin/jmbitcoin/amount.py index e151c57..a5203eb 100644 --- a/jmbitcoin/jmbitcoin/amount.py +++ b/jmbitcoin/jmbitcoin/amount.py @@ -1,12 +1,13 @@ from decimal import Decimal +from typing import Any, Tuple, Union import re -def btc_to_sat(btc): +def btc_to_sat(btc: Union[int, str, Tuple, float, Decimal]) -> int: return int(Decimal(btc) * Decimal('1e8')) -def sat_to_btc(sat): +def sat_to_btc(sat: int) -> Decimal: return Decimal(sat) / Decimal('1e8') # 1 = 0.00000001 BTC = 1sat @@ -19,7 +20,7 @@ def sat_to_btc(sat): # 1btc = 1.00000000 BTC = 10000000sat -def amount_to_sat(amount_str): +def amount_to_sat(amount_str: str) -> int: amount_str = str(amount_str).strip() if re.compile(r"^[0-9]{1,8}(\.)?([0-9]{1,8})?(btc|sat)?$").match( amount_str.lower()) is None: @@ -34,31 +35,31 @@ def amount_to_sat(amount_str): return int(Decimal(amount_str)) -def amount_to_btc(amount_str): +def amount_to_btc(amount_str: str) -> Decimal: return amount_to_sat(amount_str) / Decimal('1e8') -def amount_to_sat_str(amount_str): +def amount_to_sat_str(amount_str: str) -> str: return str(amount_to_sat(amount_str)) + " sat" -def amount_to_btc_str(amount_str): +def amount_to_btc_str(amount_str: str) -> str: return '%.8f' % amount_to_btc(amount_str) + " BTC" -def amount_to_str(amount_str): +def amount_to_str(amount_str: str) -> str: return (amount_to_btc_str(amount_str) + " (" + amount_to_sat_str(amount_str) + ")") -def sat_to_str(sat): +def sat_to_str(sat: int) -> str: return '%.8f' % sat_to_btc(sat) -def sat_to_str_p(sat): +def sat_to_str_p(sat: int) -> str: return '%+.8f' % sat_to_btc(sat) -def fee_per_kb_to_str(feerate): +def fee_per_kb_to_str(feerate: Any) -> str: return (str(int(feerate)) + " sat/vkB (" + '%.1f' % (int(feerate / 100) / 10) + " sat/vB)") diff --git a/jmbitcoin/test/test_amounts.py b/jmbitcoin/test/test_amounts.py index 0d82d29..53675dc 100644 --- a/jmbitcoin/test/test_amounts.py +++ b/jmbitcoin/test/test_amounts.py @@ -3,17 +3,17 @@ import pytest from decimal import Decimal -def test_btc_to_sat(): +def test_btc_to_sat() -> None: assert(btc.btc_to_sat(Decimal("0.00000001")) == 1) assert(btc.btc_to_sat(Decimal("1.00000000")) == 100000000) -def test_sat_to_btc(): +def test_sat_to_btc() -> None: assert(btc.sat_to_btc(1) == Decimal("0.00000001")) assert(btc.sat_to_btc(100000000) == Decimal("1.00000000")) -def test_amount_to_sat(): +def test_amount_to_sat() -> None: assert(btc.amount_to_sat("1") == 1) assert(btc.amount_to_sat("1sat") == 1) assert(btc.amount_to_sat("1.123sat") == 1) @@ -30,7 +30,7 @@ def test_amount_to_sat(): btc.amount_to_sat("123inv") -def test_amount_to_btc(): +def test_amount_to_btc() -> None: assert(btc.amount_to_btc("1") == Decimal("0.00000001")) assert(btc.amount_to_btc("1sat") == Decimal("0.00000001")) assert(btc.amount_to_btc("1.123sat") == Decimal("0.00000001")) @@ -47,7 +47,7 @@ def test_amount_to_btc(): btc.amount_to_btc("123inv") -def test_amount_to_sat_str(): +def test_amount_to_sat_str() -> None: assert(btc.amount_to_sat_str("1") == "1 sat") assert(btc.amount_to_sat_str("1sat") == "1 sat") assert(btc.amount_to_sat_str("1.123sat") == "1 sat") @@ -64,7 +64,7 @@ def test_amount_to_sat_str(): btc.amount_to_sat_str("123inv") -def test_amount_to_btc_str(): +def test_amount_to_btc_str() -> None: assert(btc.amount_to_btc_str("1") == "0.00000001 BTC") assert(btc.amount_to_btc_str("1sat") == "0.00000001 BTC") assert(btc.amount_to_btc_str("1.123sat") == "0.00000001 BTC") @@ -81,7 +81,7 @@ def test_amount_to_btc_str(): btc.amount_to_btc_str("123inv") -def test_amount_to_str(): +def test_amount_to_str() -> None: assert(btc.amount_to_str("1") == "0.00000001 BTC (1 sat)") assert(btc.amount_to_str("1sat") == "0.00000001 BTC (1 sat)") assert(btc.amount_to_str("1.123sat") == "0.00000001 BTC (1 sat)") @@ -98,19 +98,19 @@ def test_amount_to_str(): btc.amount_to_str("123inv") -def test_sat_to_str(): +def test_sat_to_str() -> None: assert(btc.sat_to_str(1) == "0.00000001") assert(btc.sat_to_str(100000000) == "1.00000000") -def test_sat_to_str_p(): +def test_sat_to_str_p() -> None: assert(btc.sat_to_str_p(1) == "+0.00000001") assert(btc.sat_to_str_p(-1) == "-0.00000001") assert(btc.sat_to_str_p(100000000) == "+1.00000000") assert(btc.sat_to_str_p(-100000000) == "-1.00000000") -def test_fee_per_kb_to_str(): +def test_fee_per_kb_to_str() -> None: assert(btc.fee_per_kb_to_str(1000) == "1000 sat/vkB (1.0 sat/vB)") assert(btc.fee_per_kb_to_str(1234) == "1234 sat/vkB (1.2 sat/vB)") assert(btc.fee_per_kb_to_str(1999) == "1999 sat/vkB (1.9 sat/vB)")