Python compiler for the Neo Virtual Machine
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.7.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| neo-boa-0.7.2.tar.gz | 68.0 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| neo_boa-0.7.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 191.8 kB
Release files / neo-boa-0.7.2.tar.gz
| Download URL | neo-boa-0.7.2.tar.gz |
|---|---|
| Size | 68.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8c5f4962a8394459948e7174023b32a8db186a37ad5c61d7b8daf539a1390b86
|
|
BLAKE2b-256 checksum How to use checksums |
572b04d6956d6b8972dbd2fc555862b1feab2c9633a44353621a20895d67f922
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.23.4 CPython/3.6.4
|
Release files / neo_boa-0.7.2-py3-none-any.whl
| Download URL | neo_boa-0.7.2-py3-none-any.whl |
|---|---|
| Size | 123.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2cafaa604e0ebb6e1cc036314c07911c786fab75826eb85327d054db81d31298
|
|
BLAKE2b-256 checksum How to use checksums |
9ccc9d63f42215dc0d4a4ccc530f1f40926253d9f497490620e9bc59acdb0151
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.23.4 CPython/3.6.4
|
Security for neo-boa 0.7.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.