Skip to main content

Quick Start

Ape compiler plugin around VVM

Dependencies

Installation

via pip

You can install the latest release via pip:

pip install ape-vyper

via setuptools

You can clone the repository and use setuptools for the most up-to-date version:

git clone https://github.com/ApeWorX/ape-vyper.git
cd ape-vyper
python3 setup.py install

Quick Usage

First, place Vyper contract source files (files with extension .vy) in your Ape project's contracts folder. An example Vyper contract can be found here. Then, from your root Ape project folder, run the command:

ape compile

The .vy files in your project will compile into ContractTypes that you can deploy and interact with in Ape.

Contract Flattening

For ease of publishing, validation, and some other cases it's sometimes useful to "flatten" your contract into a single file. This combines your contract and any imported interfaces together in a way the compiler can understand. You can do so with a command like this:

ape vyper flatten contracts/MyContract.vy build/MyContractFlattened.vy

Compiler Version

By default, the ape-vyper plugin uses version pragma for version specification. However, you can also configure the version directly in your pyproject.toml file:

[tool.vyper.version]
version = "0.3.7"

EVM Versioning

By default, ape-vyper will use whatever version of EVM rules are set as default in the compiler version that gets used, or based on what the #pragma evm-version ... pragma comment specifies (available post-v0.3.10). Sometimes, you might want to use a different version, such as deploying on Arbitrum or Optimism where new opcodes are not supported yet. If you want to require a different version of EVM rules to use in the configuration of the compiler, set it in your ape-config.yaml like this:

[tool.ape.vyper]
evm_version = "paris"

NOTE: The config value chosen will not override if a pragma is set in a contract.

Interfaces

You can not compile interface source files directly. Thus, you must place interface files in a directory named interfaces in your contracts_folder e.g. contracts/interfaces/IFace.vy. Then, these files can be imported in other .vy sources files via:

import interfaces.IFace as IFace

Alternatively, use JSON interfaces from dependency contract types by listing them under the import_remapping key:

[[tool.ape.dependencies]]
name = "VyperVoting"
github = "vyperlang/vyper"
contracts_folder = "examples/voting/"
version = "v0.3.8"

[tool.ape.vyper]
import_remapping = ["voting=VyperVoting@v0.3.8"]

Import the voting contract types like this:

# @version 0.3.10

import voting.ballot as ballot

Decimals

To use decimals on Vyper 0.4, use the following config:

[tool.ape.vyper]
enable_decimals = true

Pragmas

Ape-Vyper supports Vyper 0.3.10's new pragma formats

Version Pragma

#pragma version 0.3.10

EVM Version Pragma

#pragma evm-version paris

Optimization Pragma

#pragma optimize codesize

VVM CLI

You can install versions of Vyper using the ape vyper vvm CLI tools. List installed versions using:

ape vyper vvm list

To list the available Vyper versions, do:

ape vyper vvm list --available

Install more versions using the command:

ape vyper vvm install 0.3.7 0.3.10

Custom Output Format

To customize Vyper's output format (like the native -f flag), you can configure the output format: For example, to only get the ABI, do:

[tool.ape.vyper]
output_format = ["abi"]

To do this using the CLI only (adhoc), use the following command:

ape compile --config-override '{"vyper": {"output_format": ["abi"]}}'

Solc JSON Format

ape-vyper supports the socl_json format. To use this format, configure ape-vyper like:

[tool.ape.vyper]
output_format = ["solc_json"]

Note: Normally, in Vyper, you cannot use solc_json with other formats. However, ape-vyper handles this by running separately for the solc_json request.

Be sure to use the --force flag when compiling to ensure you get the solc JSON output.

ape compile file_needing_solc_json_format.vy -f

To get a dependency source file in this format, configure and compile the dependency.

[[tool.ape.dependencies]]
name = "my_dep"
config_override = { "vyper" = { "output_format" = ["solc_json"] } }

And then run:

ape pm compile --force

Metadata

Release files for ape-vyper 0.8.12

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

Source distribution (sdist)

Source distribution for ape-vyper 0.8.12
File Size Uploaded
ape_vyper-0.8.12.tar.gz 74.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ape-vyper 0.8.12
File Interpreter ABI Platform
ape_vyper-0.8.12-py3-none-any.whl Python 3 none any Details

Total release size: 122.8 kB

Release files / ape_vyper-0.8.12.tar.gz

Download URL ape_vyper-0.8.12.tar.gz
Size 74.4 kB
Tags Source
SHA-256 checksum
How to use checksums
3db496f56c9a03bb3acba62c1692b122f51f74c8d3932ed90b1d8a1652673dc5
BLAKE2b-256 checksum
How to use checksums
b8a18608feb9d50c2da2ee0b7d21c3fafa052f8577426f3e8c1b76b78c1194cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 13, 2026.

Transparency log

Release files / ape_vyper-0.8.12-py3-none-any.whl

Download URL ape_vyper-0.8.12-py3-none-any.whl
Size 48.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
37babc63f1784bf5582950f691f169ca7803debba86c9df51c4e6a62d62f6239
BLAKE2b-256 checksum
How to use checksums
124efd1efc407d3b192bf6d7592d580919b163bd86fb9b522169386493585357
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on May 13, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.8.12 This release

2 release files

0.8.10

2 release files

0.8.9

2 release files

0.8.8

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.12

2 release files

0.6.11

2 release files

0.6.10

2 release files

0.6.9

2 release files

0.6.8

2 release files

0.6.7

2 release files

0.6.6

2 release files

0.6.5

2 release files

0.6.4

2 release files

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

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