diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 17646af1..2605fd0b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -26,7 +26,9 @@ jobs: python-version: 3.9 - name: Setup Poetry - uses: Gr1N/setup-poetry@v4 + uses: Gr1N/setup-poetry@v7 + with: + poetry-version: 1.2.0 - name: Cache Dependencies uses: actions/cache@v2 diff --git a/integration_tests/decode.py b/integration_tests/decode.py new file mode 100644 index 00000000..29d24d13 --- /dev/null +++ b/integration_tests/decode.py @@ -0,0 +1,11 @@ +from terra_sdk.client.lcd import LCDClient + + +def main(): + terra = LCDClient( + url="https://phoenix-lcd.terra.dev", + chain_id="phoenix-1", + ) + print(terra.tx.tx_infos_by_height(1763383)) + +main() diff --git a/terra_sdk/core/wasm/data.py b/terra_sdk/core/wasm/data.py index 10607758..52381c19 100644 --- a/terra_sdk/core/wasm/data.py +++ b/terra_sdk/core/wasm/data.py @@ -14,17 +14,12 @@ from terra_sdk.core.bech32 import AccAddress from terra_sdk.core.msg import Msg +from terra_sdk.core.wasm.util import parse_msg from terra_sdk.util.json import JSONSerializable __all__ = ["AccessType", "AccessConfig", "AccessConfigUpdate", "AccessTypeParam"] -def parse_msg(msg: Union[dict, str, bytes]) -> dict: - if type(msg) is dict: - return msg - return json.loads(msg) - - def convert_access_type_from_json(access_type: str) -> AccessType: if access_type == "Everybody": return AccessType.ACCESS_TYPE_EVERYBODY diff --git a/terra_sdk/core/wasm/msgs.py b/terra_sdk/core/wasm/msgs.py index 914d2af9..01f927da 100644 --- a/terra_sdk/core/wasm/msgs.py +++ b/terra_sdk/core/wasm/msgs.py @@ -22,6 +22,7 @@ from terra_sdk.core.msg import Msg from terra_sdk.core.wasm.data import AccessConfig, AccessTypeParam from terra_sdk.util.remove_none import remove_none +from terra_sdk.core.wasm.util import parse_msg __all__ = [ "MsgStoreCode", @@ -33,12 +34,6 @@ ] -def parse_msg(msg: Union[dict, str, bytes]) -> dict: - if type(msg) is dict: - return msg - return json.loads(msg) - - @attr.s class MsgStoreCode(Msg): """Upload a new smart contract WASM binary to the blockchain. diff --git a/terra_sdk/core/wasm/proposals.py b/terra_sdk/core/wasm/proposals.py index aa62e1a6..c3cd45ec 100644 --- a/terra_sdk/core/wasm/proposals.py +++ b/terra_sdk/core/wasm/proposals.py @@ -32,6 +32,7 @@ from terra_sdk.core.bech32 import AccAddress from terra_sdk.core.coins import Coins from terra_sdk.core.wasm.data import AccessConfig, AccessConfigUpdate +from terra_sdk.core.wasm.util import parse_msg from terra_sdk.util.json import JSONSerializable from terra_sdk.util.remove_none import remove_none @@ -49,12 +50,6 @@ ] -def parse_msg(msg: Union[dict, str, bytes]) -> dict: - if type(msg) is dict: - return msg - return json.loads(msg) - - @attr.s class ClearAdminProposal(JSONSerializable): """ diff --git a/terra_sdk/core/wasm/util.py b/terra_sdk/core/wasm/util.py new file mode 100644 index 00000000..9d685fd5 --- /dev/null +++ b/terra_sdk/core/wasm/util.py @@ -0,0 +1,8 @@ +import json +from typing import Union + +def parse_msg(msg: Union[dict, str, bytes]) -> dict: + try: + return json.loads(msg) + except: + return msg