Ethereum Hive Simulator Python API
Project description
Ethereum Hive Simulators Python Library
Write ethereum/hive simulators using Python.
This library provides a Python API for creating and running Ethereum Hive simulation tests, allowing you to test Ethereum clients against various scenarios and network conditions.
Installation
pip install ethereum-hive
Features
- Client Management: Start, stop, and manage Ethereum clients.
- Network Configuration: Configure custom networks and genesis configuration.
- Test Simulation: Run comprehensive test suites against Ethereum clients.
Quick Start
Start a Hive Development Server
./hive --dev --client go-ethereum
Basic Example
Here's a basic example of how to use the Hive Python API with Hive running in developer mode. It requires a genesis file; please modify the path as required.
from pathlib import Path
from hive.simulation import Simulation
from hive.testing import HiveTestResult
# Create a simulation on a development hive server
simulator = Simulation(url="http://127.0.0.1:3000")
# Get information about the hive instance cli args and clients
hive_info = simulator.hive_instance()
# Start a test suite
suite = simulator.start_suite("my_test_suite", "my test suite description")
# Start a test
test = suite.start_test("my_test", "my test description")
# Start a client for the test
all_clients = simulator.client_types()
print(all_clients[0].version)
# Specify the genesis file; here we use the genesis from the unit test
files = {"genesis.json": Path("src/hive/tests/genesis.json").as_posix()}
env = {"HIVE_CHAIN_ID": "1"}
client = test.start_client(client_type=all_clients[0], environment=env, files=files)
# Run your test logic
# ...
# Stop the test and the suite (will clean-up clients)
test.end(result=HiveTestResult(test_pass=True, details="test details"))
suite.end()
For more detailed examples, check out the unit tests or explore the simulators in the execution-spec-tests repository.
Development
Setup
-
Install
uv:curl -LsSf https://astral.sh/uv/install.sh | sh
-
Clone and setup the project:
git clone https://github.com/marioevz/hive.py.git cd hive.py uv sync --all-extras
Running Tests
Prerequisites
-
Fetch and build hive:
git clone https://github.com/ethereum/hive.git cd hive go build -v .
-
Run hive in dev mode:
./hive --dev --client go-ethereum,lighthouse-bn,lighthouse-vc
-
Run the test suite:
uv run pytest
Code Quality
- Linting:
uv run black src/ - Type checking:
uv run mypy src/ - Import sorting:
uv run isort src/
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
Related Projects
- ethereum/hive - The main Hive testing framework.
- ethereum/execution-spec-tests - Contains implementations of several Hive simulators.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ethereum_hive-0.1.0a4-py3-none-any.whl.
File metadata
- Download URL: ethereum_hive-0.1.0a4-py3-none-any.whl
- Upload date:
- Size: 37.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Linux Mint","version":"22.1","id":"xia","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4897db0fb5e105187caa679e6aeccb9c29837ee42b912eef30b10874533c3bf6
|
|
| MD5 |
676dd18bc00d0d4f37f5219c9b47c7e9
|
|
| BLAKE2b-256 |
f7b67d9328fbd98b68a44dd50de0c0507d0f62df5cdc35f99bd76c8a3c919db5
|