Skip to content

A framework for autonomous economic agent (AEA) development

License

Notifications You must be signed in to change notification settings

presidento23/agents-aea

 
 

AEA Framework

PyPI PyPI - Python Version PyPI - Wheel License License Slack

AEA framework sanity checks and tests Codecov flake8 mypy Black mypy

A framework for autonomous economic agent (AEA) development

AEA Description

Get started

  1. Create and launch a clean virtual environment with Python 3.7 (any Python >= 3.6 works):

    pipenv --python 3.7 && pipenv shell
    
  2. Install the package from PyPI:

    pip install aea[all]
    

    Or, if you use zsh rather than bash:

    pip install "aea[all]"
    
  3. Then, build your agent as described in the docs.

AEA Video

Alternatively: Use pipx (CLI usage only)

  1. Install pipx

  2. Install the package from PyPI:

    pipx install aea[all]
    
  3. Run AEA CLI e.g.:

    aea --help
    

Alternatively: Install from Source

This approach is not recommended!

Cloning

This repository contains submodules. Clone with recursive strategy:

git clone https://github.com/fetchai/agents-aea.git --recursive && cd agents-aea
  • To fetch/update submodules (for existing local repo):

    git submodule sync --recursive && git submodule update --init --recursive
    

Dependencies

All python specific framework dependencies are specified in setup.py and installed with the framework. All development dependencies are specified in Pipfile (and installed via the commands specified in Preliminaries).

You can have more control on the installed dependencies by leveraging the setuptools' extras mechanism.

Preliminaries

  • Create and launch a virtual environment with Python 3.7 (any Python >= 3.6 works):

    pipenv --python 3.7 && pipenv shell
    
  • Install the package from source:

    pip install .[all]
    

    Or, if you use zsh rather than bash:

    pip install ".[all]"
    
  • Then, build your agent as described in the docs.

Contribute

The following dependency is only relevant if you intend to contribute to the repository:

  • All Pull Requests should be opened against the develop branch. Do not open a Pull Request against master!

  • The project uses Google Protocol Buffers compiler for message serialization. A guide on how to install it is found here.

The following steps are only relevant if you intend to contribute to the repository. They are not required for agent development.

Recommended commands

  • The simplest way to get setup for development on the framework is to run the following:

    make new_env
    pipenv shell
    
  • For linting and static analysis use:

    make lint
    make static
    make pylint
    make security
    
  • For checking packages integrity:

    make package_checks
    
  • For testing aea.{SUBMODULE} with tests/test_{TESTMODULE} use:

    make dir={SUBMODULE} tdir={TESTMODULE} test-sub
    

    e.g.

    make dir=cli tdir=cli test-sub
    

Alternative commands

  • To install development dependencies manually (here optionally skipping Pipfile.lock creation):

    pipenv install --dev --skip-lock
    
  • To install the package from source in development mode:

    pip install -e .[all]
    

    Of, if you use zsh rather than bash:

    pip install -e ".[all]"
    
  • To run tests: tox -e py3.7 or make test. To only test specific modules try make dir=PATH_TO_MODULE tdir=PATH_TO_TESTS test-sub where (e.g. make dir=cli tdir=cli test-sub).

  • To run linters (code style checks) and code formatters: tox -e flake8 and tox -e black and tox -e isort or make lint

  • To run static type checks: tox -e mypy or make static

  • To run pylint: tox -e pylint or make pylint

  • To run security checks: tox -e bandit and tox -e safety or make security

Go Development

The fetchai/p2p_libp2p package is partially developed in Go.

  • To install Go visit the Golang site.

  • We use golines and golangci-lint for linting.

  • To run tests, use go test -p 1 -timeout 0 -count 1 -v ./... from the root directory of the package.

### Documentation

  • To start a live-reloading docs server on localhost: mkdocs serve. To amend the docs, create a new documentation file in docs/ and add a reference to it in mkdocs.yml.

  • To run demos against local packages use flag --local in aea CLI commands.

Cite

If you are using our software in a publication, please consider to cite it with the following BibTex entry:

@misc{agents-aea,
  Author = {Marco Favorito and David Minarsch and Ali Hosseini and Aristotelis Triantafyllidis and Diarmid Campbell and Oleg Panasevych and Kevin Chen and Yuri Turchenkov and Lokman Rahmani and Jiří Vestfál and James Riehl},
  Title = {Autonomous Economic Agent (AEA) Framework},
  Year = {2019},
}

About

A framework for autonomous economic agent (AEA) development

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 96.3%
  • Go 2.6%
  • JavaScript 0.3%
  • Solidity 0.2%
  • HTML 0.2%
  • Shell 0.2%
  • Other 0.2%