# PyTezos
[![Twitter](https://badgen.net/badge/icon/TezosBakingBad?icon=twitter&label=)](https://twitter.com/TezosBakingBad)
[![Monthly downloads](https://static.pepy.tech/badge/pytezos/month)](https://pepy.tech/project/pytezos)
[![GitHub stars](https://img.shields.io/github/stars/baking-bad/pytezos?color=2c2c2c&style=plain)](https://github.com/baking-bad/pytezos)
[![Python Version](https://img.shields.io/pypi/pyversions/pytezos?color=2c2c2c)](https://www.python.org)
<br>
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/baking-bad/pytezos/master?filepath=michelson_quickstart.ipynb)
[![License: MIT](https://img.shields.io/github/license/baking-bad/pytezos?color=2c2c2c)](https://github.com/baking-bad/pytezos/blob/next/LICENSE)
[![Latest release](https://img.shields.io/github/v/release/baking-bad/pytezos?label=version&color=2c2c2c)](https://github.com/baking-bad/pytezos/releases)
[![GitHub issues](https://img.shields.io/github/issues/baking-bad/pytezos?color=2c2c2c)](https://github.com/baking-bad/pytezos/issues)
[![GitHub pull requests](https://img.shields.io/github/issues-pr/baking-bad/pytezos?color=2c2c2c)](https://github.com/baking-bad/pytezos/pulls)
* RPC query engine
* Cryptography
* Building and parsing operations
* Smart contract interaction
* Local forging/packing & vice versa
* Working with Michelson AST
#### PyTezos CLI
* Generating contract parameter/storage schema
* Activating and revealing accounts
* Deploying contracts (+ GitHub integration)
#### Michelson REPL
* Builtin interpreter (reimplemented)
* Set of extra helpers (stack visualization, blockchain context mocking)
#### Michelson Jupyter kernel
* Custom interpreter with runtime type checker
* Syntax highlighting, autocomplete with `Tab`
* In-place docstrings with `Shift+Tab`
* Macros support
* Verbose execution logging
* Debug helpers
#### Michelson integration testing framework
* Writing integration tests using `unittest` package
* Simulating contract execution using remote intepreter (via RPC) or builtin one
## Installation
Make sure you have Python 3.8 to 3.12 installed and set as default in the system.
You also need to install cryptographic packages before installing the library/building the project:
### Linux
#### Ubuntu, Debian and other apt-based distributions
```shell
$ sudo apt install libsodium-dev libgmp-dev pkg-config
```
#### Arch Linux
```shell
$ sudo pacman -Syu --needed libsodium gmp
```
### MacOS
[Homebrew](https://brew.sh/) needs to be installed.
```shell
$ brew install libsodium gmp pkg-config
```
#### M1 (ARM)
In case `libsodium` or `gmp` cannot find either include or lib paths, try explicitly set environment vars:
```shell
export CFLAGS="-I/opt/homebrew/Cellar/gmp/6.2.1_1/include/ -L/opt/homebrew/Cellar/gmp/6.2.1_1/lib/"
export DYLD_LIBRARY_PATH=/opt/homebrew/lib/
pip3 install --user pytezos
```
For running tests you might also need to export `LD_LIBRARY_PATH`:
```shell
export LD_LIBRARY_PATH=/opt/homebrew/lib/
```
### Windows
The recommended way is to use WSL and then follow the instructions for Linux,
but if you feel lucky you can try to install natively:
1. Install MinGW from [https://osdn.net/projects/mingw/](https://osdn.net/projects/mingw/)
2. Make sure `C:\MinGW\bin` is added to your `PATH`
3. Download the latest libsodium-X.Y.Z-msvc.zip from [https://download.libsodium.org/libsodium/releases/](https://download.libsodium.org/libsodium/releases/).
4. Extract the Win64/Release/v143/dynamic/libsodium.dll from the zip file
5. Copy libsodium.dll to C:\Windows\System32\libsodium.dll
### From PyPi
```shell
$ pip install wheel setuptools pkginfo cryptography
$ pip install pytezos
```
### [Google Colab](https://colab.research.google.com)
`````python
>>> !apt install libsodium-dev libgmp-dev
>>> !pip install pytezos
`````
### Docker container
Verified & minified images for CI/CD https://hub.docker.com/r/bakingbad/pytezos/tags
```shell
$ # 1. Use image from registry
$ docker pull bakingbad/pytezos
$ # or build it yourself
$ docker build . -t pytezos
$ # 2. Use included docker-compose.yml
$ docker-compose up -d notebook
```
### Building from sources
Requirements:
* Python 3.8 to 3.12
* libsodium, coincurve, gmp
* make
```shell
$ # prepare environment
$ make install
# # run full CI with tests
$ make all
```
## Quick start
Read [quick start guide](https://pytezos.org/quick_start.html)
Learn how to [enable Jupyter with Michelson](./src/michelson_kernel/README.md)
## API reference
Check out a complete [API reference](https://pytezos.org/contents.html)
### Inline documentation
If you are working in Jupyter/Google Colab or any other interactive console, you can display documentation for a particular class/method:
```python
>>> from pytezos import pytezos
>>> pytezos
```
### Publications
* Pytezos 2.0 release with embedded docs and smart contract interaction engine
https://medium.com/coinmonks/high-level-interface-for-michelson-contracts-and-not-only-7264db76d7ae
* Materials from TQuorum:Berlin workshop - building an app on top of PyTezos and ConseilPy
https://medium.com/coinmonks/atomic-tips-berlin-workshop-materials-c5c8ee3f46aa
* Materials from the EETH hackathon - setting up a local development infrastructure, deploying and interacting with a contract
https://medium.com/tezoscommons/preparing-for-the-tezos-hackathon-with-baking-bad-45f2d5fca519
* Introducing integration testing engine
https://medium.com/tezoscommons/testing-michelson-contracts-with-pytezos-513718499e93
### Contact
* Telegram chat: [@baking_bad_chat](https://t.me/baking_bad_chat)
* Slack channel: [#baking-bad](https://tezos-dev.slack.com/archives/CV5NX7F2L)
## Credits
* The project was initially started by Arthur Breitman, now it's maintained by Baking Bad team.
* Baking Bad is supported by Tezos Foundation
* Michelson test set from the Tezos repo is used to ensure the interpreter workability
* Michelson structured documentation by Nomadic Labs is used for inline help
Raw data
{
"_id": null,
"home_page": "https://github.com/nobbennob/nobi-pytezos",
"name": "nobi-pytezos",
"maintainer": "Lev Gorodetskii",
"docs_url": null,
"requires_python": "<3.13,>=3.8.1",
"maintainer_email": "pytezos@drsr.io",
"keywords": "tezos, blockchain, sdk, michelson, repl, cryptocurrencies, smart-contracts, jupyter, ipython, docker, crypto",
"author": "Michael Zaikin",
"author_email": "mz@baking-bad.org",
"download_url": "https://files.pythonhosted.org/packages/e9/b0/2d68d35e74efdc12cd7278e7157cb7191854cacd07e16b3ea30133f32e2b/nobi_pytezos-0.1.2.tar.gz",
"platform": null,
"description": "# PyTezos\n\n[![Twitter](https://badgen.net/badge/icon/TezosBakingBad?icon=twitter&label=)](https://twitter.com/TezosBakingBad)\n[![Monthly downloads](https://static.pepy.tech/badge/pytezos/month)](https://pepy.tech/project/pytezos)\n[![GitHub stars](https://img.shields.io/github/stars/baking-bad/pytezos?color=2c2c2c&style=plain)](https://github.com/baking-bad/pytezos)\n[![Python Version](https://img.shields.io/pypi/pyversions/pytezos?color=2c2c2c)](https://www.python.org)\n<br>\n[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/baking-bad/pytezos/master?filepath=michelson_quickstart.ipynb)\n[![License: MIT](https://img.shields.io/github/license/baking-bad/pytezos?color=2c2c2c)](https://github.com/baking-bad/pytezos/blob/next/LICENSE)\n[![Latest release](https://img.shields.io/github/v/release/baking-bad/pytezos?label=version&color=2c2c2c)](https://github.com/baking-bad/pytezos/releases)\n[![GitHub issues](https://img.shields.io/github/issues/baking-bad/pytezos?color=2c2c2c)](https://github.com/baking-bad/pytezos/issues)\n[![GitHub pull requests](https://img.shields.io/github/issues-pr/baking-bad/pytezos?color=2c2c2c)](https://github.com/baking-bad/pytezos/pulls)\n\n* RPC query engine\n* Cryptography\n* Building and parsing operations\n* Smart contract interaction\n* Local forging/packing & vice versa\n* Working with Michelson AST\n\n#### PyTezos CLI\n\n* Generating contract parameter/storage schema\n* Activating and revealing accounts\n* Deploying contracts (+ GitHub integration)\n\n#### Michelson REPL\n\n* Builtin interpreter (reimplemented)\n* Set of extra helpers (stack visualization, blockchain context mocking)\n\n#### Michelson Jupyter kernel\n\n* Custom interpreter with runtime type checker\n* Syntax highlighting, autocomplete with `Tab`\n* In-place docstrings with `Shift+Tab`\n* Macros support\n* Verbose execution logging\n* Debug helpers\n\n#### Michelson integration testing framework\n\n* Writing integration tests using `unittest` package\n* Simulating contract execution using remote intepreter (via RPC) or builtin one\n\n## Installation\n\nMake sure you have Python 3.8 to 3.12 installed and set as default in the system. \n\nYou also need to install cryptographic packages before installing the library/building the project:\n\n### Linux\n\n#### Ubuntu, Debian and other apt-based distributions\n\n```shell\n$ sudo apt install libsodium-dev libgmp-dev pkg-config\n```\n\n#### Arch Linux\n\n```shell\n$ sudo pacman -Syu --needed libsodium gmp\n```\n\n### MacOS\n\n[Homebrew](https://brew.sh/) needs to be installed.\n\n```shell\n$ brew install libsodium gmp pkg-config\n```\n\n#### M1 (ARM)\n\nIn case `libsodium` or `gmp` cannot find either include or lib paths, try explicitly set environment vars:\n\n```shell\nexport CFLAGS=\"-I/opt/homebrew/Cellar/gmp/6.2.1_1/include/ -L/opt/homebrew/Cellar/gmp/6.2.1_1/lib/\"\nexport DYLD_LIBRARY_PATH=/opt/homebrew/lib/\npip3 install --user pytezos\n```\n\nFor running tests you might also need to export `LD_LIBRARY_PATH`:\n\n```shell\nexport LD_LIBRARY_PATH=/opt/homebrew/lib/\n```\n\n### Windows\n\nThe recommended way is to use WSL and then follow the instructions for Linux,\nbut if you feel lucky you can try to install natively:\n\n1. Install MinGW from [https://osdn.net/projects/mingw/](https://osdn.net/projects/mingw/)\n2. Make sure `C:\\MinGW\\bin` is added to your `PATH`\n3. Download the latest libsodium-X.Y.Z-msvc.zip from [https://download.libsodium.org/libsodium/releases/](https://download.libsodium.org/libsodium/releases/).\n4. Extract the Win64/Release/v143/dynamic/libsodium.dll from the zip file\n5. Copy libsodium.dll to C:\\Windows\\System32\\libsodium.dll\n\n### From PyPi\n\n```shell\n$ pip install wheel setuptools pkginfo cryptography\n$ pip install pytezos\n```\n\n### [Google Colab](https://colab.research.google.com)\n\n`````python\n>>> !apt install libsodium-dev libgmp-dev\n>>> !pip install pytezos\n`````\n\n### Docker container\n\nVerified & minified images for CI/CD https://hub.docker.com/r/bakingbad/pytezos/tags\n\n```shell\n$ # 1. Use image from registry\n$ docker pull bakingbad/pytezos\n$ # or build it yourself\n$ docker build . -t pytezos\n$ # 2. Use included docker-compose.yml\n$ docker-compose up -d notebook\n```\n\n### Building from sources\n\nRequirements:\n\n* Python 3.8 to 3.12\n* libsodium, coincurve, gmp\n* make\n\n```shell\n$ # prepare environment\n$ make install\n# # run full CI with tests\n$ make all\n```\n\n## Quick start\n\nRead [quick start guide](https://pytezos.org/quick_start.html) \nLearn how to [enable Jupyter with Michelson](./src/michelson_kernel/README.md)\n\n## API reference\n\nCheck out a complete [API reference](https://pytezos.org/contents.html)\n\n### Inline documentation\n\nIf you are working in Jupyter/Google Colab or any other interactive console, you can display documentation for a particular class/method:\n\n```python\n>>> from pytezos import pytezos\n>>> pytezos\n```\n\n### Publications\n\n* Pytezos 2.0 release with embedded docs and smart contract interaction engine \nhttps://medium.com/coinmonks/high-level-interface-for-michelson-contracts-and-not-only-7264db76d7ae\n\n* Materials from TQuorum:Berlin workshop - building an app on top of PyTezos and ConseilPy \nhttps://medium.com/coinmonks/atomic-tips-berlin-workshop-materials-c5c8ee3f46aa\n\n* Materials from the EETH hackathon - setting up a local development infrastructure, deploying and interacting with a contract \nhttps://medium.com/tezoscommons/preparing-for-the-tezos-hackathon-with-baking-bad-45f2d5fca519\n\n* Introducing integration testing engine \nhttps://medium.com/tezoscommons/testing-michelson-contracts-with-pytezos-513718499e93\n\n### Contact\n\n* Telegram chat: [@baking_bad_chat](https://t.me/baking_bad_chat)\n* Slack channel: [#baking-bad](https://tezos-dev.slack.com/archives/CV5NX7F2L)\n\n## Credits\n\n* The project was initially started by Arthur Breitman, now it's maintained by Baking Bad team.\n* Baking Bad is supported by Tezos Foundation\n* Michelson test set from the Tezos repo is used to ensure the interpreter workability\n* Michelson structured documentation by Nomadic Labs is used for inline help\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Python toolkit for Tezos",
"version": "0.1.2",
"project_urls": {
"Homepage": "https://github.com/nobbennob/nobi-pytezos",
"Repository": "https://github.com/nobbennob/nobi-pytezos"
},
"split_keywords": [
"tezos",
" blockchain",
" sdk",
" michelson",
" repl",
" cryptocurrencies",
" smart-contracts",
" jupyter",
" ipython",
" docker",
" crypto"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "e9e4b7af71d6647c05474ec93678e188e70c8b075d0b99fc50e34fd121054d64",
"md5": "ee3f8126cfc34981f9df9719d9bb0b32",
"sha256": "bb5913c095b3f1f178a6d3fc92072df59f0357a2c9962043758a85658dc353a5"
},
"downloads": -1,
"filename": "nobi_pytezos-0.1.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ee3f8126cfc34981f9df9719d9bb0b32",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.13,>=3.8.1",
"size": 209961,
"upload_time": "2024-09-11T11:35:14",
"upload_time_iso_8601": "2024-09-11T11:35:14.120802Z",
"url": "https://files.pythonhosted.org/packages/e9/e4/b7af71d6647c05474ec93678e188e70c8b075d0b99fc50e34fd121054d64/nobi_pytezos-0.1.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e9b02d68d35e74efdc12cd7278e7157cb7191854cacd07e16b3ea30133f32e2b",
"md5": "867cfcfe9a6746c43055150e123cd7c9",
"sha256": "748cee69ead6b37c1cea9e8b13f13d478d80c45d88b78fd665f06dda171422a8"
},
"downloads": -1,
"filename": "nobi_pytezos-0.1.2.tar.gz",
"has_sig": false,
"md5_digest": "867cfcfe9a6746c43055150e123cd7c9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.13,>=3.8.1",
"size": 166533,
"upload_time": "2024-09-11T11:35:15",
"upload_time_iso_8601": "2024-09-11T11:35:15.924405Z",
"url": "https://files.pythonhosted.org/packages/e9/b0/2d68d35e74efdc12cd7278e7157cb7191854cacd07e16b3ea30133f32e2b/nobi_pytezos-0.1.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-11 11:35:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nobbennob",
"github_project": "nobi-pytezos",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "nobi-pytezos"
}