Skip to main content

NEAR ABI Python

Python Version License: MIT

A lightweight tool for generating Application Binary Interface (ABI) definitions for NEAR smart contracts written in Python.

🔑 Key Features

  • ✨ Simple: Minimalist design with a focus on usability
  • 🔍 Auto-detection: Automatically detects NEAR contract functions and their types
  • 📊 Beautiful CLI: Rich text interface with color-coded output
  • 📄 Validation: Built-in ABI validation against the official schema
  • 📂 Multi-file support: Analyze entire directories of Python contract files

📦 Installation

# Install with pip
pip install near-abi-py

# Install with uv
uv pip install near-abi-py

# Or use directly without installing
python -m near_abi_py generate example.py

🚀 Quick Start

CLI Usage

# Generate ABI from a single contract file
near-abi-py generate example.py

# Generate ABI from a project directory
near-abi-py generate ./my_contract_project/

# Generate and save to a specific output file
near-abi-py generate example.py -o example.abi.json

# Validate an existing ABI file
near-abi-py validate contract.abi.json

Library Usage

from near_abi_py import generate_abi, generate_abi_from_files

# Generate ABI from a single contract file
abi = generate_abi("path/to/contract.py")

# Or generate ABI from multiple files
python_files = ["path/to/file1.py", "path/to/file2.py"]
abi = generate_abi_from_files(python_files, "path/to/project_dir")

# Validate the generated ABI
from near_abi_py.utils import validate_abi
is_valid, messages = validate_abi(abi)

if is_valid:
    print("ABI is valid!")
else:
    print("ABI has issues:", messages)

📘 How It Works

NEAR ABI Python analyzes Python smart contract files by:

  1. Identifying functions marked with NEAR decorators (@view, @call, @init, etc.)
  2. Extracting parameter types and return types using Python type hints
  3. Generating JSON Schema representations of each parameter and return type
  4. Creating a standardized ABI schema following NEAR's specifications
  5. Validating the output against the official ABI schema

🔧 CLI Reference

Usage: near-abi-py [OPTIONS] COMMAND [ARGS]...

  NEAR Python ABI Builder

Options:
  --version  Show the version and exit.
  --help     Show this message and exit.

Commands:
  generate  Generate ABI from a contract file or directory
  validate  Validate an existing ABI file against the schema

Generate Command

Usage: near-abi-py generate [OPTIONS] SOURCE_PATH

  Generate ABI from a Python contract file or directory.

Options:
  -o, --output FILE              Output file path (default: stdout)
  --recursive / --no-recursive   Scan subdirectories recursively (default: True)
  --validate / --no-validate     Validate the generated ABI (default: True)
  --help                         Show this message and exit.

Validate Command

Usage: near-abi-py validate [OPTIONS] ABI_FILE

  Validate an existing ABI file against the schema.

Options:
  --help      Show this message and exit.

🧩 Example Contract

from near_sdk_py import view, call, init, Context, Storage, Log

class GreetingContract:
    @init
    def new(self, owner_id=None):
        """Initialize the contract with optional owner"""
        owner = owner_id or Context.predecessor_account_id()
        Storage.set("owner", owner)
        Log.info(f"Contract initialized by {owner}")
        return True

    @call
    def set_greeting(self, message):
        """Store a greeting message (requires gas)"""
        Storage.set("greeting", message)
        return f"Greeting updated to: {message}"

    @view
    def get_greeting(self):
        """Retrieve the greeting message (free, no gas needed)"""
        return Storage.get_string("greeting") or "Hello, NEAR world!"

# Export the contract methods
contract = GreetingContract()
new = contract.new
set_greeting = contract.set_greeting
get_greeting = contract.get_greeting

🧠 Understanding NEAR ABI Format

The generated ABI follows NEAR's ABI specification and includes:

  • Contract metadata (name, version, authors)
  • Function definitions (name, parameters, return types)
  • Function modifiers (view, call, init, etc.)
  • Type information in JSON Schema format

📦 Dependencies

  • Python 3.12+
  • pydantic >= 2.10.6
  • click >= 8.1.8
  • jsonschema >= 4.23.0
  • rich >= 13.9.4

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

Metadata

Release files for near-abi-py 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for near-abi-py 1.0.0
File Size Uploaded
near_abi_py-1.0.0.tar.gz 49.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for near-abi-py 1.0.0
File Interpreter ABI Platform
near_abi_py-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 66.3 kB

Release files / near_abi_py-1.0.0.tar.gz

Download URL near_abi_py-1.0.0.tar.gz
Size 49.7 kB
Tags Source
SHA-256 checksum
How to use checksums
91833ef0198e7af453839d95bb56375631e9ddefd250f661f5928ee0469ee293
BLAKE2b-256 checksum
How to use checksums
623a03c137825dd6fad9f1bb383ae7dc585262368353d20df94eb8653bfaed65
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.7.11

Release files / near_abi_py-1.0.0-py3-none-any.whl

Download URL near_abi_py-1.0.0-py3-none-any.whl
Size 16.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
19fdd4b6e03405158c394c8473878b0c58cb1f0b3ab8fced0af88f1162b774cb
BLAKE2b-256 checksum
How to use checksums
d40df81574b2d5c53d1c8a1be68e659db11fc7f43a472809b66296bea976b4d4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.7.11

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page