Metadata-Version: 2.1
Name: eth-ape
Version: 0.8.12
Summary: Ape Ethereum Framework
Home-page: https://apeworx.io
Author: ApeWorX Ltd.
Author-email: admin@apeworx.io
License: Apache-2.0
Project-URL: Documentation, https://docs.apeworx.io/ape/
Project-URL: Funding, https://gitcoin.co/grants/5958/ape-maintenance-fund
Project-URL: Source, https://github.com/ApeWorX/ape
Project-URL: Tracker, https://github.com/ApeWorX/ape/issues
Project-URL: Twitter, https://twitter.com/ApeFramework
Keywords: ethereum
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.9,<4
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click<9,>=8.1.6
Requires-Dist: ijson<4,>=3.1.4
Requires-Dist: ipython<9,>=8.18.1
Requires-Dist: lazyasd>=0.1.4
Requires-Dist: numpy<2
Requires-Dist: packaging<24,>=23.0
Requires-Dist: pandas<3,>=2.2.2
Requires-Dist: pluggy<2,>=1.3
Requires-Dist: pydantic<3,>=2.6.4
Requires-Dist: pydantic-settings<3,>=2.0.3
Requires-Dist: pytest<9.0,>=8.0
Requires-Dist: python-dateutil<3,>=2.8.2
Requires-Dist: PyYAML<7,>=5.0
Requires-Dist: requests<3,>=2.28.1
Requires-Dist: rich<14,>=12.5.1
Requires-Dist: SQLAlchemy>=1.4.35
Requires-Dist: tqdm<5.0,>=4.62.3
Requires-Dist: traitlets>=5.3.0
Requires-Dist: urllib3<3,>=2.0.0
Requires-Dist: watchdog<4,>=3.0
Requires-Dist: eth-abi<6,>=5.1.0
Requires-Dist: eth-account<0.12,>=0.11.2
Requires-Dist: eth-typing<4,>=3.5.2
Requires-Dist: eth-utils<3,>=2.3.1
Requires-Dist: hexbytes
Requires-Dist: py-geth<6,>=5.0.0-beta.2
Requires-Dist: trie<4,>=3.0.0
Requires-Dist: web3[tester]<7,>=6.17.2
Requires-Dist: eip712<0.3,>=0.2.7
Requires-Dist: ethpm-types<0.7,>=0.6.14
Requires-Dist: eth-pydantic-types<0.2,>=0.1.0
Requires-Dist: evmchains<0.1,>=0.0.10
Requires-Dist: evm-trace<0.3,>=0.2.0
Requires-Dist: toml; python_version < "3.11"
Provides-Extra: dev
Requires-Dist: pytest-xdist<4,>=3.6.1; extra == "dev"
Requires-Dist: pytest-cov<5,>=4.0.0; extra == "dev"
Requires-Dist: pytest-mock; extra == "dev"
Requires-Dist: pytest-benchmark; extra == "dev"
Requires-Dist: pytest-timeout<3,>=2.2.0; extra == "dev"
Requires-Dist: hypothesis<7.0,>=6.2.0; extra == "dev"
Requires-Dist: hypothesis-jsonschema==0.19.0; extra == "dev"
Requires-Dist: black<25,>=24.8.0; extra == "dev"
Requires-Dist: mypy<2,>=1.11.1; extra == "dev"
Requires-Dist: types-PyYAML; extra == "dev"
Requires-Dist: types-requests; extra == "dev"
Requires-Dist: types-setuptools; extra == "dev"
Requires-Dist: pandas-stubs>=2.2.1.240316; extra == "dev"
Requires-Dist: types-toml; extra == "dev"
Requires-Dist: types-SQLAlchemy>=1.4.49; extra == "dev"
Requires-Dist: types-python-dateutil; extra == "dev"
Requires-Dist: flake8<8,>=7.1.1; extra == "dev"
Requires-Dist: flake8-breakpoint<2,>=1.1.0; extra == "dev"
Requires-Dist: flake8-print<5,>=4.0.1; extra == "dev"
Requires-Dist: flake8-pydantic; extra == "dev"
Requires-Dist: isort<6,>=5.13.2; extra == "dev"
Requires-Dist: mdformat>=0.7.17; extra == "dev"
Requires-Dist: mdformat-gfm>=0.3.5; extra == "dev"
Requires-Dist: mdformat-frontmatter>=0.4.1; extra == "dev"
Requires-Dist: mdformat-pyproject>=0.0.1; extra == "dev"
Requires-Dist: pygments<3,>=2.17.0; extra == "dev"
Requires-Dist: myst-parser<2,>=1.0.0; extra == "dev"
Requires-Dist: sphinx-click<5,>=4.4.0; extra == "dev"
Requires-Dist: Sphinx<7,>=6.1.3; extra == "dev"
Requires-Dist: sphinx-rtd-theme<2,>=1.2.0; extra == "dev"
Requires-Dist: sphinxcontrib-napoleon>=0.7; extra == "dev"
Requires-Dist: sphinx-plausible<0.2,>=0.1.2; extra == "dev"
Requires-Dist: setuptools; extra == "dev"
Requires-Dist: wheel; extra == "dev"
Requires-Dist: twine==3.8.0; extra == "dev"
Requires-Dist: commitizen<2.41,>=2.40; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: pytest-watch; extra == "dev"
Requires-Dist: ipdb; extra == "dev"
Provides-Extra: doc
Requires-Dist: pygments<3,>=2.17.0; extra == "doc"
Requires-Dist: myst-parser<2,>=1.0.0; extra == "doc"
Requires-Dist: sphinx-click<5,>=4.4.0; extra == "doc"
Requires-Dist: Sphinx<7,>=6.1.3; extra == "doc"
Requires-Dist: sphinx-rtd-theme<2,>=1.2.0; extra == "doc"
Requires-Dist: sphinxcontrib-napoleon>=0.7; extra == "doc"
Requires-Dist: sphinx-plausible<0.2,>=0.1.2; extra == "doc"
Provides-Extra: lint
Requires-Dist: black<25,>=24.8.0; extra == "lint"
Requires-Dist: mypy<2,>=1.11.1; extra == "lint"
Requires-Dist: types-PyYAML; extra == "lint"
Requires-Dist: types-requests; extra == "lint"
Requires-Dist: types-setuptools; extra == "lint"
Requires-Dist: pandas-stubs>=2.2.1.240316; extra == "lint"
Requires-Dist: types-toml; extra == "lint"
Requires-Dist: types-SQLAlchemy>=1.4.49; extra == "lint"
Requires-Dist: types-python-dateutil; extra == "lint"
Requires-Dist: flake8<8,>=7.1.1; extra == "lint"
Requires-Dist: flake8-breakpoint<2,>=1.1.0; extra == "lint"
Requires-Dist: flake8-print<5,>=4.0.1; extra == "lint"
Requires-Dist: flake8-pydantic; extra == "lint"
Requires-Dist: isort<6,>=5.13.2; extra == "lint"
Requires-Dist: mdformat>=0.7.17; extra == "lint"
Requires-Dist: mdformat-gfm>=0.3.5; extra == "lint"
Requires-Dist: mdformat-frontmatter>=0.4.1; extra == "lint"
Requires-Dist: mdformat-pyproject>=0.0.1; extra == "lint"
Provides-Extra: recommended-plugins
Requires-Dist: ape-alchemy; extra == "recommended-plugins"
Requires-Dist: ape-ens; extra == "recommended-plugins"
Requires-Dist: ape-etherscan; extra == "recommended-plugins"
Requires-Dist: ape-foundry; extra == "recommended-plugins"
Requires-Dist: ape-hardhat; extra == "recommended-plugins"
Requires-Dist: ape-infura; extra == "recommended-plugins"
Requires-Dist: ape-solidity; extra == "recommended-plugins"
Requires-Dist: ape-template; extra == "recommended-plugins"
Requires-Dist: ape-tokens; extra == "recommended-plugins"
Requires-Dist: ape-vyper; extra == "recommended-plugins"
Provides-Extra: release
Requires-Dist: setuptools; extra == "release"
Requires-Dist: wheel; extra == "release"
Requires-Dist: twine==3.8.0; extra == "release"
Provides-Extra: test
Requires-Dist: pytest-xdist<4,>=3.6.1; extra == "test"
Requires-Dist: pytest-cov<5,>=4.0.0; extra == "test"
Requires-Dist: pytest-mock; extra == "test"
Requires-Dist: pytest-benchmark; extra == "test"
Requires-Dist: pytest-timeout<3,>=2.2.0; extra == "test"
Requires-Dist: hypothesis<7.0,>=6.2.0; extra == "test"
Requires-Dist: hypothesis-jsonschema==0.19.0; extra == "test"

[![Pypi.org][pypi-badge]][pypi-url]
[![Apache licensed][licence-badge]][licence-url]
[![Build Status][actions-badge]][actions-url]
[![Discord chat][discord-badge]][discord-url]
[![Twitter][twitter-badge]][twitter-url]

# Overview

[Ape Framework](https://apeworx.io/framework/) is an easy-to-use Web3 development tool.
Users can compile, test, and interact with smart contracts all in one command line session.
With our [modular plugin system](#plugin-system), Ape supports multiple contract languages and chains.

Ape is built by [ApeWorX LTD](https://www.apeworx.io/).

Join our [ApeWorX Discord server][discord-url] to stay up to date on new releases, plugins, and tutorials.

If you want to get started now, see the [Quickstart](#quickstart) section.

## Documentation

Read our [technical documentation](https://docs.apeworx.io/ape/stable/) to get a deeper understanding of our open source Framework.

Read our [academic platform](https://academy.apeworx.io/) will help you master Ape Framework with tutorials and challenges.

## Prerequisite

In the latest release, Ape requires:

- Linux or macOS
- Python 3.9 up to 3.12
- **Windows**: Install Windows Subsystem Linux [(WSL)](https://docs.microsoft.com/en-us/windows/wsl/install)

Check your python version in a terminal with `python3 --version`.

## Installation

There are three ways to install ape: `pipx`, `pip`, or `Docker`.

### Considerations for Installing

- If using `pip`, we advise using the most up-to-date version of `pip` to increase the chance of a successful installation.

  - See issue https://github.com/ApeWorX/ape/issues/1558.
  - To upgrade `pip` from the command line, run: `pip install --upgrade pip`.

- We advise installing in a [virtualenv](https://pypi.org/project/virtualenv/) or [venv](https://docs.python.org/3/library/venv.html) to avoid interfering with *OS-level site packages*.

- We advise installing **`ape`** with recommended plugins `pip install eth-ape'[recommended-plugins]'`.

- We advise for **macOS** users to install virtual env via [homebrew](https://formulae.brew.sh/formula/virtualenv).

### Installing with `pipx` or `pip`

1. Install `pipx` via their [installation instructions](https://pypa.github.io/pipx/) or `pip` via their [installation instructions](https://pip.pypa.io/en/stable/cli/pip_install/).

2. Install **`ape`** via `pipx install eth-ape` or `pip install eth-ape`.

### Installing with `docker`

Ape can also run in a docker container.

Please visit our [Dockerhub](https://hub.docker.com/repository/docker/apeworx/ape) for more details on using Ape with Docker.

```bash
docker run \
  --volume $HOME/.ape:/home/harambe/.ape \
  --volume $HOME/.vvm:/home/harambe/.vvm \
  --volume $HOME/.solcx:/home/harambe/.solcx \
  --volume $PWD:/home/harambe/project \
  apeworx/ape compile
```

## Quickstart

After you have installed Ape, run `ape --version` to verify the installation was successful.

Interact with Ape using either the [CLI](https://docs.apeworx.io/ape/latest/index.html) or [Python code](https://docs.apeworx.io/ape/latest/index.html).

See the following user-guides for more in-depth tutorials:

- [Accounts][accounts-guide]
- [Networks][networks-guide]
- [Projects][projects-guide]
- [Compiling][compile-guide]
- [Testing][testing-guide]
- [Console][console-guide]
- [Scripting][scripting-guide]
- [Logging][logging-guide]

## Plugin System

Ape's modular plugin system allows users to have an interoperable experience with Web3.

- Learn about **installing** plugins from following this [installing user guide](https://docs.apeworx.io/ape/stable/userguides/installing_plugins.html).

- Learn more about **developing** your own plugins from this [developing user guide](https://docs.apeworx.io/ape/stable/userguides/developing_plugins.html).

```{note}
If a plugin does not originate from the [ApeWorX GitHub Organization](https://github.com/ApeWorX?q=ape&type=all), you will get a warning about installing 3rd-party plugins.
Install 3rd party plugins at your own risk.
```

[accounts-guide]: https://docs.apeworx.io/ape/stable/userguides/accounts.html
[actions-badge]: https://github.com/ApeWorX/ape/actions/workflows/test.yaml/badge.svg
[actions-url]: https://github.com/ApeWorX/ape/actions?query=branch%3Amain+event%3Apush
[compile-guide]: https://docs.apeworx.io/ape/stable/userguides/compile.html
[console-guide]: https://docs.apeworx.io/ape/stable/userguides/console.html
[discord-badge]: https://img.shields.io/discord/922917176040640612.svg?logo=discord&style=flat-square
[discord-url]: https://discord.gg/apeworx
[licence-badge]: https://img.shields.io/github/license/ApeWorX/ape?color=blue
[licence-url]: https://github.com/ApeWorX/ape/blob/main/LICENSE
[logging-guide]: https://docs.apeworx.io/ape/stable/userguides/logging.html
[networks-guide]: https://docs.apeworx.io/ape/stable/userguides/networks.html
[projects-guide]: https://docs.apeworx.io/ape/stable/userguides/projects.html
[pypi-badge]: https://img.shields.io/pypi/dm/eth-ape?label=pypi.org
[pypi-url]: https://pypi.org/project/eth-ape/
[scripting-guide]: https://docs.apeworx.io/ape/stable/userguides/scripts.html
[testing-guide]: https://docs.apeworx.io/ape/stable/userguides/testing.html
[twitter-badge]: https://img.shields.io/twitter/follow/ApeFramework
[twitter-url]: https://twitter.com/ApeFramework
