Skip to main content

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

Donations

Accepted at ATEMNPSjRVvsXmaJW4ZYJBSVuJ6uR2mjQU

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

neo-boa-0.7.2.tar.gz (68.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

neo_boa-0.7.2-py3-none-any.whl (123.8 kB view details)

Uploaded Python 3

File details

Details for the file neo-boa-0.7.2.tar.gz.

File metadata

  • Download URL: neo-boa-0.7.2.tar.gz
  • Upload date:
  • Size: 68.0 kB
  • Tags: Source
  • Uploaded using 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

File hashes

Hashes for neo-boa-0.7.2.tar.gz
Algorithm Hash digest
SHA256 8c5f4962a8394459948e7174023b32a8db186a37ad5c61d7b8daf539a1390b86
MD5 023b79cac1629a9bda8da97e82be891e
BLAKE2b-256 572b04d6956d6b8972dbd2fc555862b1feab2c9633a44353621a20895d67f922

See more details on using hashes here.

File details

Details for the file neo_boa-0.7.2-py3-none-any.whl.

File metadata

  • Download URL: neo_boa-0.7.2-py3-none-any.whl
  • Upload date:
  • Size: 123.8 kB
  • Tags: Python 3
  • Uploaded using 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

File hashes

Hashes for neo_boa-0.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 2cafaa604e0ebb6e1cc036314c07911c786fab75826eb85327d054db81d31298
MD5 ae342d5f8aab1f793e5e9649f212d5cb
BLAKE2b-256 9ccc9d63f42215dc0d4a4ccc530f1f40926253d9f497490620e9bc59acdb0151

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.7.2 This release

2 files

0.7.0

1 file

0.6.0

2 files

0.5.6

2 files

0.5.5

2 files

0.5.4

2 files

0.5.3

2 files

0.5.2

2 files

0.5.1

2 files

0.5.0

2 files

0.4.9

2 files

0.4.8

2 files

0.4.7

2 files

0.4.6

2 files

0.4.5

2 files

0.4.4

2 files

0.4.3

2 files

0.4.2

2 files

0.4.1

2 files

0.4.0

2 files

0.3.7

2 files

0.3.6

2 files

0.3.5

2 files

0.3.4

2 files

0.3.3

2 files

0.3.2

1 file

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.5

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page