moccasin.toml¶
Note
For an exhaustive list of options for your moccasin.toml
file, see the all moccasin toml parameters documentation.
The moccasin.toml
file created is our configuration file. In this file we can have:
project and layout settings
network settings
dependencies settings
extra data
A moccasin.toml
file can look like this:
[project]
dependencies = ["snekmate==0.1.0"]
src = "contracts"
explorer_api_key = "${ETHERSCAN_API_KEY}"
dot_env = ".env"
[networks.sepolia]
url = "https://ethereum-sepolia-rpc.publicnode.com"
chain_id = 11155111
[extra_data]
my_key = "other_data"
You can learn more about each of the sections of the moccasin.toml
file in their respective documentation.
You can also see a full example of a moccasin.toml
in the all moccasin toml parameters documentation.
Extra Data¶
Extra data is a dictionary of data where you can put whatever you’d like. You can access it from your scripts with:
from moccasin import config
print(config.get_config().extra_data["my_key"])
pyproject.toml
¶
If you like, you don’t even need to use a moccasin.toml
, and instead you can just use a normal pyproject.toml
file.
Important
If you have a moccasin.toml
file, that file will have precedence over the pyproject.toml
file. So if you have a parameter defined in both files, the value in the moccasin.toml
file will be used.
An example pyproject.toml
with a moccasin
section would look like this:
# unrelated to your moccasin project, aka, "normal" python project settings
[project]
name = "project-no-config"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11, <=3.13"
dependencies = []
# moccasin project settings
[tool.moccasin.project]
src = "contracts"
dot_env = ".hello"
[tool.moccasin.networks.sepolia]
url = "https://ethereum-sepolia-rpc.publicnode.com"
You have all the same options as you would in a moccasin.toml
file, you’ll just need to prepend each with [tool.moccasin]
.
Order Of Operations¶
Whenever you run a script, you’ll want to remember this order:
Script
Command Line
moccasin.toml
pyproject.toml
Defaults
Whatever you place in your python script, will be the value used, even if your command line has a different value. Similarly, any flag passed to the command line will override any values in your moccasin.toml
, which will override any values in pyproject.toml
, which will override default values moccasin sets.
This allows you to set your config file up, but if you want to make a tweak you don’t have to touch your source code, you can just adjust it on the fly!