Metadata-Version: 2.1
Name: witpy
Version: 0.8.0
Summary: A JSON RPC client for the Witnet Protocol.
Home-page: https://github.com/parodyBit/witpy/
Author-email: parody_bit@criptext.com
License: UNKNOWN
Project-URL: Bug Reports, https://github.com/parodyBit/witpy/issues
Project-URL: Source, https://github.com/parodyBit/witpy/
Keywords: witnet wallet client json
Platform: UNKNOWN
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Requires-Python: >=3.5, <4
Description-Content-Type: text/markdown
Requires-Dist: peppercorn
Requires-Dist: apply-defaults
Requires-Dist: attrs
Requires-Dist: cbor
Requires-Dist: click
Requires-Dist: importlib-metadata
Requires-Dist: jsonschema
Requires-Dist: jsonrpcclient
Requires-Dist: pyrsistent
Requires-Dist: six
Requires-Dist: websockets
Requires-Dist: zipp

witpy



witpy is a library for interfacing with the Witnet protocol. ( See [Witnet.io](https://witnet.io/) for more information )

Built on top of websockets and jsonrpcclient, it provides an easy way to automate wallet operations by node operators and any one else who might find it useful.

*Disclaimer:*

This is a work in progress and under development and not intended to function as your main witnet wallet.



Quick Install:

```
$ pip install -r requirements.txt
```



Until I work this into an actual package, just copy the witpy folder into your project.



Usage:

Must have a Witnet node running. See the [Github](https://github.com/witnet) for more information. 



The `WalletClient` is a singleton and can be retrieved by:

```
from witpy import WalletClient

client = WalletClient.socket(url='127.0.0.1', port=11212)

```



All the functions in `witpy/wallet/client.py` act as a direct passthrough of the json-rpc API provided by the Witnet wallet server. The json-rpc `"method":` is called as a client function with the `"params":` being keyword arguments `**kwargs`. It returns the raw json-rpc response from the wallet server.

An example of requests:

```
from witpy import FILTERS, REDUCERS
import witpy as witnet

wallet_id = 'my-wallet-id'
session_id = client.unlock_wallet(wallet_id=wallet_id, password='secret')['session_id']


#
client = witnet.WalletClient.socket('127.0.0.1', port=11212)
bitstamp = witnet.Source('https://www.bitstamp.net/api/ticker/')
bitstamp.parse_map_json().get_float('last').multiply(1000).round()

blockchain = witnet.Source('https://blockchain.info/ticker')
blockchain.parse_map_json().get_map('USD').get_float('last').multiply(1000).round()

coindesk = witnet.Source('https://api.coindesk.com/v1/bpi/currentprice.json')
coindesk.parse_map_json().get_map('bpi').get_map('USD').get_float('rate_float').multiply(1000).round()
print()
# Set aggregator and Tally
aggregator = witnet.Aggregator(filters=[[witnet.FILTERS.deviation_standard, 1.5]], reducer=witnet.REDUCERS.average_mean)
tally = witnet.Tally(filters=[[witnet.FILTERS.deviation_standard, 1]], reducer=witnet.REDUCERS.average_mean)

# Test Radon
rad_request = witnet.RadRequest().add_source(bitstamp).add_source(blockchain).add_source(coindesk)
rad_request.set_aggregate(aggregator).set_tally(tally)
rad = client.run_rad_request(rad_request=rad_request.to_json())
print(rad)

# Test Data Request
data_request = witnet.Request().add_source(bitstamp).add_source(blockchain).add_source(coindesk)
data_request.set_aggregate(aggregator).set_tally(tally).set_quorum(20, 5, 2, 2, 51).set_fees(1, 1, 1, 1).schedule(0)
print(data_request.to_json())

# Create and Send Transaction
# trx = client.create_data_request(wallet_id=wallet_id, session_id=session_id, request=data_request.to_json(), fee=1)
# print(trx)
# print(trx['transaction'])

# resp = client.send_transaction(wallet_id=wallet_id, session_id=session_id, transaction=trx['transaction'])
# print(resp)
```




