litewax


Namelitewax JSON
Version 0.1.7 PyPI version JSON
download
home_pagehttps://github.com/makarworld/litewax.git
SummarySimply python library for interact with (EOSIO) WAX blockchain
upload_time2022-11-14 15:18:16
maintainer
docs_urlNone
authorabuztrade
requires_python>=3.6.0
licenseMIT License
keywords
VCS
bugtrack_url
requirements libeospy cloudscraper requests
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![PyPI version](https://badge.fury.io/py/litewax.svg)](https://badge.fury.io/py/litewax)
[![License](https://img.shields.io/github/license/makarworld/litewax.svg?label=License&logo=apache&cacheSeconds=2592000)](https://github.com/makarworld/litewax/blob/main/LICENSE)
[![image](https://img.shields.io/pypi/pyversions/litewax.svg)](https://pypi.org/project/litewax/)
[![Github last commit date](https://img.shields.io/github/last-commit/makarworld/litewax.svg?label=Updated&logo=github&cacheSeconds=600)](https://github.com/makarworld/litewax/commits)

[WAX donate](https://wax.atomichub.io/trading/token-transfer?partner=abuztradewax)

# litewax
Simply python library for interact with WAX blockchain

# TODO
- [x] Create tests for Client
- [x] Create tests for WCW client
- [x] Create tests for Anchor client
- [x] Create tests for MultiSig client
- [x] Add supply private_keys and wcw both to MultiSigClient
- [x] Add PayWith for NeftyBlocks
- [x] Add PayWith for AtomicHub
- [x] Refactor code, optimize WCW client
- [x] Wrap Actions to class (for pretty print)
- [ ] Create tests for PayWith
---

# Installation 
```
pip install litewax
```

---

# Clients examples
## Import
```
from litewax import Client, MultiSigClient, Contract
```
## Client setup
Anchor
```
client = Client(private_key="PVT_KEY")
```

Wax Cloud Wallet
```
client = Client(cookie="TOKEN_SESSION")
```

Anchor MultiSigClient
```
client = MultiSigClient(private_keys=["PVT_KEY1", "PVT_KEY2", ...])
```

Wax Cloud Wallet MultiSigClient
```
client = MultiSigClient(cookies=["TOKEN_SESSION1", "TOKEN_SESSION2", ...])
```

---

# Contract examples
## Contract initialize
Default
```
contract = Contract("name", actor="wallet")
```

With client
```
contract = client.Contract("name")

# In MultiSigClient:
# contract = client.Contract("name", client[0])
# contract = client[0].Contract("name")
# contract = client.Contract("name", actor=client[0].name)
```

After once init you can import contract directly
```
# Contract("res.pink")
from contracts.res_pink import res_pink

contract = res_pink("actor")
```

---

# Transactions
## Make transaction
```
contract = client.Contract("res.pink")

trx = client.Transaction(
    contract.noop(),
    # or
    contract.call('noop', {})
)
```
## Push transaction
```
trx.push() # -> dict
# {"transaction_id": "0x0123abc...", ...}
```

---

# Examples
## (Anchor) Client example 
```
import litewax

# Create client with private key(anchor)
client = litewax.Client(private_key=PVT_KEY)

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client.Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client.name) 

# easy make transaction
trx = client.Transaction(
        contract.noop()
    )

# easy push transaction
trx.push()
# {"transaction_id": "0x0123abc...", ...}
```
## (Wax Cloud Wallet) Client example 
```
import litewax

# Create client with token session (wax cloud wallet)
client = litewax.Client(cookie=TOKEN_SESSION)

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client.Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client.name) 

# easy make transaction
trx = AnchorClient.Transaction(
        contract.noop()
    )

# easy push transaction
trx.push()
# {"transaction_id": "0x0123abc...", ...}
```
## (Anchor) MultiSigClient example 
```
import litewax

# Create multisig client (may accept wax cloud wallet and anchor)
multiclient = litewax.MultiSigClient(
        private_keys=[PVT_KEY1, PVT_KEY2, ...]
    )

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client[i].Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client[i].name) 

# easy make transaction
trx = multiclient.Transaction(
        contract.transfer(
            _from=client[0].name,
            _to=client[1].name,
            amount="1.0000 WAX",
            memo="Send 1 WAX with multisig client"
        ),
        client[1].Contract("res.pink").noop() # for pay CPU
    )

# easy push transaction (if client is MultiSig, last signed action will pay for all cpu)
trx.push()
# {"transaction_id": "0x0123abc...", ...}
```
## (Wax Cloud Wallet) MultiSigClient example 
```
import litewax

# Create multisig client (may accept wax cloud wallet and anchor)
multiclient = litewax.MultiSigClient(
        cookies=[cookie1, cookie2, ...]
    )

# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)
contract = litewax.Contract("res.pink", client)
# or
# contract = client[i].Contract("res.pink")
# or
# contract = litewax.Contract("res.pink")
# contract.set_actor(client[i].name) 

# easy make transaction
trx = multiclient.Transaction(
        contract.transfer(
            _from=client[0].name,
            _to=client[1].name,
            amount="1.0000 WAX",
            memo="Send 1 WAX with multisig client"
        ),
        client[1].Contract("res.pink").noop() # for pay CPU
    )

# easy push transaction (if client is MultiSig, last signed action will pay for all cpu)
trx.push()
# {"transaction_id": "0x0123abc...", ...}
```
## Contract obj example 
```
from litewax import Contract

contract = Contract("res.pink")
# contract = Contract("res.pink", actor="abuztradewax")
# contract = Contract("res.pink", actor="abuztradewax", force_recreate=True)
#
# After create contract once, abigen create folder "contracts" and you can import directly

from contracts.res_pink import res_pink 
# in contract name "." replace to "_"

contract = res_pink(actor="abuztradewax")
# contract = res_pink()
# contract.set_actor("abuztradewax")

# you can push transaction without initialize any clients (push work only for anchor accounts)
contract.push_actions(
        "PRIVATE_KEY",
        contract.noop()
    )
# {"transaction_id": "0x0123abc...", ...}

# also you can send multiply signed trx
contract1 = Contract("eosio.token", actor="wallet1")
contract2 = Contract("res.pink", actor="wallet2")

contract1.push_actions(
        ["PRIVATE_KEY1", "PRICATE_KEY2"],
        contract1.transfer(
            _from=contract1.actor,
            _to=contract2.actor,
            amount="1.0000 WAX",
            memo="send 1 WAX without any client (only Contract instance)"
        ),
        contract2.noop() # this action will pay for CPU
        
# {"transaction_id": "0x0123abc...", ...}
```
            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/makarworld/litewax.git",
    "name": "litewax",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.6.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "abuztrade",
    "author_email": "abuztrade.work@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/b6/f1/899b82b5a57f99d6ad0abf0a90391215e5f57e1fd2a82f4750dce6179c49/litewax-0.1.7.tar.gz",
    "platform": null,
    "description": "[![PyPI version](https://badge.fury.io/py/litewax.svg)](https://badge.fury.io/py/litewax)\n[![License](https://img.shields.io/github/license/makarworld/litewax.svg?label=License&logo=apache&cacheSeconds=2592000)](https://github.com/makarworld/litewax/blob/main/LICENSE)\n[![image](https://img.shields.io/pypi/pyversions/litewax.svg)](https://pypi.org/project/litewax/)\n[![Github last commit date](https://img.shields.io/github/last-commit/makarworld/litewax.svg?label=Updated&logo=github&cacheSeconds=600)](https://github.com/makarworld/litewax/commits)\n\n[WAX donate](https://wax.atomichub.io/trading/token-transfer?partner=abuztradewax)\n\n# litewax\nSimply python library for interact with WAX blockchain\n\n# TODO\n- [x] Create tests for Client\n- [x] Create tests for WCW client\n- [x] Create tests for Anchor client\n- [x] Create tests for MultiSig client\n- [x] Add supply private_keys and wcw both to MultiSigClient\n- [x] Add PayWith for NeftyBlocks\n- [x] Add PayWith for AtomicHub\n- [x] Refactor code, optimize WCW client\n- [x] Wrap Actions to class (for pretty print)\n- [ ] Create tests for PayWith\n---\n\n# Installation \n```\npip install litewax\n```\n\n---\n\n# Clients examples\n## Import\n```\nfrom litewax import Client, MultiSigClient, Contract\n```\n## Client setup\nAnchor\n```\nclient = Client(private_key=\"PVT_KEY\")\n```\n\nWax Cloud Wallet\n```\nclient = Client(cookie=\"TOKEN_SESSION\")\n```\n\nAnchor MultiSigClient\n```\nclient = MultiSigClient(private_keys=[\"PVT_KEY1\", \"PVT_KEY2\", ...])\n```\n\nWax Cloud Wallet MultiSigClient\n```\nclient = MultiSigClient(cookies=[\"TOKEN_SESSION1\", \"TOKEN_SESSION2\", ...])\n```\n\n---\n\n# Contract examples\n## Contract initialize\nDefault\n```\ncontract = Contract(\"name\", actor=\"wallet\")\n```\n\nWith client\n```\ncontract = client.Contract(\"name\")\n\n# In MultiSigClient:\n# contract = client.Contract(\"name\", client[0])\n# contract = client[0].Contract(\"name\")\n# contract = client.Contract(\"name\", actor=client[0].name)\n```\n\nAfter once init you can import contract directly\n```\n# Contract(\"res.pink\")\nfrom contracts.res_pink import res_pink\n\ncontract = res_pink(\"actor\")\n```\n\n---\n\n# Transactions\n## Make transaction\n```\ncontract = client.Contract(\"res.pink\")\n\ntrx = client.Transaction(\n    contract.noop(),\n    # or\n    contract.call('noop', {})\n)\n```\n## Push transaction\n```\ntrx.push() # -> dict\n# {\"transaction_id\": \"0x0123abc...\", ...}\n```\n\n---\n\n# Examples\n## (Anchor) Client example \n```\nimport litewax\n\n# Create client with private key(anchor)\nclient = litewax.Client(private_key=PVT_KEY)\n\n# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)\ncontract = litewax.Contract(\"res.pink\", client)\n# or\n# contract = client.Contract(\"res.pink\")\n# or\n# contract = litewax.Contract(\"res.pink\")\n# contract.set_actor(client.name) \n\n# easy make transaction\ntrx = client.Transaction(\n        contract.noop()\n    )\n\n# easy push transaction\ntrx.push()\n# {\"transaction_id\": \"0x0123abc...\", ...}\n```\n## (Wax Cloud Wallet) Client example \n```\nimport litewax\n\n# Create client with token session (wax cloud wallet)\nclient = litewax.Client(cookie=TOKEN_SESSION)\n\n# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)\ncontract = litewax.Contract(\"res.pink\", client)\n# or\n# contract = client.Contract(\"res.pink\")\n# or\n# contract = litewax.Contract(\"res.pink\")\n# contract.set_actor(client.name) \n\n# easy make transaction\ntrx = AnchorClient.Transaction(\n        contract.noop()\n    )\n\n# easy push transaction\ntrx.push()\n# {\"transaction_id\": \"0x0123abc...\", ...}\n```\n## (Anchor) MultiSigClient example \n```\nimport litewax\n\n# Create multisig client (may accept wax cloud wallet and anchor)\nmulticlient = litewax.MultiSigClient(\n        private_keys=[PVT_KEY1, PVT_KEY2, ...]\n    )\n\n# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)\ncontract = litewax.Contract(\"res.pink\", client)\n# or\n# contract = client[i].Contract(\"res.pink\")\n# or\n# contract = litewax.Contract(\"res.pink\")\n# contract.set_actor(client[i].name) \n\n# easy make transaction\ntrx = multiclient.Transaction(\n        contract.transfer(\n            _from=client[0].name,\n            _to=client[1].name,\n            amount=\"1.0000 WAX\",\n            memo=\"Send 1 WAX with multisig client\"\n        ),\n        client[1].Contract(\"res.pink\").noop() # for pay CPU\n    )\n\n# easy push transaction (if client is MultiSig, last signed action will pay for all cpu)\ntrx.push()\n# {\"transaction_id\": \"0x0123abc...\", ...}\n```\n## (Wax Cloud Wallet) MultiSigClient example \n```\nimport litewax\n\n# Create multisig client (may accept wax cloud wallet and anchor)\nmulticlient = litewax.MultiSigClient(\n        cookies=[cookie1, cookie2, ...]\n    )\n\n# Create a contract object for iteract (file will be created in ./contracts/contract_file.py)\ncontract = litewax.Contract(\"res.pink\", client)\n# or\n# contract = client[i].Contract(\"res.pink\")\n# or\n# contract = litewax.Contract(\"res.pink\")\n# contract.set_actor(client[i].name) \n\n# easy make transaction\ntrx = multiclient.Transaction(\n        contract.transfer(\n            _from=client[0].name,\n            _to=client[1].name,\n            amount=\"1.0000 WAX\",\n            memo=\"Send 1 WAX with multisig client\"\n        ),\n        client[1].Contract(\"res.pink\").noop() # for pay CPU\n    )\n\n# easy push transaction (if client is MultiSig, last signed action will pay for all cpu)\ntrx.push()\n# {\"transaction_id\": \"0x0123abc...\", ...}\n```\n## Contract obj example \n```\nfrom litewax import Contract\n\ncontract = Contract(\"res.pink\")\n# contract = Contract(\"res.pink\", actor=\"abuztradewax\")\n# contract = Contract(\"res.pink\", actor=\"abuztradewax\", force_recreate=True)\n#\n# After create contract once, abigen create folder \"contracts\" and you can import directly\n\nfrom contracts.res_pink import res_pink \n# in contract name \".\" replace to \"_\"\n\ncontract = res_pink(actor=\"abuztradewax\")\n# contract = res_pink()\n# contract.set_actor(\"abuztradewax\")\n\n# you can push transaction without initialize any clients (push work only for anchor accounts)\ncontract.push_actions(\n        \"PRIVATE_KEY\",\n        contract.noop()\n    )\n# {\"transaction_id\": \"0x0123abc...\", ...}\n\n# also you can send multiply signed trx\ncontract1 = Contract(\"eosio.token\", actor=\"wallet1\")\ncontract2 = Contract(\"res.pink\", actor=\"wallet2\")\n\ncontract1.push_actions(\n        [\"PRIVATE_KEY1\", \"PRICATE_KEY2\"],\n        contract1.transfer(\n            _from=contract1.actor,\n            _to=contract2.actor,\n            amount=\"1.0000 WAX\",\n            memo=\"send 1 WAX without any client (only Contract instance)\"\n        ),\n        contract2.noop() # this action will pay for CPU\n        \n# {\"transaction_id\": \"0x0123abc...\", ...}\n```",
    "bugtrack_url": null,
    "license": "MIT License",
    "summary": "Simply python library for interact with (EOSIO) WAX blockchain",
    "version": "0.1.7",
    "project_urls": {
        "Download": "https://github.com/makarworld/litewax/archive/refs/tags/v0.1.7.zip",
        "Homepage": "https://github.com/makarworld/litewax.git"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b6f1899b82b5a57f99d6ad0abf0a90391215e5f57e1fd2a82f4750dce6179c49",
                "md5": "023f589510fbe6e16177f35bb208029a",
                "sha256": "a6c7877d4195598e723056cae6d51a37de999127eb8daadb8568af1398ff9112"
            },
            "downloads": -1,
            "filename": "litewax-0.1.7.tar.gz",
            "has_sig": false,
            "md5_digest": "023f589510fbe6e16177f35bb208029a",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6.0",
            "size": 12386,
            "upload_time": "2022-11-14T15:18:16",
            "upload_time_iso_8601": "2022-11-14T15:18:16.438428Z",
            "url": "https://files.pythonhosted.org/packages/b6/f1/899b82b5a57f99d6ad0abf0a90391215e5f57e1fd2a82f4750dce6179c49/litewax-0.1.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-11-14 15:18:16",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "makarworld",
    "github_project": "litewax",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "requirements": [
        {
            "name": "libeospy",
            "specs": [
                [
                    "==",
                    "2.1.0"
                ]
            ]
        },
        {
            "name": "cloudscraper",
            "specs": [
                [
                    "==",
                    "1.2.64"
                ]
            ]
        },
        {
            "name": "requests",
            "specs": []
        }
    ],
    "lcname": "litewax"
}
        
Elapsed time: 0.23836s