Overview
The neo-boa compiler is a tool for compiling Python files to the .avm format for usage in the Neo Virtual Machine which is used to execute contracts on the Neo Blockchain.
The compiler supports a subset of the Python language ( in the same way that a boa constrictor is a subset of the Python snake species)
What does it currently do
Compiles a subset of the Python language to the .avm format for use in the Neo Virtual Machine
Works for Python 3.6+
Adds debugging map for debugging in neo-python or other NEO debuggers
What will it do
Compile a larger subset of the Python language
Get Help or give help
Open a new issue if you encounter a problem.
Or ping @localhuman on the NEO official community chatroom.
Pull requests welcome. New features, writing tests and documentation are all needed.
Installation
Make sure you are using a Python 3.6 or greater virtual environment
Pip
pip install neo-boa
Docker
This project contains a Dockerfile to batch compile Python smart contracts. Clone the repository and navigate into the docker sub directory of the project. Run the following command to build the container:
docker build -t neo-boa .
The neo-boa Docker container takes a directory on the host containing python smart contracts as an input and a directory to compile the .avm files to as an output. It can be executed like this:
docker run -it -v /absolute/path/input_dir:/python-contracts -v /absolute/path/output_dir:/compiled-contracts neo-boa
The -v (volume) command maps the directories on the host to the directories within the container.
Manual
Clone the repository and navigate into the project directory. Make a Python 3 virtual environment and activate it via:
python3 -m venv venv source venv/bin/activate
or, to install Python 3.6 specifically:
virtualenv -p /usr/local/bin/python3.6 venv source venv/bin/activate
Then, install the requirements:
pip install -r requirements.txt
Usage
The compiler may be used like in the following example:
from boa.compiler import Compiler
Compiler.load_and_save('path/to/your/file.py')
For legacy purposes, if you wish to compile without NEP8 stack isolation functionality, you may do the following:
from boa.compiler import Compiler
Compiler.load_and_save('path/to/your/file.py', use_nep=False)
Docs
You can read the docs here.
Tests
All tests are located in boa_test/test. Tests can be run with the following command python -m unittest discover boa_test
License
Open-source MIT.
Main author is localhuman.
Donations
Accepted at ATEMNPSjRVvsXmaJW4ZYJBSVuJ6uR2mjQU
Metadata
Release files for neo-boa 0.5.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| neo-boa-0.5.3.tar.gz | 63.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| neo_boa-0.5.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 177.8 kB
Release files / neo-boa-0.5.3.tar.gz
| Download URL | neo-boa-0.5.3.tar.gz |
|---|---|
| Size | 63.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
df925f83b70ac63f8322a97cd0d3b110cd124925b0a48422dfc405efd8492ce1
|
|
BLAKE2b-256 checksum How to use checksums |
f2db2bfafd41e55f2b55dad1c081cd9d7b77186c98104d63ee540cae533d2be3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.7.0
|
Release files / neo_boa-0.5.3-py3-none-any.whl
| Download URL | neo_boa-0.5.3-py3-none-any.whl |
|---|---|
| Size | 114.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
76c9aceb195b166eba1a2d6ee931cf9fc1050be31b5a6fbfb6e9df6acd023e15
|
|
BLAKE2b-256 checksum How to use checksums |
a5ca648446766f47ece91f43556251966ed8a766a16adfc00319589967a3db82
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.7.0
|