{ "info": { "author": "Remme", "author_email": "", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "![Remme icon](https://habrastorage.org/webt/l8/37/ql/l837ql83zzeeoxikv58v5av5jsi.png)\n\n# Remme Python Client\n\n[![Release](https://img.shields.io/github/release/Remmeauth/remme-client-python.svg)](https://github.com/Remmeauth/remme-client-python/releases)\n[![PyPI version shields.io](https://img.shields.io/pypi/v/remme.svg)](https://pypi.python.org/pypi/remme/)\n[![PyPI Downloads](https://img.shields.io/pypi/dm/remme.svg)](https://pypi.python.org/pypi/remme)\n[![Documentation status](https://readthedocs.org/projects/remme/badge/?version=latest)](http://remme.readthedocs.io/?badge=latest)\n[![PyPI license](https://img.shields.io/pypi/l/remme.svg)](https://pypi.python.org/pypi/remme/)\n[![PyPI pyversions](https://img.shields.io/pypi/pyversions/remme.svg)](https://pypi.python.org/pypi/remme/)\n\nAn open source Python integration library for REMChain, simplifying the access\nand interaction with Remme nodes both public or permissioned.\n\n* [How to use](#how-to-use)\n * [1. Install Remme protocol](#1-install-remme-protocol)\n * [2. Install dependencies](#2-install-dependencies)\n * [3. Install library](#3-install-library)\n* [Examples](#examples)\n * [Remme client](#remme-client)\n * [Tokens](#tokens)\n * [Certificates](#certificates)\n * [Subscribing to Events](#subscribing-to-events)\n* [Contributing](#contributing)\n* [License](#license)\n\n## How to use\n\n### 1. Install Remme protocol\n\nInstall and run Remme protocol with required RPC API methods enabled.\n\nYou can check out how to do that at [Remme core repo]().\n\n### 2. Install dependencies:\n\nBefore installing the library, make sure that all the dependencies listed are installed.\n\n**Required by one of the requirements [system packages list](https://github.com/ludbb/secp256k1-py#installation-with-compilation)**\n\n```bash\n$ sudo apt-get update\n$ sudo apt-get install python3-dev python3-setuptools -y\n$ sudo apt-get install build-essential automake libtool pkg-config libffi-dev -y\n```\n\n### 3. Install library\n\nInstall the latest version of library to your Python project from terminal using `pip`:\n\n```bash\n$ pip3 install remme\n```\n\n## Examples\n\n#### Remme client\n\n```python\nfrom remme import Remme\nfrom remme.models.account.account_type import AccountType\n\naccount_config = {\n 'private_key_hex': 'f4f551c178104595ff184f1786ddb2bfdc74b24562611edcab90d4729fb4bab8', \n 'account_type': AccountType.USER,\n}\nnetwork_config = {\n 'node_address': 'localhost:8080', \n 'ssl_mode': False,\n}\n\nremme = Remme(account_config=account_config, network_config=network_config)\n```\n\n#### Tokens\n\n```python\nremme_address = '1120077f88b0b798347b3f52751bb99fa8cabaf926c5a1dad2d975d7b966a85b3a9c21'\n\nbalance = await remme.token.get_balance(address=remme_address)\nprint(f'Account \u2014 {remme_address}, balance \u2014 {balance} REM.')\n\ntransaction_result = await remme.token.transfer(address_to=remme_address, amount=10)\nprint(f'Transaction batch id: {transaction_result.batch_id}')\n\n```\n\n#### Certificates\n\n```python\ncertificate_transaction_result = await remme.certificate.create_and_store(\n common_name='user_name',\n email='user@email.com',\n name='John',\n surname='Smith',\n country_name='US',\n validity=360,\n serial=str(datetime.now())\n )\ncertificate = certificate_transaction_result.certificate\n\nwhile True:\n\n try:\n info = await remme.certificate.get_info(certificate)\n print(f'Info: {info.data}')\n\n certificate_status = await remme.certificate.check(certificate)\n print(f'Certificate is valid: {certificate_status}')\n break\n\n except RpcGenericServerDefinedError:\n continue\n```\n\n#### Subscribing to Events\n\nRemmeEvents is enums which describe all available events.\n\n```python\nfrom remme.models.websocket.events import RemmeEvents\n\nevents = await remme.events.subscribe(events=RemmeEvents.AtomicSwap.value)\n\nasync for response in events:\n\n print(\"connected\")\n \n if isinstance(response, dict):\n print(response)\n \n else:\n print(f'State: {response.state}')\n print(f'Sender address: {response.sender_address}')\n print(f'Receiver address: {response.receiver_address}')\n print(f'Amount: {response.amount}')\n\n```\n\nAlso we give a possibility to start listen events from previous block by providing last known block id.\n\n```python\nfrom remme.models.websocket.events import RemmeEvents\n\nevents = await remme.events.subscribe(\n events=RemmeEvents.AtomicSwap.value, \n last_known_block_id='db19f0e3b3f001670bebc814e238df48cef059f3f0668f57702ba9ff0c4b8ec45c7298f08b4c2fa67602da27a84b3df5dc78ce0f7774b3d3ae094caeeb9cbc82',\n)\n\nasync for response in events:\n\n print(\"connected\")\n \n if isinstance(response, dict):\n print(response)\n \n else:\n print(f'State: {response.state}')\n print(f'Sender address: {response.sender_address}')\n print(f'Receiver address: {response.receiver_address}')\n print(f'Amount: {response.amount}')\n```\n\nUnsubscribe from listening events.\n\n```python\nawait remme.events.unsubscribe(events=RemmeEvents.AtomicSwap.value)\n```\n\n## Contributing\n\nClone the project and install requirements:\n\n```bash\n$ git clone git@github.com:Remmeauth/remme-client-python.git && cd remme-client-python\n$ pip3 install -r requirements.txt\n$ pip3 install -r requirements-dev.txt\n```\n\nIf you prefer working with the [Docker](https://www.docker.com), follow:\n\n```bash\n$ git clone git@github.com:Remmeauth/remme-client-python.git && cd remme-client-python\n$ docker build -t remme-client-python . -f Dockerfile\n$ docker run -v $PWD:/remme-client-python --name remme-client-python remme-client-python\n```\n\nEnter the container bash, check `Python` version and run tests:\n\n```bash\n$ docker exec -it remme-client-python bash\n$ root@98247c92404d:/remme-client-python# python --version\n$ root@98247c92404d:/remme-client-python# pytest -vv tests\n```\n\nClean container and images with the following command:\n\n```bash\n$ docker rm $(docker ps -a -q) -f\n$ docker rmi $(docker images -q) -f\n```\n\n## License\n\nRemme software and documentation are licensed under `Apache License Version 2.0 `.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Remmeauth/remme-client-python", "keywords": "", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "remme", "package_url": "https://pypi.org/project/remme/", "platform": "", "project_url": "https://pypi.org/project/remme/", "project_urls": { "Homepage": "https://github.com/Remmeauth/remme-client-python" }, "release_url": "https://pypi.org/project/remme/1.1.1/", "requires_dist": null, "requires_python": "", "summary": "Python integration library for REMChain.", "version": "1.1.1" }, "last_serial": 5292268, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "368114b8098e26371e07d399ff08c8ee", "sha256": "edc0ed5db4c63cfe75bbd86f8bb292f80c0786c1c1f7abea082bbac8b1559d2c" }, "downloads": -1, "filename": "remme-1.0.0.tar.gz", "has_sig": false, "md5_digest": "368114b8098e26371e07d399ff08c8ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54518, "upload_time": "2019-03-21T12:07:18", "url": "https://files.pythonhosted.org/packages/ba/f7/7d847bcdc114237ffeb43d751869c50b618d2b5139219d9c5e2a458d9048/remme-1.0.0.tar.gz" } ], "1.1.0a1": [ { "comment_text": "", "digests": { "md5": "7b06c648fab1c17935bcdea0d850acf7", "sha256": "cc382a437a6617cb28632963ede6bf89f715339b1770c87593480553da635d36" }, "downloads": -1, "filename": "remme-1.1.0a1.tar.gz", "has_sig": false, "md5_digest": "7b06c648fab1c17935bcdea0d850acf7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60534, "upload_time": "2019-04-23T15:38:29", "url": "https://files.pythonhosted.org/packages/54/0c/9a9893ac87f68a2de7b66f182bb7422a5d0efc5de4eb8b0e58135b31b186/remme-1.1.0a1.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "daba1f35803608f7d289b1b8c874b610", "sha256": "cabccaeac154f8904589dd56ac34aa44125a678c679fcae2c38dd494fb63a1fb" }, "downloads": -1, "filename": "remme-1.1.1.tar.gz", "has_sig": false, "md5_digest": "daba1f35803608f7d289b1b8c874b610", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60276, "upload_time": "2019-05-20T13:13:16", "url": "https://files.pythonhosted.org/packages/b8/e1/5871831a2979943b8fa130000a9c59a5a2635dc4401e2064662f3a249c8c/remme-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "daba1f35803608f7d289b1b8c874b610", "sha256": "cabccaeac154f8904589dd56ac34aa44125a678c679fcae2c38dd494fb63a1fb" }, "downloads": -1, "filename": "remme-1.1.1.tar.gz", "has_sig": false, "md5_digest": "daba1f35803608f7d289b1b8c874b610", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60276, "upload_time": "2019-05-20T13:13:16", "url": "https://files.pythonhosted.org/packages/b8/e1/5871831a2979943b8fa130000a9c59a5a2635dc4401e2064662f3a249c8c/remme-1.1.1.tar.gz" } ] }