Package: witpy
witpywitpy is a library for interfacing with the Witnet protocol. ( SeeWitnet.iofor 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.Quick Install:> pip install witpyConsider using virtualenv:> sudo apt-get install virtualenv
> virtualenv env
> source env/bin/activate
(env) > pip install witpyUsage:Must have a Witnet node and wallet server running. See theGithubfor more information.TheWalletClientis a singleton and can be retrieved by:from witpy.wallet import WalletClient

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

print(client.create_mnemonics(length=12))All the functions inwitpy/wallet/client.pyact 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.# Some useful methodsclient.create_mnemonics(length=12)client.create_wallet(name='testnet',caption='witpy',password='secret',seed_source='mnemonics',seed_data='mnemonic word phrase')client.get_wallet_infos()client.unlock_wallet(wallet_id=wallet_id,session_id=session_id)client.lock_wallet(wallet_id=wallet_id,session_id=session_id)client.generate_address(wallet_id=wallet_id,session_id=session_id)client.get_addresses(wallet_id=wallet_id,session_id=session_id,offset=0,limit=0)client.create_vtt(wallet_id=wallet_id,session_id=session_id,address='',amount=1,fee=1,time_lock=0)client.get_block_chain(epoch=-1,limit=1)An example of requests:fromwitpy.wallet.clientimportWalletClientaswitnetfromwitpy.transactions.data_requestimportDataRequestasRequestfromwitpy.transactions.rad_requestimportRadRequestfromwitpy.radon.typesimportFILTERS,REDUCERS,TYPESfromwitpy.radon.scriptimportScript,Source,Aggregator,Tally,cbor_to_radon,radon_to_cbor,method_from_scriptimportjsonwallet_id='my-wallet-id'session_id=client.unlock_wallet(wallet_id=wallet_id,password='secret')['session_id']#client=WalletClient.socket('127.0.0.1',port=11212)# Source 1bitstamp=Source('https://www.bitstamp.net/api/ticker/')bitstamp.parse_map_json().get_float('last').round()# Source 2blockchain=Source('https://blockchain.info/ticker')blockchain.parse_map_json().get_map('USD').get_float('last').multiply(1000).round()# Source 3coindesk=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()# Set aggregator and Tallyaggregator=Aggregator(filters=[[witnet.FILTERS.deviation_standard,1.5]],reducer=REDUCERS.average_mean)tally=Tally(filters=[[FILTERS.deviation_standard,1]],reducer=REDUCERS.average_mean)# Test Radonrad_request=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 Requestdata_request=Request().add_source(bitstamp).add_source(blockchain).add_source(coindesk)data_request.set_aggregate(aggregator).set_tally(tally)data_request.set_quorum(5,5,2,2,51).set_fees(1,1,1,1).set_collateral(1000000000).schedule(0)print(data_request.as_json())# Create and Send Transactiontrx=client.create_data_request(wallet_id=wallet_id,session_id=session_id,request=data_request.to_json(),fee=1)# Save the transaction to a json file as a backupwithopen('data/trx.json','w')asoutfile:json.dump(trx,outfile)print(trx['transaction'])# The hash of the data request used to lookupprint(trx['transaction_id'])resp=client.send_transaction(wallet_id=wallet_id,session_id=session_id,transaction=trx['transaction'])print(resp)Disclaimer:*witpyis provided on an "as is" basis without any warranties of any kind regarding any content, data, materials and/or services provided by this library.  In no event shall the owners of, or contributors to,witpybe liable for any damages of any kind, including, but not limited to, loss of use, loss of profits, or loss of data arising out of or in any way connected with the use of thewitpylibrary.