{"id":28092604,"url":"https://github.com/duniter/duniter-python-api","last_synced_at":"2025-05-13T13:22:23.013Z","repository":{"id":13219485,"uuid":"15903729","full_name":"duniter/duniter-python-api","owner":"duniter","description":"Python APIs library to implement duniter clients softwares. Mirror of:","archived":false,"fork":false,"pushed_at":"2021-05-09T16:11:32.000Z","size":2010,"stargazers_count":14,"open_issues_count":3,"forks_count":6,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-05-10T09:02:57.923Z","etag":null,"topics":["api","duniter","python","python3"],"latest_commit_sha":null,"homepage":"https://git.duniter.org/clients/python/duniterpy","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/duniter.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-01-14T14:04:05.000Z","updated_at":"2024-10-18T13:34:23.000Z","dependencies_parsed_at":"2022-08-25T15:41:53.909Z","dependency_job_id":null,"html_url":"https://github.com/duniter/duniter-python-api","commit_stats":null,"previous_names":["ucoin-io/ucoin-python-api"],"tags_count":104,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duniter%2Fduniter-python-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duniter%2Fduniter-python-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duniter%2Fduniter-python-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duniter%2Fduniter-python-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/duniter","download_url":"https://codeload.github.com/duniter/duniter-python-api/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253391743,"owners_count":21900954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","duniter","python","python3"],"created_at":"2025-05-13T13:22:22.448Z","updated_at":"2025-05-13T13:22:22.996Z","avatar_url":"https://github.com/duniter.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DuniterPy\nMost complete client oriented Python library for [Duniter](https://git.duniter.org/nodes/typescript/duniter)/Ğ1 ecosystem.\n\nThis library was originally developed for [Sakia](http://sakia-wallet.org/) desktop client which is now discontinued.\nIt is currently used by following programs:\n- [Tikka](https://git.duniter.org/clients/python), the desktop client (Work In Progress, not yet available).\n- [Silkaj](https://silkaj.duniter.org/), command line client.\n- [Jaklis](https://git.p2p.legal/axiom-team/jaklis), command line client for Cs+/Gchange pods.\n- [Ğ1Dons](https://git.duniter.org/matograine/g1pourboire), Ğ1Dons, paper-wallet generator aimed at giving tips in Ğ1.\n\n## Features\n### Network\n- APIs support: BMA, GVA, WS2P, and CS+:\n  - [Basic Merkle API](https://git.duniter.org/nodes/typescript/duniter/-/blob/dev/doc/HTTP_API.md), first Duniter API to be deprecated\n  - GraphQL Verification API, Duniter API in developement meant to replace BMA. Based on GraphQL.\n  - Websocket to Peer, Duniter inter-nodes (servers) API\n  - Cesium+, non-Duniter API, used to store profile data related to the blockchain as well as ads for Cesium and Ğchange.\n- Non-threaded asynchronous/synchronous connections\n- Support HTTP, HTTPS, and WebSocket transport for the APIs\n- Endpoints management\n\n### Blockchain\n- Support [Duniter blockchain protocol](https://git.duniter.org/documents/rfcs#duniter-blockchain-protocol-dubp)\n- Duniter documents management: transaction, block and WoT documents\n- Multiple authentication methods\n- Duniter signing key\n- Sign/verify and encrypt/decrypt messages with Duniter credentials\n\n## Requirements\n- Python \u003e= 3.6.8\n- [aiohttp \u003e= 3.6.3](https://pypi.org/project/aiohttp)\n- [jsonschema](https://pypi.org/project/jsonschema)\n- [pyPEG2](https://pypi.org/project/pyPEG2)\n- [attrs](https://pypi.org/project/attrs)\n- [base58](https://pypi.org/project/base58)\n- [libnacl](https://pypi.org/project/libnacl)\n- [pyaes](https://pypi.org/project/pyaes)\n\n## Installation\nYou can install DuniterPy and its dependencies with the following command:\n```bash\npip3 install duniterpy --user\n```\n\n## Install the development environment\n- [Install Poetry](https://python-poetry.org/docs/#installation)\n\n## Documentation\n[Online official automaticaly generated documentation](https://clients.duniter.io/python/duniterpy/index.html)\n\nThe [examples folder](https://git.duniter.org/clients/python/duniterpy/tree/master/examples) contains scripts to help you!\n\n### How to generate and read locally the autodoc\n\n- Install Sphinx, included into the development dependencies:\n```bash\npoetry install\n```\n\n- Generate documentation\n```bash\npoetry run make docs\n```\n\n- The HTML documentation is generated in `docs/_build/html` folder.\n\n## Development\n* When writing docstrings, use the reStructuredText format recommended by https://www.python.org/dev/peps/pep-0287/#docstring-significant-features\n* Use `make` commands to check the code and the format.\n\nBlack, the formatting tool, requires Python 3.6 or higher.\n\n* Install runtime dependencies\n```bash\npoetry install --no-dev\n```\n\n* Have a look at the examples folder\n* Run examples from parent folder\n```bash\npoetry run python examples/request_data.py\n```\n\n* Before submitting a merge requests, please check the static typing and tests.\n\n* Install dev dependencies\n```bash\npoetry install\n```\n\n* Check static typing with [mypy](http://mypy-lang.org/)\n```bash\nmake check\n```\n\n* Run all unit tests (builtin `unittest` module) with:\n```bash\nmake tests\n```\n\n* Run only some unit tests by passing a special ENV variable:\n```bash\nmake tests TESTS_FILTER=tests.documents.test_block.TestBlock.test_fromraw\n```\n\n## Packaging and deploy\n### PyPI\nChange and commit and tag the new version number (semantic version number)\n```bash\n./release.sh 0.42.3\n```\n\nBuild the PyPI package in the `dist` folder\n```bash\nmake build\n```\n\nDeploy the package to PyPI test repository (prefix the command with a space for the shell to not save it in its history system, since the command contains credentials)\n```bash\n[SPACE]make deploy_test PYPI_TEST_LOGIN=xxxx PYPI_TEST_PASSWORD=xxxx\n```\n\nInstall the package from PyPI test repository\n```bash\npip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.python.org/simple/ duniterpy\n```\n\nDeploy the package on the PyPI repository (prefix the command with a space for the shell to not save it in its history system, since the command contains credentials)\n```bash\n[SPACE]make deploy PYPI_LOGIN=xxxx PYPI_PASSWORD=xxxx\n```\n\n## Packaging status\n[![Packaging status](https://repology.org/badge/vertical-allrepos/python:duniterpy.svg)](https://repology.org/project/python:duniterpy/versions)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduniter%2Fduniter-python-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduniter%2Fduniter-python-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduniter%2Fduniter-python-api/lists"}