From d0026f02779a877311e2dea37646296d082f24d0 Mon Sep 17 00:00:00 2001 From: Felix Nicolae Bucsa Date: Tue, 6 Dec 2022 12:48:39 +0100 Subject: [PATCH 1/3] Added framework architecture section in introduction --- docs/introduction/core-concepts/architecture.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 docs/introduction/core-concepts/architecture.md diff --git a/docs/introduction/core-concepts/architecture.md b/docs/introduction/core-concepts/architecture.md new file mode 100644 index 0000000000..bd3d4190eb --- /dev/null +++ b/docs/introduction/core-concepts/architecture.md @@ -0,0 +1,7 @@ +Taken all components together, the following table depicts a simplified illustration of an AEA: + +[ADD TABLE] + +It is possible to find further information about the framework’s components at the “AEA Framework Components: Deep-Dives” section in the “Advanced Development Guide”. + +[ADD LINKS] From 970eb65592eb5627e9c66fbe84c0d55f5cef75ff Mon Sep 17 00:00:00 2001 From: Felix Nicolae Bucsa Date: Tue, 6 Dec 2022 12:50:53 +0100 Subject: [PATCH 2/3] edits --- docs/index.md | 62 --------------------------------------------------- mkdocs.yml | 4 +++- 2 files changed, 3 insertions(+), 63 deletions(-) delete mode 100644 docs/index.md diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index f852eab46f..0000000000 --- a/docs/index.md +++ /dev/null @@ -1,62 +0,0 @@ - -The AEA framework provides the tools for creating Autonomous Economic Agents (AEA). - -## What are AEAs? - -We define an autonomous economic agent or AEA as: - -> An intelligent agent acting on an owner's behalf, with limited or no interference, and whose goal is to generate economic value for its owner. - - - -An AEA represents an individual, organisation or object and looks after its interests. AEAs act independently of constant input from their owner and autonomously execute actions to achieve their prescribed goals. Their purpose is to create economic value for you, their owner, in clearly defined domains. AEAs have a wide range of application areas and we provide demo guides to highlight examples of their use cases. - -### What is not an AEA - -* Any agent: AEAs' purpose is to generate economic value in a multi-stakeholder environment with competing incentives between agents. They represent humans, organisations or objects. -* APIs or sensors which do not have agency. -* Smart contracts which do not display any proactiveness and are purely reactive to external requests (=contract calls and transactions). -* Artificial General Intelligence (AGI). AEAs can have a very narrow, goal directed focus involving some economic gain and can have a very simple logic. - -
-

Note

-

In the rest of the documentation, unless specified otherwise, we use the terms AEA and agent interchangeably to refer to AEA as defined above.

-
- -## What is the AEA Framework? - -The AEA framework is a development suite, currently implemented in Python, which equips you with an efficient and accessible set of tools for building and running AEAs. The framework is modular, extensible, and composable. It attempts to make agent development as straightforward an experience as possible, similar to web development using popular web frameworks. - -AEAs achieve their goals with the help of a search & discovery service for AEAs -- the simple Open Economic Framework (sOEF) -- a decentralized agent communication system -- the Agent Communication Network (ACN) -- and using Fetch.ai's blockchain as a financial settlement and commitment layer. AEAs can also be integrated with third-party blockchains, such as Ethereum. - - -## Why build with the AEA Framework? - -The AEA framework provides the developer with a number of features, which combined cannot be found anywhere else: - -* The peer-to-peer agent communication network (ACN) allows your AEAs to interact with all other AEAs over the public internet. -* The search and discovery system sOEF allows your AEAs to find other AEAs. -* The AEA registry enables code sharing and re-use by providing a space in which AEAs or their individual components may be shared. -* The framework's crypto and ledger APIs make it possible for AEAs to interact with blockchains. -* The contract packages enable AEAs to interact with smart contracts in Fetch.ai and other third-party decentralised ledgers. - - -## Next steps - -To get started developing your own AEA, check out the getting started section. - -To learn more about some of the distinctive characteristics of agent-oriented development, check out the guide on agent-oriented development. - -If you would like to develop an AEA in a language different to Python then check out our language agnostic AEA definition. - -If you want to run a demo, check out the demo guides. - - -## Help us improve - -
-

Note

-

This developer documentation is a work in progress. If you spot any errors please open an issue on Github or contact us in the developer Discord channel.

-
- -
diff --git a/mkdocs.yml b/mkdocs.yml index 5f42ec3d1a..162ae22a58 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -13,7 +13,9 @@ theme: strict: true nav: - - Introduction: 'index.md' + - Introduction: + - AEA Framework core concepts: + - Framework architecture: 'introduction/core-concepts/architecture.md' - Version: 'version.md' - Upgrading: 'upgrading.md' - Concepts: From dcb7d2839d631a064b5b695a391ef63451fdcadf Mon Sep 17 00:00:00 2001 From: S Ali Hosseini <38721653+5A11@users.noreply.github.com> Date: Tue, 24 Jan 2023 15:40:27 +0000 Subject: [PATCH 3/3] Release 1.2.5 (#2859) --- .github/CODEOWNERS | 1 + .github/PULL_REQUEST_TEMPLATE/release.md | 2 +- .github/workflows/workflow.yml | 2 +- AUTHORS.md | 25 +- CITATION.cff | 29 + CODE_OF_CONDUCT.md | 28 +- CONTRIBUTING.md | 124 +- DEVELOPING.md | 222 ++ HISTORY.md | 74 +- README.md | 123 +- SECURITY.md | 2 +- aea/__init__.py | 2 +- aea/__version__.py | 4 +- aea/abstract_agent.py | 2 +- aea/aea.py | 2 +- aea/aea_builder.py | 2 +- aea/agent.py | 2 +- aea/agent_loop.py | 2 +- aea/cli/__init__.py | 2 +- aea/cli/__main__.py | 2 +- aea/cli/add.py | 2 +- aea/cli/add_key.py | 2 +- aea/cli/build.py | 2 +- aea/cli/config.py | 2 +- aea/cli/core.py | 2 +- aea/cli/create.py | 2 +- aea/cli/delete.py | 2 +- aea/cli/eject.py | 2 +- aea/cli/fetch.py | 2 +- aea/cli/fingerprint.py | 2 +- aea/cli/freeze.py | 2 +- aea/cli/generate.py | 2 +- aea/cli/generate_key.py | 2 +- aea/cli/generate_wealth.py | 2 +- aea/cli/get_address.py | 2 +- aea/cli/get_multiaddress.py | 2 +- aea/cli/get_public_key.py | 2 +- aea/cli/get_wealth.py | 2 +- aea/cli/init.py | 2 +- aea/cli/install.py | 2 +- aea/cli/interact.py | 2 +- aea/cli/issue_certificates.py | 2 +- aea/cli/launch.py | 2 +- aea/cli/list.py | 2 +- aea/cli/local_registry_sync.py | 2 +- aea/cli/login.py | 2 +- aea/cli/logout.py | 2 +- aea/cli/plugin.py | 2 +- aea/cli/publish.py | 2 +- aea/cli/push.py | 2 +- aea/cli/register.py | 2 +- aea/cli/registry/__init__.py | 2 +- aea/cli/registry/add.py | 2 +- aea/cli/registry/fetch.py | 2 +- aea/cli/registry/login.py | 2 +- aea/cli/registry/logout.py | 2 +- aea/cli/registry/publish.py | 2 +- aea/cli/registry/push.py | 2 +- aea/cli/registry/registration.py | 2 +- aea/cli/registry/settings.py | 2 +- aea/cli/registry/utils.py | 2 +- aea/cli/remove.py | 2 +- aea/cli/remove_key.py | 2 +- aea/cli/reset_password.py | 2 +- aea/cli/run.py | 2 +- aea/cli/scaffold.py | 2 +- aea/cli/search.py | 2 +- aea/cli/transfer.py | 2 +- aea/cli/upgrade.py | 2 +- aea/cli/utils/__init__.py | 2 +- aea/cli/utils/click_utils.py | 2 +- aea/cli/utils/config.py | 2 +- aea/cli/utils/constants.py | 2 +- aea/cli/utils/context.py | 2 +- aea/cli/utils/decorators.py | 2 +- aea/cli/utils/exceptions.py | 2 +- aea/cli/utils/formatting.py | 2 +- aea/cli/utils/generic.py | 2 +- aea/cli/utils/loggers.py | 2 +- aea/cli/utils/package_utils.py | 2 +- aea/common.py | 2 +- aea/components/__init__.py | 2 +- aea/components/base.py | 2 +- aea/components/loader.py | 2 +- aea/components/utils.py | 2 +- aea/configurations/__init__.py | 2 +- aea/configurations/base.py | 2 +- aea/configurations/constants.py | 2 +- aea/configurations/data_types.py | 2 +- aea/configurations/loader.py | 2 +- aea/configurations/manager.py | 2 +- aea/configurations/pypi.py | 2 +- aea/configurations/utils.py | 2 +- aea/configurations/validation.py | 2 +- aea/connections/__init__.py | 2 +- aea/connections/base.py | 2 +- aea/connections/scaffold/__init__.py | 2 +- aea/connections/scaffold/connection.py | 2 +- aea/connections/scaffold/connection.yaml | 6 +- aea/connections/scaffold/readme.md | 2 + aea/context/__init__.py | 2 +- aea/context/base.py | 2 +- aea/contracts/__init__.py | 2 +- aea/contracts/base.py | 2 +- aea/contracts/scaffold/__init__.py | 2 +- aea/contracts/scaffold/contract.py | 2 +- aea/contracts/scaffold/contract.yaml | 4 +- aea/crypto/__init__.py | 2 +- aea/crypto/base.py | 2 +- aea/crypto/helpers.py | 2 +- aea/crypto/ledger_apis.py | 2 +- aea/crypto/plugin.py | 2 +- aea/crypto/registries/__init__.py | 2 +- aea/crypto/registries/base.py | 2 +- aea/crypto/wallet.py | 2 +- aea/decision_maker/__init__.py | 2 +- aea/decision_maker/base.py | 2 +- aea/decision_maker/default.py | 2 +- aea/decision_maker/gop.py | 2 +- aea/decision_maker/scaffold.py | 2 +- aea/error_handler/__init__.py | 2 +- aea/error_handler/base.py | 2 +- aea/error_handler/default.py | 2 +- aea/error_handler/scaffold.py | 2 +- aea/exceptions.py | 2 +- aea/helpers/__init__.py | 2 +- aea/helpers/acn/__init__.py | 2 +- aea/helpers/acn/agent_record.py | 2 +- aea/helpers/acn/uri.py | 2 +- aea/helpers/async_friendly_queue.py | 2 +- aea/helpers/async_utils.py | 2 +- aea/helpers/base.py | 2 +- aea/helpers/constants.py | 2 +- aea/helpers/env_vars.py | 2 +- aea/helpers/exception_policy.py | 2 +- aea/helpers/exec_timeout.py | 2 +- aea/helpers/file_io.py | 2 +- aea/helpers/file_lock.py | 2 +- aea/helpers/http_requests.py | 2 +- aea/helpers/install_dependency.py | 2 +- aea/helpers/io.py | 2 +- aea/helpers/ipfs/__init__.py | 2 +- aea/helpers/ipfs/base.py | 2 +- aea/helpers/ipfs/pb/__init__.py | 2 +- aea/helpers/ipfs/utils.py | 2 +- aea/helpers/logging.py | 2 +- aea/helpers/multiaddr/__init__.py | 2 +- aea/helpers/multiaddr/base.py | 2 +- aea/helpers/multiple_executor.py | 2 +- aea/helpers/pipe.py | 2 +- .../preference_representations/__init__.py | 2 +- .../preference_representations/base.py | 2 +- aea/helpers/profiling.py | 2 +- aea/helpers/search/__init__.py | 2 +- aea/helpers/search/generic.py | 2 +- aea/helpers/search/models.py | 2 +- aea/helpers/serializers.py | 2 +- aea/helpers/storage/__init__.py | 2 +- aea/helpers/storage/backends/__init__.py | 2 +- aea/helpers/storage/backends/base.py | 2 +- aea/helpers/storage/backends/sqlite.py | 2 +- aea/helpers/storage/generic_storage.py | 2 +- aea/helpers/sym_link.py | 2 +- aea/helpers/transaction/__init__.py | 2 +- aea/helpers/transaction/base.py | 2 +- aea/helpers/win32.py | 2 +- aea/helpers/yaml_utils.py | 2 +- aea/identity/__init__.py | 2 +- aea/identity/base.py | 2 +- aea/launcher.py | 2 +- aea/mail/__init__.py | 2 +- aea/mail/base.py | 2 +- aea/manager/__init__.py | 2 +- aea/manager/manager.py | 2 +- aea/manager/project.py | 2 +- aea/manager/utils.py | 2 +- aea/multiplexer.py | 2 +- aea/protocols/__init__.py | 2 +- aea/protocols/base.py | 2 +- aea/protocols/dialogue/__init__.py | 2 +- aea/protocols/dialogue/base.py | 2 +- aea/protocols/generator/__init__.py | 2 +- aea/protocols/generator/base.py | 2 +- aea/protocols/generator/common.py | 2 +- .../generator/extract_specification.py | 2 +- aea/protocols/generator/validate.py | 2 +- aea/protocols/scaffold/__init__.py | 2 +- aea/protocols/scaffold/message.py | 2 +- aea/protocols/scaffold/protocol.yaml | 6 +- aea/protocols/scaffold/serialization.py | 2 +- aea/registries/__init__.py | 2 +- aea/registries/base.py | 2 +- aea/registries/filter.py | 2 +- aea/registries/resources.py | 2 +- aea/runner.py | 2 +- aea/runtime.py | 2 +- aea/skills/__init__.py | 2 +- aea/skills/base.py | 2 +- aea/skills/behaviours.py | 2 +- aea/skills/scaffold/__init__.py | 2 +- aea/skills/scaffold/behaviours.py | 2 +- aea/skills/scaffold/handlers.py | 2 +- aea/skills/scaffold/my_model.py | 2 +- aea/skills/scaffold/skill.yaml | 8 +- aea/skills/tasks.py | 2 +- aea/test_tools/__init__.py | 2 +- aea/test_tools/click_testing.py | 2 +- aea/test_tools/constants.py | 2 +- aea/test_tools/exceptions.py | 2 +- aea/test_tools/generic.py | 2 +- aea/test_tools/test_cases.py | 2 +- aea/test_tools/test_contract.py | 2 +- aea/test_tools/test_skill.py | 2 +- benchmark/README.md | 17 +- benchmark/__init__.py | 2 +- benchmark/cases/__init__.py | 2 +- benchmark/cases/cpu_burn.py | 2 +- benchmark/cases/helpers/__init__.py | 2 +- benchmark/cases/helpers/dummy_handler.py | 2 +- .../react_multi_agents_fake_connection.py | 2 +- benchmark/cases/react_speed_in_loop.py | 2 +- benchmark/cases/react_speed_multi_agents.py | 2 +- benchmark/checks/__init__.py | 2 +- .../checks/check_agent_construction_time.py | 2 +- benchmark/checks/check_decision_maker.py | 2 +- .../checks/check_dialogues_memory_usage.py | 2 +- benchmark/checks/check_mem_usage.py | 2 +- .../checks/check_messages_memory_usage.py | 2 +- benchmark/checks/check_multiagent.py | 2 +- .../checks/check_multiagent_http_dialogues.py | 2 +- benchmark/checks/check_proactive.py | 2 +- benchmark/checks/check_reactive.py | 2 +- benchmark/checks/utils.py | 2 +- benchmark/framework/__init__.py | 2 +- benchmark/framework/aea_test_wrapper.py | 2 +- benchmark/framework/benchmark.py | 2 +- benchmark/framework/cli.py | 2 +- benchmark/framework/executor.py | 2 +- benchmark/framework/fake_connection.py | 2 +- benchmark/framework/func_details.py | 2 +- benchmark/framework/report_printer.py | 2 +- deploy-image/README.md | 7 +- deploy-image/packages/__init__.py | 2 +- develop-image/README.md | 92 +- develop-image/scripts | 1 - develop-image/scripts/docker-build-img.sh | 41 + develop-image/scripts/docker-publish-img.sh | 13 + docker-images | 1 - docs/12-factor.md | 217 +- docs/acn-internals.md | 525 ++--- docs/acn.md | 27 +- docs/aea-vs-mvc.md | 8 +- docs/agent-oriented-development.md | 50 +- docs/agent-vs-aea.md | 278 +-- docs/aggregation-demo.md | 94 +- docs/app-areas.md | 39 +- docs/aries-cloud-agent-demo.md | 174 +- docs/assets/images/favicon.ico | Bin 0 -> 1150 bytes docs/assets/images/logo.png | Bin 0 -> 14201 bytes docs/build-aea-programmatically.md | 270 +-- docs/build-aea-step-by-step.md | 21 +- docs/car-park-skills.md | 182 +- docs/cli-commands.md | 100 +- docs/cli-how-to.md | 16 +- docs/cli-vs-programmatic-aeas.md | 481 ++--- docs/config.md | 30 +- docs/connect-a-frontend.md | 8 +- docs/connection.md | 27 +- docs/contract.md | 59 +- docs/core-components-1.md | 57 +- docs/core-components-2.md | 26 +- docs/css/my-styles.css | 86 +- docs/debug.md | 5 +- docs/decision-maker-transaction.md | 555 ++--- docs/decision-maker.md | 30 +- docs/defining-data-models.md | 36 +- docs/demos.md | 4 +- docs/deployment.md | 4 +- docs/design-principles.md | 20 +- docs/development-setup.md | 32 +- docs/diagram.md | 29 +- docs/erc1155-skills.md | 213 +- docs/generic-skills-step-by-step.md | 141 +- docs/generic-skills.md | 157 +- docs/generic-storage.md | 38 +- docs/glossary.md | 10 +- docs/gym-example.md | 17 +- docs/gym-skill.md | 81 +- docs/http-connection-and-skill.md | 28 +- docs/identity.md | 9 +- docs/index.md | 57 +- docs/interaction-protocol.md | 25 +- docs/known-limits.md | 4 +- docs/language-agnostic-definition.md | 246 ++- docs/ledger-integration.md | 41 +- docs/limits.md | 102 +- docs/logging.md | 18 +- docs/message-routing.md | 24 +- docs/ml-skills.md | 213 +- docs/modes.md | 1 + docs/multi-agent-manager.md | 23 +- docs/multiplexer-standalone.md | 233 +-- docs/oef-ledger.md | 13 +- docs/oracle-demo.md | 443 ++-- docs/orm-integration.md | 170 +- docs/p2p-connection.md | 132 +- docs/package-imports.md | 23 +- docs/performance-benchmark.md | 77 +- docs/por.md | 3 +- docs/prometheus.md | 216 +- docs/protocol-generator.md | 116 +- docs/protocol.md | 125 +- docs/query-language.md | 54 +- docs/questions-and-answers.md | 101 +- docs/quickstart.md | 425 ++-- docs/raspberry-set-up.md | 77 +- docs/runtime-cost.md | 6 +- docs/scaffolding.md | 17 +- docs/security.md | 3 +- docs/simple-oef-usage.md | 45 +- docs/skill-guide.md | 1210 +++++------ docs/skill-testing.md | 32 +- docs/skill.md | 73 +- docs/standalone-transaction.md | 157 +- docs/step-one.md | 18 +- docs/tac-skills-contract.md | 569 ++--- docs/tac-skills.md | 305 +-- docs/tac.md | 25 +- docs/thermometer-skills.md | 168 +- docs/trust.md | 6 +- docs/upgrading.md | 155 +- docs/version.md | 4 +- docs/vision.md | 26 +- docs/wealth.md | 37 +- docs/weather-skills.md | 184 +- examples/__init__.py | 2 +- examples/aealite_go/README.md | 2 +- examples/gym_ex/README.md | 2 +- examples/gym_ex/gyms/__init__.py | 2 +- examples/gym_ex/gyms/env.py | 2 +- examples/gym_ex/proxy/__init__.py | 2 +- examples/gym_ex/proxy/agent.py | 2 +- examples/gym_ex/proxy/env.py | 2 +- examples/gym_ex/rl/__init__.py | 2 +- examples/gym_ex/rl/agent.py | 2 +- examples/gym_ex/train.py | 2 +- examples/tac_deploy/README.md | 22 +- examples/tac_deploy/packages/__init__.py | 2 +- examples/tac_deploy/tac_run.sh | 2 +- install_packages.py | 2 +- libs/go/aea_end2end/pexpect_popen.py | 2 +- libs/go/aea_end2end/test_fipa_end2end.py | 2 +- libs/go/aealite/README.md | 115 +- .../tests/pexpect_popen.py | 2 +- .../tests/test_build_and_run.py | 2 +- libs/go/libp2p_node/README.md | 11 +- mkdocs.yml | 109 +- packages/__init__.py | 2 +- packages/fetchai/__init__.py | 2 +- packages/fetchai/agents/aries_alice/README.md | 8 +- .../agents/aries_alice/aea-config.yaml | 28 +- packages/fetchai/agents/aries_faber/README.md | 17 +- .../agents/aries_faber/aea-config.yaml | 28 +- .../fetchai/agents/car_data_buyer/README.md | 6 +- .../agents/car_data_buyer/aea-config.yaml | 30 +- .../fetchai/agents/car_detector/README.md | 4 +- .../agents/car_detector/aea-config.yaml | 30 +- .../fetchai/agents/coin_price_feed/README.md | 2 +- .../agents/coin_price_feed/aea-config.yaml | 32 +- .../agents/coin_price_oracle/README.md | 3 +- .../agents/coin_price_oracle/aea-config.yaml | 42 +- .../agents/coin_price_oracle_client/README.md | 1 - .../coin_price_oracle_client/aea-config.yaml | 34 +- .../confirmation_aea_aw1/aea-config.yaml | 44 +- .../confirmation_aea_aw2/aea-config.yaml | 34 +- .../confirmation_aea_aw3/aea-config.yaml | 44 +- .../confirmation_aea_aw5/aea-config.yaml | 44 +- .../fetchai/agents/erc1155_client/README.md | 4 +- .../agents/erc1155_client/aea-config.yaml | 38 +- .../fetchai/agents/erc1155_deployer/README.md | 4 +- .../agents/erc1155_deployer/aea-config.yaml | 38 +- .../fetchai/agents/error_test/aea-config.yaml | 6 +- .../fetchai/agents/fipa_dummy_buyer/README.md | 2 +- .../agents/fipa_dummy_buyer/aea-config.yaml | 14 +- .../fetchai/agents/generic_buyer/README.md | 6 +- .../agents/generic_buyer/aea-config.yaml | 28 +- .../fetchai/agents/generic_seller/README.md | 6 +- .../agents/generic_seller/aea-config.yaml | 28 +- packages/fetchai/agents/gym_aea/README.md | 8 +- .../fetchai/agents/gym_aea/aea-config.yaml | 16 +- packages/fetchai/agents/hello_world/README.md | 4 +- .../agents/hello_world/aea-config.yaml | 8 +- .../agents/latest_block_feed/README.md | 2 +- .../agents/latest_block_feed/aea-config.yaml | 18 +- .../fetchai/agents/ml_data_provider/README.md | 6 +- .../agents/ml_data_provider/aea-config.yaml | 30 +- .../fetchai/agents/ml_model_trainer/README.md | 4 +- .../agents/ml_model_trainer/aea-config.yaml | 30 +- .../fetchai/agents/my_first_aea/README.md | 4 +- .../agents/my_first_aea/aea-config.yaml | 14 +- .../registration_aea_aw1/aea-config.yaml | 38 +- .../agents/simple_aggregator/README.md | 1 - .../agents/simple_aggregator/aea-config.yaml | 40 +- .../agents/simple_buyer_aw2/aea-config.yaml | 38 +- .../agents/simple_buyer_aw5/aea-config.yaml | 44 +- .../agents/simple_seller_aw2/aea-config.yaml | 48 +- .../agents/simple_seller_aw5/aea-config.yaml | 62 +- .../simple_service_registration/README.md | 2 +- .../aea-config.yaml | 22 +- .../agents/simple_service_search/README.md | 2 +- .../simple_service_search/aea-config.yaml | 22 +- .../fetchai/agents/tac_controller/README.md | 4 +- .../agents/tac_controller/aea-config.yaml | 22 +- .../agents/tac_controller_contract/README.md | 4 +- .../tac_controller_contract/aea-config.yaml | 42 +- .../fetchai/agents/tac_participant/README.md | 4 +- .../agents/tac_participant/aea-config.yaml | 32 +- .../agents/tac_participant_contract/README.md | 4 +- .../tac_participant_contract/aea-config.yaml | 42 +- .../fetchai/agents/thermometer_aea/README.md | 6 +- .../agents/thermometer_aea/aea-config.yaml | 30 +- .../agents/thermometer_client/README.md | 4 +- .../agents/thermometer_client/aea-config.yaml | 30 +- .../fetchai/agents/weather_client/README.md | 4 +- .../agents/weather_client/aea-config.yaml | 30 +- .../fetchai/agents/weather_station/README.md | 6 +- .../agents/weather_station/aea-config.yaml | 30 +- packages/fetchai/connections/__init__.py | 2 +- packages/fetchai/connections/gym/README.md | 4 +- packages/fetchai/connections/gym/__init__.py | 2 +- .../fetchai/connections/gym/connection.py | 4 +- .../fetchai/connections/gym/connection.yaml | 12 +- .../fetchai/connections/http_client/README.md | 2 +- .../connections/http_client/__init__.py | 2 +- .../connections/http_client/connection.py | 4 +- .../connections/http_client/connection.yaml | 12 +- .../fetchai/connections/http_server/README.md | 2 +- .../connections/http_server/__init__.py | 2 +- .../connections/http_server/connection.py | 4 +- .../connections/http_server/connection.yaml | 12 +- packages/fetchai/connections/ledger/README.md | 2 +- .../fetchai/connections/ledger/__init__.py | 2 +- packages/fetchai/connections/ledger/base.py | 4 +- .../fetchai/connections/ledger/connection.py | 2 +- .../connections/ledger/connection.yaml | 22 +- .../connections/ledger/contract_dispatcher.py | 2 +- .../connections/ledger/ledger_dispatcher.py | 2 +- .../fetchai/connections/local/__init__.py | 2 +- .../fetchai/connections/local/connection.py | 4 +- .../fetchai/connections/local/connection.yaml | 8 +- packages/fetchai/connections/oef/README.md | 4 +- packages/fetchai/connections/oef/__init__.py | 2 +- .../fetchai/connections/oef/connection.py | 4 +- .../fetchai/connections/oef/connection.yaml | 14 +- .../connections/oef/object_translator.py | 2 +- .../fetchai/connections/p2p_libp2p/README.md | 4 +- .../connections/p2p_libp2p/__init__.py | 2 +- .../p2p_libp2p/check_dependencies.py | 2 +- .../connections/p2p_libp2p/connection.py | 4 +- .../connections/p2p_libp2p/connection.yaml | 16 +- .../fetchai/connections/p2p_libp2p/consts.py | 2 +- .../p2p_libp2p/libp2p_node/README.md | 11 +- .../connections/p2p_libp2p_client/README.md | 5 +- .../connections/p2p_libp2p_client/__init__.py | 2 +- .../p2p_libp2p_client/connection.py | 4 +- .../p2p_libp2p_client/connection.yaml | 10 +- .../connections/p2p_libp2p_mailbox/README.md | 5 +- .../p2p_libp2p_mailbox/__init__.py | 2 +- .../p2p_libp2p_mailbox/connection.py | 4 +- .../p2p_libp2p_mailbox/connection.yaml | 10 +- .../fetchai/connections/p2p_stub/README.md | 2 +- .../fetchai/connections/p2p_stub/__init__.py | 2 +- .../connections/p2p_stub/connection.py | 4 +- .../connections/p2p_stub/connection.yaml | 10 +- .../fetchai/connections/prometheus/README.md | 3 +- .../connections/prometheus/__init__.py | 2 +- .../connections/prometheus/connection.py | 4 +- .../connections/prometheus/connection.yaml | 12 +- packages/fetchai/connections/soef/README.md | 4 +- packages/fetchai/connections/soef/__init__.py | 2 +- .../fetchai/connections/soef/connection.py | 4 +- .../fetchai/connections/soef/connection.yaml | 12 +- packages/fetchai/connections/stub/README.md | 4 +- packages/fetchai/connections/stub/__init__.py | 2 +- .../fetchai/connections/stub/connection.py | 4 +- .../fetchai/connections/stub/connection.yaml | 8 +- packages/fetchai/connections/tcp/README.md | 2 +- packages/fetchai/connections/tcp/__init__.py | 2 +- packages/fetchai/connections/tcp/base.py | 4 +- .../fetchai/connections/tcp/connection.py | 2 +- .../fetchai/connections/tcp/connection.yaml | 14 +- .../fetchai/connections/tcp/tcp_client.py | 2 +- .../fetchai/connections/tcp/tcp_server.py | 2 +- .../fetchai/connections/webhook/README.md | 2 +- .../fetchai/connections/webhook/__init__.py | 2 +- .../fetchai/connections/webhook/connection.py | 4 +- .../connections/webhook/connection.yaml | 12 +- packages/fetchai/contracts/__init__.py | 2 +- packages/fetchai/contracts/erc1155/README.md | 29 +- .../fetchai/contracts/erc1155/__init__.py | 2 +- .../fetchai/contracts/erc1155/contract.py | 4 +- .../fetchai/contracts/erc1155/contract.yaml | 8 +- .../fetchai/contracts/fet_erc20/README.md | 4 +- .../fetchai/contracts/fet_erc20/__init__.py | 2 +- .../fetchai/contracts/fet_erc20/contract.py | 4 +- .../fetchai/contracts/fet_erc20/contract.yaml | 8 +- packages/fetchai/contracts/oracle/README.md | 4 +- packages/fetchai/contracts/oracle/__init__.py | 2 +- packages/fetchai/contracts/oracle/contract.py | 4 +- .../fetchai/contracts/oracle/contract.yaml | 8 +- .../fetchai/contracts/oracle_client/README.md | 2 +- .../contracts/oracle_client/__init__.py | 2 +- .../contracts/oracle_client/contract.py | 4 +- .../contracts/oracle_client/contract.yaml | 8 +- .../fetchai/contracts/staking_erc20/README.md | 2 +- .../contracts/staking_erc20/__init__.py | 2 +- .../contracts/staking_erc20/contract.py | 4 +- .../contracts/staking_erc20/contract.yaml | 8 +- packages/fetchai/protocols/__init__.py | 2 +- packages/fetchai/protocols/acn/README.md | 2 +- packages/fetchai/protocols/acn/__init__.py | 4 +- .../fetchai/protocols/acn/custom_types.py | 2 +- packages/fetchai/protocols/acn/dialogues.py | 2 +- packages/fetchai/protocols/acn/message.py | 4 +- packages/fetchai/protocols/acn/protocol.yaml | 14 +- .../fetchai/protocols/acn/serialization.py | 2 +- .../fetchai/protocols/aggregation/README.md | 4 +- .../fetchai/protocols/aggregation/__init__.py | 4 +- .../protocols/aggregation/aggregation.proto | 2 +- .../protocols/aggregation/aggregation_pb2.py | 8 +- .../protocols/aggregation/dialogues.py | 2 +- .../fetchai/protocols/aggregation/message.py | 6 +- .../protocols/aggregation/protocol.yaml | 18 +- .../protocols/aggregation/serialization.py | 2 +- .../fetchai/protocols/contract_api/README.md | 2 +- .../protocols/contract_api/__init__.py | 4 +- .../protocols/contract_api/custom_types.py | 2 +- .../protocols/contract_api/dialogues.py | 2 +- .../fetchai/protocols/contract_api/message.py | 4 +- .../protocols/contract_api/protocol.yaml | 14 +- .../protocols/contract_api/serialization.py | 2 +- .../fetchai/protocols/cosm_trade/README.md | 7 +- .../fetchai/protocols/cosm_trade/__init__.py | 4 +- .../protocols/cosm_trade/custom_types.py | 2 +- .../fetchai/protocols/cosm_trade/dialogues.py | 2 +- .../fetchai/protocols/cosm_trade/message.py | 4 +- .../protocols/cosm_trade/protocol.yaml | 14 +- .../protocols/cosm_trade/serialization.py | 2 +- packages/fetchai/protocols/default/README.md | 2 +- .../fetchai/protocols/default/__init__.py | 4 +- .../fetchai/protocols/default/custom_types.py | 2 +- .../fetchai/protocols/default/dialogues.py | 2 +- packages/fetchai/protocols/default/message.py | 4 +- .../fetchai/protocols/default/protocol.yaml | 14 +- .../protocols/default/serialization.py | 2 +- packages/fetchai/protocols/fipa/README.md | 4 +- packages/fetchai/protocols/fipa/__init__.py | 4 +- .../fetchai/protocols/fipa/custom_types.py | 2 +- packages/fetchai/protocols/fipa/dialogues.py | 2 +- packages/fetchai/protocols/fipa/message.py | 4 +- packages/fetchai/protocols/fipa/protocol.yaml | 14 +- .../fetchai/protocols/fipa/serialization.py | 2 +- packages/fetchai/protocols/gym/README.md | 4 +- packages/fetchai/protocols/gym/__init__.py | 4 +- .../fetchai/protocols/gym/custom_types.py | 2 +- packages/fetchai/protocols/gym/dialogues.py | 2 +- packages/fetchai/protocols/gym/message.py | 4 +- packages/fetchai/protocols/gym/protocol.yaml | 14 +- .../fetchai/protocols/gym/serialization.py | 2 +- packages/fetchai/protocols/http/README.md | 4 +- packages/fetchai/protocols/http/__init__.py | 4 +- packages/fetchai/protocols/http/dialogues.py | 2 +- packages/fetchai/protocols/http/message.py | 4 +- packages/fetchai/protocols/http/protocol.yaml | 12 +- .../fetchai/protocols/http/serialization.py | 2 +- .../fetchai/protocols/ledger_api/README.md | 2 +- .../fetchai/protocols/ledger_api/__init__.py | 4 +- .../protocols/ledger_api/custom_types.py | 2 +- .../fetchai/protocols/ledger_api/dialogues.py | 2 +- .../fetchai/protocols/ledger_api/message.py | 4 +- .../protocols/ledger_api/protocol.yaml | 14 +- .../protocols/ledger_api/serialization.py | 2 +- packages/fetchai/protocols/ml_trade/README.md | 2 +- .../fetchai/protocols/ml_trade/__init__.py | 4 +- .../protocols/ml_trade/custom_types.py | 2 +- .../fetchai/protocols/ml_trade/dialogues.py | 2 +- .../fetchai/protocols/ml_trade/message.py | 4 +- .../fetchai/protocols/ml_trade/protocol.yaml | 14 +- .../protocols/ml_trade/serialization.py | 2 +- .../fetchai/protocols/oef_search/README.md | 2 +- .../fetchai/protocols/oef_search/__init__.py | 4 +- .../protocols/oef_search/custom_types.py | 2 +- .../fetchai/protocols/oef_search/dialogues.py | 2 +- .../fetchai/protocols/oef_search/message.py | 4 +- .../protocols/oef_search/protocol.yaml | 14 +- .../protocols/oef_search/serialization.py | 2 +- .../fetchai/protocols/prometheus/README.md | 2 +- .../fetchai/protocols/prometheus/__init__.py | 4 +- .../fetchai/protocols/prometheus/dialogues.py | 2 +- .../fetchai/protocols/prometheus/message.py | 4 +- .../protocols/prometheus/protocol.yaml | 12 +- .../protocols/prometheus/serialization.py | 2 +- packages/fetchai/protocols/register/README.md | 2 +- .../fetchai/protocols/register/__init__.py | 4 +- .../fetchai/protocols/register/dialogues.py | 2 +- .../fetchai/protocols/register/message.py | 4 +- .../fetchai/protocols/register/protocol.yaml | 12 +- .../protocols/register/serialization.py | 2 +- packages/fetchai/protocols/signing/README.md | 2 +- .../fetchai/protocols/signing/__init__.py | 4 +- .../fetchai/protocols/signing/custom_types.py | 2 +- .../fetchai/protocols/signing/dialogues.py | 2 +- packages/fetchai/protocols/signing/message.py | 4 +- .../fetchai/protocols/signing/protocol.yaml | 14 +- .../protocols/signing/serialization.py | 2 +- .../fetchai/protocols/state_update/README.md | 2 +- .../protocols/state_update/__init__.py | 4 +- .../protocols/state_update/dialogues.py | 2 +- .../fetchai/protocols/state_update/message.py | 4 +- .../protocols/state_update/protocol.yaml | 12 +- .../protocols/state_update/serialization.py | 2 +- packages/fetchai/protocols/tac/README.md | 4 +- packages/fetchai/protocols/tac/__init__.py | 4 +- .../fetchai/protocols/tac/custom_types.py | 2 +- packages/fetchai/protocols/tac/dialogues.py | 2 +- packages/fetchai/protocols/tac/message.py | 4 +- packages/fetchai/protocols/tac/protocol.yaml | 14 +- .../fetchai/protocols/tac/serialization.py | 2 +- packages/fetchai/skills/__init__.py | 2 +- .../skills/advanced_data_request/README.md | 4 +- .../skills/advanced_data_request/__init__.py | 4 +- .../advanced_data_request/behaviours.py | 2 +- .../skills/advanced_data_request/dialogues.py | 2 +- .../skills/advanced_data_request/handlers.py | 2 +- .../skills/advanced_data_request/models.py | 2 +- .../skills/advanced_data_request/skill.yaml | 18 +- packages/fetchai/skills/aries_alice/README.md | 12 +- .../fetchai/skills/aries_alice/__init__.py | 4 +- .../fetchai/skills/aries_alice/behaviours.py | 2 +- .../fetchai/skills/aries_alice/dialogues.py | 2 +- .../fetchai/skills/aries_alice/handlers.py | 2 +- .../fetchai/skills/aries_alice/skill.yaml | 22 +- .../fetchai/skills/aries_alice/strategy.py | 2 +- packages/fetchai/skills/aries_faber/README.md | 19 +- .../fetchai/skills/aries_faber/__init__.py | 4 +- .../fetchai/skills/aries_faber/behaviours.py | 2 +- .../fetchai/skills/aries_faber/dialogues.py | 2 +- .../fetchai/skills/aries_faber/handlers.py | 2 +- .../fetchai/skills/aries_faber/skill.yaml | 22 +- .../fetchai/skills/aries_faber/strategy.py | 2 +- .../fetchai/skills/carpark_client/README.md | 16 +- .../fetchai/skills/carpark_client/__init__.py | 4 +- .../skills/carpark_client/behaviours.py | 2 +- .../skills/carpark_client/dialogues.py | 2 +- .../fetchai/skills/carpark_client/handlers.py | 2 +- .../fetchai/skills/carpark_client/skill.yaml | 26 +- .../fetchai/skills/carpark_client/strategy.py | 2 +- .../skills/carpark_detection/README.md | 10 +- .../skills/carpark_detection/__init__.py | 4 +- .../skills/carpark_detection/behaviours.py | 2 +- .../skills/carpark_detection/database.py | 2 +- .../skills/carpark_detection/dialogues.py | 2 +- .../skills/carpark_detection/handlers.py | 2 +- .../skills/carpark_detection/skill.yaml | 26 +- .../skills/carpark_detection/strategy.py | 2 +- .../fetchai/skills/confirmation_aw1/README.md | 12 +- .../skills/confirmation_aw1/__init__.py | 4 +- .../skills/confirmation_aw1/behaviours.py | 2 +- .../skills/confirmation_aw1/dialogues.py | 2 +- .../skills/confirmation_aw1/handlers.py | 2 +- .../confirmation_aw1/registration_db.py | 2 +- .../skills/confirmation_aw1/skill.yaml | 28 +- .../skills/confirmation_aw1/strategy.py | 2 +- .../fetchai/skills/confirmation_aw2/README.md | 18 +- .../skills/confirmation_aw2/__init__.py | 4 +- .../skills/confirmation_aw2/behaviours.py | 2 +- .../skills/confirmation_aw2/dialogues.py | 2 +- .../skills/confirmation_aw2/handlers.py | 2 +- .../confirmation_aw2/registration_db.py | 2 +- .../skills/confirmation_aw2/skill.yaml | 30 +- .../skills/confirmation_aw2/strategy.py | 2 +- .../fetchai/skills/confirmation_aw3/README.md | 18 +- .../skills/confirmation_aw3/__init__.py | 4 +- .../skills/confirmation_aw3/behaviours.py | 2 +- .../skills/confirmation_aw3/dialogues.py | 2 +- .../skills/confirmation_aw3/handlers.py | 2 +- .../confirmation_aw3/registration_db.py | 2 +- .../skills/confirmation_aw3/skill.yaml | 32 +- .../skills/confirmation_aw3/strategy.py | 2 +- packages/fetchai/skills/echo/README.md | 10 +- packages/fetchai/skills/echo/__init__.py | 4 +- packages/fetchai/skills/echo/behaviours.py | 2 +- packages/fetchai/skills/echo/dialogues.py | 2 +- packages/fetchai/skills/echo/handlers.py | 2 +- packages/fetchai/skills/echo/skill.yaml | 14 +- .../fetchai/skills/erc1155_client/README.md | 16 +- .../fetchai/skills/erc1155_client/__init__.py | 4 +- .../skills/erc1155_client/behaviours.py | 2 +- .../skills/erc1155_client/dialogues.py | 2 +- .../fetchai/skills/erc1155_client/handlers.py | 2 +- .../fetchai/skills/erc1155_client/skill.yaml | 30 +- .../fetchai/skills/erc1155_client/strategy.py | 2 +- .../fetchai/skills/erc1155_deploy/README.md | 14 +- .../fetchai/skills/erc1155_deploy/__init__.py | 4 +- .../skills/erc1155_deploy/behaviours.py | 2 +- .../skills/erc1155_deploy/dialogues.py | 2 +- .../fetchai/skills/erc1155_deploy/handlers.py | 2 +- .../fetchai/skills/erc1155_deploy/skill.yaml | 30 +- .../fetchai/skills/erc1155_deploy/strategy.py | 2 +- packages/fetchai/skills/error/README.md | 3 +- packages/fetchai/skills/error/__init__.py | 4 +- packages/fetchai/skills/error/handlers.py | 2 +- packages/fetchai/skills/error/skill.yaml | 10 +- .../fetchai/skills/error_test_skill/README.md | 4 +- .../skills/error_test_skill/__init__.py | 4 +- .../skills/error_test_skill/behaviours.py | 2 +- .../skills/error_test_skill/skill.yaml | 8 +- packages/fetchai/skills/fetch_block/README.md | 4 +- .../fetchai/skills/fetch_block/__init__.py | 4 +- .../fetchai/skills/fetch_block/behaviours.py | 2 +- .../fetchai/skills/fetch_block/dialogues.py | 2 +- .../fetchai/skills/fetch_block/handlers.py | 2 +- .../fetchai/skills/fetch_block/skill.yaml | 16 +- .../skills/fipa_dummy_buyer/__init__.py | 4 +- .../skills/fipa_dummy_buyer/behaviours.py | 2 +- .../skills/fipa_dummy_buyer/dialogues.py | 2 +- .../skills/fipa_dummy_buyer/handlers.py | 2 +- .../skills/fipa_dummy_buyer/skill.yaml | 12 +- .../fetchai/skills/generic_buyer/README.md | 18 +- .../fetchai/skills/generic_buyer/__init__.py | 4 +- .../skills/generic_buyer/behaviours.py | 2 +- .../fetchai/skills/generic_buyer/dialogues.py | 2 +- .../fetchai/skills/generic_buyer/handlers.py | 2 +- .../fetchai/skills/generic_buyer/skill.yaml | 26 +- .../fetchai/skills/generic_buyer/strategy.py | 2 +- .../fetchai/skills/generic_seller/README.md | 12 +- .../fetchai/skills/generic_seller/__init__.py | 4 +- .../skills/generic_seller/behaviours.py | 2 +- .../skills/generic_seller/dialogues.py | 2 +- .../fetchai/skills/generic_seller/handlers.py | 2 +- .../fetchai/skills/generic_seller/skill.yaml | 24 +- .../fetchai/skills/generic_seller/strategy.py | 2 +- packages/fetchai/skills/gym/README.md | 9 +- packages/fetchai/skills/gym/__init__.py | 4 +- packages/fetchai/skills/gym/dialogues.py | 2 +- packages/fetchai/skills/gym/handlers.py | 2 +- packages/fetchai/skills/gym/helpers.py | 2 +- packages/fetchai/skills/gym/rl_agent.py | 2 +- packages/fetchai/skills/gym/skill.yaml | 20 +- packages/fetchai/skills/gym/tasks.py | 2 +- .../fetchai/skills/hello_world/__init__.py | 4 +- .../fetchai/skills/hello_world/behaviours.py | 2 +- .../fetchai/skills/hello_world/skill.yaml | 6 +- packages/fetchai/skills/http_echo/README.md | 4 +- packages/fetchai/skills/http_echo/__init__.py | 4 +- .../fetchai/skills/http_echo/dialogues.py | 2 +- packages/fetchai/skills/http_echo/handlers.py | 2 +- packages/fetchai/skills/http_echo/skill.yaml | 14 +- .../fetchai/skills/ml_data_provider/README.md | 10 +- .../skills/ml_data_provider/__init__.py | 4 +- .../skills/ml_data_provider/behaviours.py | 2 +- .../skills/ml_data_provider/dialogues.py | 2 +- .../skills/ml_data_provider/handlers.py | 2 +- .../skills/ml_data_provider/skill.yaml | 24 +- .../skills/ml_data_provider/strategy.py | 2 +- packages/fetchai/skills/ml_train/README.md | 15 +- packages/fetchai/skills/ml_train/__init__.py | 4 +- .../fetchai/skills/ml_train/behaviours.py | 2 +- packages/fetchai/skills/ml_train/dialogues.py | 2 +- packages/fetchai/skills/ml_train/handlers.py | 2 +- packages/fetchai/skills/ml_train/skill.yaml | 30 +- packages/fetchai/skills/ml_train/strategy.py | 2 +- packages/fetchai/skills/ml_train/tasks.py | 2 +- .../fetchai/skills/registration_aw1/README.md | 8 +- .../skills/registration_aw1/__init__.py | 4 +- .../skills/registration_aw1/behaviours.py | 2 +- .../skills/registration_aw1/dialogues.py | 2 +- .../skills/registration_aw1/handlers.py | 2 +- .../skills/registration_aw1/skill.yaml | 20 +- .../skills/registration_aw1/strategy.py | 2 +- .../skills/simple_aggregation/README.md | 8 +- .../skills/simple_aggregation/__init__.py | 4 +- .../skills/simple_aggregation/behaviours.py | 2 +- .../skills/simple_aggregation/dialogues.py | 2 +- .../skills/simple_aggregation/handlers.py | 2 +- .../skills/simple_aggregation/skill.yaml | 20 +- .../skills/simple_aggregation/strategy.py | 2 +- .../fetchai/skills/simple_buyer/README.md | 16 +- .../fetchai/skills/simple_buyer/__init__.py | 4 +- .../fetchai/skills/simple_buyer/behaviours.py | 2 +- .../fetchai/skills/simple_buyer/dialogues.py | 2 +- .../fetchai/skills/simple_buyer/handlers.py | 2 +- .../fetchai/skills/simple_buyer/skill.yaml | 28 +- .../fetchai/skills/simple_buyer/strategy.py | 2 +- .../skills/simple_data_request/README.md | 4 +- .../skills/simple_data_request/__init__.py | 4 +- .../skills/simple_data_request/behaviours.py | 2 +- .../skills/simple_data_request/dialogues.py | 2 +- .../skills/simple_data_request/handlers.py | 2 +- .../skills/simple_data_request/skill.yaml | 16 +- .../fetchai/skills/simple_oracle/README.md | 10 +- .../fetchai/skills/simple_oracle/__init__.py | 4 +- .../skills/simple_oracle/behaviours.py | 2 +- .../fetchai/skills/simple_oracle/dialogues.py | 2 +- .../fetchai/skills/simple_oracle/handlers.py | 2 +- .../fetchai/skills/simple_oracle/skill.yaml | 26 +- .../fetchai/skills/simple_oracle/strategy.py | 2 +- .../skills/simple_oracle_client/README.md | 8 +- .../skills/simple_oracle_client/__init__.py | 4 +- .../skills/simple_oracle_client/behaviours.py | 2 +- .../skills/simple_oracle_client/dialogues.py | 2 +- .../skills/simple_oracle_client/handlers.py | 2 +- .../skills/simple_oracle_client/skill.yaml | 26 +- .../skills/simple_oracle_client/strategy.py | 2 +- .../fetchai/skills/simple_seller/README.md | 10 +- .../fetchai/skills/simple_seller/__init__.py | 4 +- .../skills/simple_seller/behaviours.py | 2 +- .../fetchai/skills/simple_seller/dialogues.py | 2 +- .../fetchai/skills/simple_seller/handlers.py | 2 +- .../fetchai/skills/simple_seller/skill.yaml | 26 +- .../fetchai/skills/simple_seller/strategy.py | 2 +- .../simple_service_registration/README.md | 6 +- .../simple_service_registration/__init__.py | 4 +- .../simple_service_registration/behaviours.py | 2 +- .../simple_service_registration/dialogues.py | 2 +- .../simple_service_registration/handlers.py | 2 +- .../simple_service_registration/skill.yaml | 16 +- .../simple_service_registration/strategy.py | 2 +- .../skills/simple_service_search/README.md | 6 +- .../skills/simple_service_search/__init__.py | 4 +- .../simple_service_search/behaviours.py | 2 +- .../skills/simple_service_search/dialogues.py | 2 +- .../skills/simple_service_search/handlers.py | 2 +- .../skills/simple_service_search/skill.yaml | 16 +- .../skills/simple_service_search/strategy.py | 2 +- packages/fetchai/skills/tac_control/README.md | 8 +- .../fetchai/skills/tac_control/__init__.py | 4 +- .../fetchai/skills/tac_control/behaviours.py | 2 +- .../fetchai/skills/tac_control/dialogues.py | 2 +- packages/fetchai/skills/tac_control/game.py | 2 +- .../fetchai/skills/tac_control/handlers.py | 2 +- .../fetchai/skills/tac_control/helpers.py | 6 +- .../fetchai/skills/tac_control/parameters.py | 2 +- .../fetchai/skills/tac_control/skill.yaml | 26 +- .../skills/tac_control_contract/README.md | 14 +- .../skills/tac_control_contract/__init__.py | 4 +- .../skills/tac_control_contract/behaviours.py | 2 +- .../skills/tac_control_contract/dialogues.py | 2 +- .../skills/tac_control_contract/game.py | 2 +- .../skills/tac_control_contract/handlers.py | 2 +- .../skills/tac_control_contract/helpers.py | 6 +- .../skills/tac_control_contract/parameters.py | 2 +- .../skills/tac_control_contract/skill.yaml | 36 +- .../fetchai/skills/tac_negotiation/README.md | 16 +- .../skills/tac_negotiation/__init__.py | 4 +- .../skills/tac_negotiation/behaviours.py | 2 +- .../skills/tac_negotiation/dialogues.py | 2 +- .../skills/tac_negotiation/handlers.py | 2 +- .../fetchai/skills/tac_negotiation/helpers.py | 2 +- .../fetchai/skills/tac_negotiation/skill.yaml | 38 +- .../skills/tac_negotiation/strategy.py | 2 +- .../skills/tac_negotiation/transactions.py | 2 +- .../skills/tac_participation/README.md | 10 +- .../skills/tac_participation/__init__.py | 4 +- .../skills/tac_participation/behaviours.py | 2 +- .../skills/tac_participation/dialogues.py | 2 +- .../fetchai/skills/tac_participation/game.py | 2 +- .../skills/tac_participation/handlers.py | 2 +- .../skills/tac_participation/skill.yaml | 22 +- .../fetchai/skills/task_test_skill/README.md | 2 - .../skills/task_test_skill/__init__.py | 4 +- .../skills/task_test_skill/behaviours.py | 2 +- .../fetchai/skills/task_test_skill/skill.yaml | 10 +- .../fetchai/skills/task_test_skill/tasks.py | 2 +- packages/fetchai/skills/thermometer/README.md | 10 +- .../fetchai/skills/thermometer/__init__.py | 4 +- .../fetchai/skills/thermometer/behaviours.py | 2 +- .../fetchai/skills/thermometer/dialogues.py | 2 +- .../fetchai/skills/thermometer/handlers.py | 2 +- .../fetchai/skills/thermometer/skill.yaml | 24 +- .../fetchai/skills/thermometer/strategy.py | 2 +- .../skills/thermometer_client/README.md | 15 +- .../skills/thermometer_client/__init__.py | 4 +- .../skills/thermometer_client/behaviours.py | 2 +- .../skills/thermometer_client/dialogues.py | 2 +- .../skills/thermometer_client/handlers.py | 2 +- .../skills/thermometer_client/skill.yaml | 26 +- .../skills/thermometer_client/strategy.py | 2 +- .../fetchai/skills/weather_client/README.md | 15 +- .../fetchai/skills/weather_client/__init__.py | 4 +- .../skills/weather_client/behaviours.py | 2 +- .../skills/weather_client/dialogues.py | 2 +- .../fetchai/skills/weather_client/handlers.py | 2 +- .../fetchai/skills/weather_client/skill.yaml | 26 +- .../fetchai/skills/weather_client/strategy.py | 2 +- .../fetchai/skills/weather_station/README.md | 10 +- .../skills/weather_station/__init__.py | 4 +- .../skills/weather_station/behaviours.py | 2 +- .../weather_station/db_communication.py | 2 +- .../skills/weather_station/dialogues.py | 2 +- .../dummy_weather_station_data.py | 2 +- .../skills/weather_station/handlers.py | 2 +- .../fetchai/skills/weather_station/skill.yaml | 28 +- .../skills/weather_station/strategy.py | 2 +- packages/hashes.csv | 238 +-- plugins/aea-cli-ipfs/README.md | 1 + plugins/aea-cli-ipfs/aea_cli_ipfs/__init__.py | 2 +- plugins/aea-cli-ipfs/aea_cli_ipfs/core.py | 2 +- .../aea-cli-ipfs/aea_cli_ipfs/ipfs_utils.py | 2 +- plugins/aea-cli-ipfs/setup.py | 4 +- plugins/aea-cli-ipfs/tests/__init__.py | 2 +- .../aea-cli-ipfs/tests/test_aea_cli_ipfs.py | 2 +- .../aea_ledger_cosmos/__init__.py | 2 +- .../aea_ledger_cosmos/cosmos.py | 2 +- plugins/aea-ledger-cosmos/setup.py | 4 +- plugins/aea-ledger-cosmos/tests/__init__.py | 2 +- plugins/aea-ledger-cosmos/tests/conftest.py | 2 +- .../tests/data/dummy_contract/__init__.py | 2 +- .../tests/data/dummy_contract/contract.py | 2 +- .../aea-ledger-cosmos/tests/test_cosmos.py | 2 +- .../aea_ledger_ethereum/__init__.py | 2 +- .../aea_ledger_ethereum/ethereum.py | 2 +- plugins/aea-ledger-ethereum/setup.py | 6 +- plugins/aea-ledger-ethereum/tests/__init__.py | 2 +- plugins/aea-ledger-ethereum/tests/conftest.py | 2 +- .../tests/data/dummy_contract/__init__.py | 2 +- .../tests/data/dummy_contract/contract.py | 2 +- .../aea-ledger-ethereum/tests/docker_image.py | 2 +- .../tests/test_ethereum.py | 2 +- .../tests/test_ethereum_contract.py | 2 +- .../aea_ledger_fetchai/__init__.py | 2 +- .../aea_ledger_fetchai/_cosmos.py | 2 +- .../aea_ledger_fetchai/fetchai.py | 2 +- plugins/aea-ledger-fetchai/setup.py | 4 +- plugins/aea-ledger-fetchai/tests/__init__.py | 2 +- plugins/aea-ledger-fetchai/tests/conftest.py | 2 +- .../tests/data/dummy_contract/__init__.py | 2 +- .../tests/data/dummy_contract/contract.py | 2 +- .../aea-ledger-fetchai/tests/test_fetchai.py | 2 +- poetry.lock | 1832 +++++++++-------- pyproject.toml | 8 +- scripts/NOTES.md | 2 +- scripts/RELEASE_PROCESS.md | 36 +- scripts/__init__.py | 2 +- scripts/acn/README.md | 33 +- scripts/acn/k8s_deploy_acn_node.py | 2 +- scripts/acn/run_acn_node_standalone.py | 2 +- scripts/bump_aea_version.py | 6 +- scripts/check_copyright_notice.py | 2 +- scripts/check_doc_links.py | 2 +- scripts/check_imports_and_dependencies.py | 2 +- scripts/check_package_versions_in_docs.py | 2 +- scripts/check_packages.py | 2 +- scripts/check_pipfile_and_toxini.py | 2 +- scripts/common.py | 2 +- scripts/deploy_to_registry.py | 2 +- scripts/freeze_dependencies.py | 2 +- scripts/generate_all_protocols.py | 2 +- scripts/generate_api_docs.py | 2 +- scripts/generate_ipfs_hashes.py | 2 +- scripts/ledger_network_update.py | 2 +- scripts/oef/launch.py | 2 +- scripts/parse_main_dependencies_from_lock.py | 2 +- scripts/update_package_versions.py | 2 +- scripts/update_plugin_versions.py | 2 +- scripts/update_symlinks_cross_platform.py | 2 +- scripts/whitelist.py | 2 +- tests/__init__.py | 2 +- tests/common/__init__.py | 2 +- tests/common/docker_image.py | 2 +- tests/common/mocks.py | 2 +- .../common/oef_search_pluto_scripts/launch.py | 2 +- tests/common/pexpect_popen.py | 2 +- tests/common/utils.py | 2 +- tests/conftest.py | 4 +- tests/data/__init__.py | 2 +- tests/data/aea-config.example.yaml | 14 +- tests/data/aea-config.example_w_keys.yaml | 14 +- tests/data/custom_crypto.py | 2 +- tests/data/dependencies_skill/__init__.py | 2 +- tests/data/dependencies_skill/skill.yaml | 4 +- tests/data/dummy_aea/aea-config.yaml | 22 +- tests/data/dummy_aea/connections/__init__.py | 2 +- tests/data/dummy_aea/contracts/__init__.py | 2 +- tests/data/dummy_aea/protocols/__init__.py | 2 +- tests/data/dummy_aea/skills/__init__.py | 2 +- tests/data/dummy_aea/vendor/__init__.py | 2 +- .../data/dummy_aea/vendor/fetchai/__init__.py | 2 +- .../vendor/fetchai/connections/__init__.py | 2 +- .../vendor/fetchai/contracts/__init__.py | 2 +- .../vendor/fetchai/protocols/__init__.py | 2 +- .../vendor/fetchai/skills/__init__.py | 2 +- tests/data/dummy_connection/__init__.py | 2 +- tests/data/dummy_connection/connection.py | 2 +- tests/data/dummy_connection/connection.yaml | 6 +- tests/data/dummy_contract/__init__.py | 2 +- tests/data/dummy_contract/contract.py | 2 +- tests/data/dummy_contract/contract.yaml | 4 +- tests/data/dummy_skill/__init__.py | 2 +- tests/data/dummy_skill/behaviours.py | 2 +- tests/data/dummy_skill/dummy.py | 2 +- .../dummy_skill/dummy_subpackage/__init__.py | 2 +- .../data/dummy_skill/dummy_subpackage/foo.py | 2 +- tests/data/dummy_skill/handlers.py | 2 +- tests/data/dummy_skill/skill.yaml | 20 +- tests/data/dummy_skill/tasks.py | 2 +- tests/data/exception_skill/__init__.py | 2 +- tests/data/exception_skill/behaviours.py | 2 +- tests/data/exception_skill/handlers.py | 2 +- tests/data/exception_skill/skill.yaml | 8 +- tests/data/exception_skill/tasks.py | 2 +- tests/data/generator/__init__.py | 2 +- tests/data/generator/t_protocol/__init__.py | 4 +- .../data/generator/t_protocol/custom_types.py | 2 +- tests/data/generator/t_protocol/dialogues.py | 2 +- tests/data/generator/t_protocol/message.py | 2 +- tests/data/generator/t_protocol/protocol.yaml | 10 +- .../generator/t_protocol/serialization.py | 2 +- .../generator/t_protocol_no_ct/__init__.py | 4 +- .../generator/t_protocol_no_ct/dialogues.py | 2 +- .../generator/t_protocol_no_ct/message.py | 2 +- .../generator/t_protocol_no_ct/protocol.yaml | 8 +- .../t_protocol_no_ct/serialization.py | 2 +- tests/data/gym-connection.yaml | 4 +- tests/data/hashes.csv | 16 +- .../t_protocol/__init__.py | 30 - .../t_protocol/custom_types.py | 121 -- .../t_protocol/dialogues.py | 151 -- .../reference_protocols/t_protocol/message.py | 1274 ------------ .../t_protocol/protocol.yaml | 19 - .../t_protocol/serialization.py | 639 ------ .../t_protocol/t_protocol.proto | 179 -- .../t_protocol/t_protocol_pb2.py | 873 -------- .../t_protocol_no_ct/__init__.py | 30 - .../t_protocol_no_ct/dialogues.py | 146 -- .../t_protocol_no_ct/message.py | 1203 ----------- .../t_protocol_no_ct/protocol.yaml | 18 - .../t_protocol_no_ct/serialization.py | 602 ------ .../t_protocol_no_ct/t_protocol_no_ct.proto | 107 - .../t_protocol_no_ct/t_protocol_no_ct_pb2.py | 706 ------- tests/test_aea/__init__.py | 2 +- tests/test_aea/test_act_storage.py | 2 +- tests/test_aea/test_aea.py | 2 +- tests/test_aea/test_aea_builder.py | 6 +- tests/test_aea/test_agent.py | 2 +- tests/test_aea/test_agent_loop.py | 2 +- tests/test_aea/test_cli/__init__.py | 2 +- tests/test_aea/test_cli/constants.py | 2 +- tests/test_aea/test_cli/test_add/__init__.py | 2 +- .../test_cli/test_add/test_connection.py | 2 +- .../test_cli/test_add/test_contract.py | 2 +- .../test_cli/test_add/test_generic.py | 2 +- .../test_cli/test_add/test_protocol.py | 2 +- .../test_aea/test_cli/test_add/test_skill.py | 2 +- tests/test_aea/test_cli/test_add_key.py | 2 +- tests/test_aea/test_cli/test_build.py | 2 +- tests/test_aea/test_cli/test_config.py | 2 +- tests/test_aea/test_cli/test_create.py | 2 +- tests/test_aea/test_cli/test_delete.py | 2 +- tests/test_aea/test_cli/test_eject.py | 2 +- tests/test_aea/test_cli/test_fetch.py | 2 +- tests/test_aea/test_cli/test_fingerprint.py | 2 +- tests/test_aea/test_cli/test_freeze.py | 2 +- .../test_cli/test_generate/__init__.py | 2 +- .../test_cli/test_generate/test_generate.py | 2 +- .../test_cli/test_generate/test_protocols.py | 2 +- tests/test_aea/test_cli/test_generate_key.py | 2 +- .../test_aea/test_cli/test_generate_wealth.py | 2 +- tests/test_aea/test_cli/test_get_address.py | 2 +- .../test_cli/test_get_multiaddress.py | 8 +- .../test_aea/test_cli/test_get_public_key.py | 2 +- tests/test_aea/test_cli/test_get_wealth.py | 2 +- tests/test_aea/test_cli/test_init.py | 2 +- tests/test_aea/test_cli/test_install.py | 2 +- tests/test_aea/test_cli/test_interact.py | 2 +- .../test_cli/test_issue_certificates.py | 2 +- tests/test_aea/test_cli/test_launch.py | 2 +- .../test_cli/test_launch_end_to_end.py | 2 +- tests/test_aea/test_cli/test_list.py | 2 +- .../test_cli/test_local_registry_update.py | 2 +- tests/test_aea/test_cli/test_loggers.py | 2 +- tests/test_aea/test_cli/test_login.py | 2 +- tests/test_aea/test_cli/test_logout.py | 2 +- tests/test_aea/test_cli/test_misc.py | 2 +- tests/test_aea/test_cli/test_plugin.py | 2 +- tests/test_aea/test_cli/test_publish.py | 2 +- tests/test_aea/test_cli/test_push.py | 2 +- tests/test_aea/test_cli/test_register.py | 2 +- .../test_cli/test_registry/__init__.py | 2 +- .../test_cli/test_registry/test_add.py | 2 +- .../test_cli/test_registry/test_fetch.py | 2 +- .../test_cli/test_registry/test_login.py | 2 +- .../test_cli/test_registry/test_logout.py | 2 +- .../test_cli/test_registry/test_publish.py | 2 +- .../test_cli/test_registry/test_push.py | 2 +- .../test_registry/test_registration.py | 2 +- .../test_cli/test_registry/test_utils.py | 2 +- .../test_aea/test_cli/test_remove/__init__.py | 2 +- .../test_cli/test_remove/test_base.py | 2 +- .../test_cli/test_remove/test_connection.py | 2 +- .../test_cli/test_remove/test_contract.py | 2 +- .../test_cli/test_remove/test_dependencies.py | 2 +- .../test_cli/test_remove/test_protocol.py | 2 +- .../test_cli/test_remove/test_skill.py | 2 +- tests/test_aea/test_cli/test_remove_key.py | 2 +- .../test_aea/test_cli/test_reset_password.py | 2 +- tests/test_aea/test_cli/test_run.py | 2 +- .../test_cli/test_scaffold/__init__.py | 2 +- .../test_cli/test_scaffold/test_connection.py | 2 +- .../test_decision_maker_handler.py | 2 +- .../test_scaffold/test_error_handler.py | 2 +- .../test_cli/test_scaffold/test_generic.py | 2 +- .../test_cli/test_scaffold/test_protocols.py | 2 +- .../test_cli/test_scaffold/test_skills.py | 2 +- tests/test_aea/test_cli/test_search.py | 2 +- tests/test_aea/test_cli/test_transfer.py | 2 +- tests/test_aea/test_cli/test_upgrade.py | 24 +- .../test_aea/test_cli/test_utils/__init__.py | 2 +- .../test_cli/test_utils/test_config.py | 2 +- .../test_cli/test_utils/test_utils.py | 12 +- tests/test_aea/test_cli/tools_for_testing.py | 2 +- tests/test_aea/test_components/__init__.py | 2 +- tests/test_aea/test_components/test_base.py | 2 +- tests/test_aea/test_components/test_loader.py | 4 +- tests/test_aea/test_components/test_utils.py | 2 +- .../test_aea/test_configurations/__init__.py | 2 +- .../test_configurations/test_aea_config.py | 2 +- .../test_aea/test_configurations/test_base.py | 2 +- .../test_configurations/test_loader.py | 2 +- .../test_configurations/test_manager.py | 10 +- .../test_aea/test_configurations/test_pypi.py | 2 +- .../test_configurations/test_schema.py | 2 +- .../test_configurations/test_utils.py | 2 +- .../test_configurations/test_validation.py | 2 +- tests/test_aea/test_connections/__init__.py | 2 +- tests/test_aea/test_connections/test_base.py | 2 +- .../test_connections/test_scaffold.py | 2 +- .../test_connections/test_sync_connection.py | 2 +- tests/test_aea/test_context/__init__.py | 2 +- tests/test_aea/test_context/test_base.py | 2 +- tests/test_aea/test_contracts/__init__.py | 2 +- tests/test_aea/test_contracts/test_base.py | 2 +- tests/test_aea/test_crypto/__init__.py | 2 +- tests/test_aea/test_crypto/test_helpers.py | 2 +- .../test_aea/test_crypto/test_ledger_apis.py | 2 +- .../test_crypto/test_password_end2end.py | 2 +- tests/test_aea/test_crypto/test_registries.py | 2 +- .../test_crypto/test_registry/__init__.py | 2 +- .../test_registry/test_crypto_registry.py | 2 +- .../test_registry/test_ledger_api_registry.py | 2 +- .../test_crypto/test_registry/test_misc.py | 2 +- tests/test_aea/test_crypto/test_wallet.py | 2 +- .../test_aea/test_decision_maker/__init__.py | 2 +- .../test_decision_maker/test_default.py | 2 +- .../test_aea/test_decision_maker/test_gop.py | 2 +- .../test_ownership_state.py | 2 +- .../test_decision_maker/test_preferences.py | 2 +- .../test_decision_maker/test_scaffold.py | 2 +- tests/test_aea/test_error_handler/__init__.py | 2 +- .../test_aea/test_error_handler/test_base.py | 2 +- .../test_error_handler/test_scaffold.py | 2 +- tests/test_aea/test_exceptions.py | 2 +- tests/test_aea/test_helpers/__init__.py | 2 +- .../test_helpers/test_acn/__init__.py | 2 +- .../test_acn/test_agent_record.py | 2 +- .../test_helpers/test_acn/test_uri.py | 2 +- .../test_helpers/test_async_friendly_queue.py | 2 +- .../test_aea/test_helpers/test_async_utils.py | 2 +- tests/test_aea/test_helpers/test_base.py | 2 +- tests/test_aea/test_helpers/test_env_vars.py | 2 +- .../test_helpers/test_exec_timeout.py | 2 +- tests/test_aea/test_helpers/test_file_io.py | 2 +- .../test_helpers/test_install_dependency.py | 2 +- tests/test_aea/test_helpers/test_io.py | 2 +- .../test_helpers/test_ipfs/__init__.py | 2 +- .../test_helpers/test_ipfs/test_base.py | 4 +- tests/test_aea/test_helpers/test_logging.py | 2 +- tests/test_aea/test_helpers/test_multiaddr.py | 2 +- .../test_helpers/test_multiple_executor.py | 2 +- .../test_helpers/test_pipe/__init__.py | 2 +- .../test_helpers/test_pipe/test_pipe.py | 2 +- .../__init__.py | 2 +- .../test_base.py | 2 +- tests/test_aea/test_helpers/test_profiling.py | 2 +- .../test_helpers/test_search/__init__.py | 2 +- .../test_aea/test_helpers/test_search/base.py | 2 +- .../test_helpers/test_search/test_generic.py | 2 +- .../test_helpers/test_search/test_models.py | 2 +- .../test_aea/test_helpers/test_serializers.py | 2 +- tests/test_aea/test_helpers/test_storage.py | 2 +- tests/test_aea/test_helpers/test_sym_link.py | 2 +- .../test_helpers/test_transaction/__init__.py | 2 +- .../test_transaction/test_base.py | 2 +- .../test_aea/test_helpers/test_yaml_utils.py | 2 +- tests/test_aea/test_identity/__init__.py | 2 +- tests/test_aea/test_identity/test_base.py | 2 +- tests/test_aea/test_launcher.py | 2 +- tests/test_aea/test_mail/__init__.py | 2 +- tests/test_aea/test_mail/test_base.py | 2 +- tests/test_aea/test_multiplexer.py | 2 +- tests/test_aea/test_package_loading.py | 2 +- tests/test_aea/test_protocols/__init__.py | 2 +- tests/test_aea/test_protocols/test_base.py | 2 +- .../test_protocols/test_dialogue/__init__.py | 2 +- .../test_protocols/test_dialogue/test_base.py | 2 +- .../test_dialogue/test_msg_resolve.py | 2 +- .../test_protocols/test_generator/__init__.py | 2 +- .../test_protocols/test_generator/common.py | 11 +- .../test_generator/test_common.py | 2 +- .../test_generator/test_end_to_end.py | 2 +- .../test_extract_specification.py | 2 +- .../test_generator/test_generator.py | 40 +- .../test_generator/test_validate.py | 2 +- .../test_aea/test_protocols/test_scaffold.py | 2 +- tests/test_aea/test_registries/__init__.py | 2 +- tests/test_aea/test_registries/test_base.py | 2 +- tests/test_aea/test_registries/test_filter.py | 2 +- tests/test_aea/test_runner.py | 2 +- tests/test_aea/test_runtime.py | 2 +- tests/test_aea/test_skills/__init__.py | 2 +- tests/test_aea/test_skills/test_base.py | 2 +- tests/test_aea/test_skills/test_behaviours.py | 2 +- tests/test_aea/test_skills/test_error.py | 2 +- tests/test_aea/test_skills/test_scaffold.py | 2 +- .../test_skills/test_task_subprocess.py | 4 +- tests/test_aea/test_skills/test_tasks.py | 2 +- tests/test_aea/test_task.py | 2 +- tests/test_aea/test_test_tools/__init__.py | 2 +- .../test_test_tools/test_click_testing.py | 2 +- .../test_test_tools/test_test_cases.py | 2 +- .../test_test_tools/test_test_contract.py | 2 +- .../test_test_tools/test_test_skill.py | 2 +- .../test_http_client/__init__.py | 2 +- .../test_http_client/test_http_client.py | 2 +- .../test_http_server/__init__.py | 2 +- .../test_http_server/test_http_server.py | 2 +- .../test_http_server_and_client.py | 2 +- .../test_connections/test_ledger/__init__.py | 2 +- .../test_ledger/test_contract_api.py | 2 +- .../test_ledger/test_ledger_api.py | 2 +- .../test_contracts/__init__.py | 2 +- .../test_contracts/test_erc1155/__init__.py | 2 +- .../test_erc1155/test_contract.py | 2 +- .../test_skills_integration/test_echo.py | 6 +- .../test_skills_integration/test_generic.py | 54 +- .../test_hello_world.py | 4 +- .../test_skills_integration/test_http_echo.py | 10 +- tests/test_aea_extra/__init__.py | 2 +- tests/test_aea_extra/test_manager/__init__.py | 2 +- .../test_manager/test_manager.py | 4 +- .../test_aea_extra/test_manager/test_utils.py | 2 +- tests/test_docs/__init__.py | 2 +- tests/test_docs/helper.py | 91 +- tests/test_docs/test_agent_vs_aea/__init__.py | 2 +- .../test_agent_vs_aea/agent_code_block.py | 2 +- .../test_agent_vs_aea/test_agent_vs_aea.py | 2 +- tests/test_docs/test_bash_yaml/__init__.py | 2 +- .../test_bash_yaml/md_files/__init__.py | 2 +- .../md_files/bash-aggregation-demo.md | 43 +- .../md_files/bash-aries-cloud-agent-demo.md | 51 +- .../md_files/bash-car-park-skills.md | 52 +- .../md_files/bash-cli-how-to.md | 6 +- .../md_files/bash-cli-vs-programmatic-aeas.md | 10 +- .../test_bash_yaml/md_files/bash-config.md | 16 +- .../md_files/bash-connection.md | 3 +- .../test_bash_yaml/md_files/bash-contract.md | 1 + .../md_files/bash-decision-maker.md | 1 + .../md_files/bash-erc1155-skills.md | 74 +- .../bash-generic-skills-step-by-step.md | 85 +- .../md_files/bash-generic-skills.md | 55 +- .../md_files/bash-gym-example.md | 2 + .../test_bash_yaml/md_files/bash-gym-skill.md | 17 +- .../bash-http-connection-and-skill.md | 18 +- .../bash-language-agnostic-definition.md | 4 +- .../test_bash_yaml/md_files/bash-logging.md | 11 +- .../test_bash_yaml/md_files/bash-ml-skills.md | 54 +- .../md_files/bash-oef-ledger.md | 1 + .../md_files/bash-oracle-demo.md | 67 +- .../md_files/bash-orm-integration.md | 60 +- .../md_files/bash-p2p-connection.md | 94 +- .../md_files/bash-package-imports.md | 3 +- .../md_files/bash-performance-benchmark.md | 2 + .../test_bash_yaml/md_files/bash-por.md | 2 +- .../md_files/bash-protocol-generator.md | 4 + .../md_files/bash-quickstart.md | 42 +- .../md_files/bash-raspberry-set-up.md | 8 + .../md_files/bash-scaffolding.md | 5 + .../md_files/bash-skill-guide.md | 33 +- .../test_bash_yaml/md_files/bash-skill.md | 7 +- .../md_files/bash-tac-skills-contract.md | 160 +- .../md_files/bash-tac-skills.md | 76 +- .../test_bash_yaml/md_files/bash-tac.md | 9 + .../md_files/bash-thermometer-skills.md | 54 +- .../test_bash_yaml/md_files/bash-version.md | 2 +- .../test_bash_yaml/md_files/bash-wealth.md | 11 +- .../md_files/bash-weather-skills.md | 52 +- .../test_bash_yaml/test_demo_docs.py | 2 +- .../__init__.py | 2 +- .../programmatic_aea.py | 2 +- .../test_programmatic_aea.py | 2 +- tests/test_docs/test_cli_commands.py | 2 +- .../test_cli_vs_programmatic_aeas/__init__.py | 2 +- .../programmatic_aea.py | 2 +- .../test_cli_vs_programmatic_aea.py | 4 +- tests/test_docs/test_data_models.py | 2 +- .../__init__.py | 2 +- .../decision_maker_transaction.py | 2 +- .../test_decision_maker_transaction.py | 2 +- .../test_docs_http_connection_and_skill.py | 2 +- tests/test_docs/test_docs_protocol.py | 6 +- tests/test_docs/test_docs_skill.py | 2 +- .../__init__.py | 2 +- .../test_generic_step_by_step_guide.py | 2 +- tests/test_docs/test_generic_storage.py | 2 +- .../test_language_agnostic_definition.py | 4 +- tests/test_docs/test_ledger_integration.py | 2 +- tests/test_docs/test_multiagent_manager.py | 2 +- .../test_multiplexer_standalone/__init__.py | 2 +- .../multiplexer_standalone.py | 2 +- .../test_multiplexer_standalone.py | 2 +- .../test_orm_integration/__init__.py | 2 +- .../orm_seller_strategy.py | 2 +- .../test_orm_integration.py | 28 +- tests/test_docs/test_query_language.py | 2 +- tests/test_docs/test_quickstart.py | 4 +- tests/test_docs/test_simple_oef_usage.py | 2 +- tests/test_docs/test_skill_guide/__init__.py | 2 +- .../test_skill_guide/test_skill_guide.py | 12 +- tests/test_docs/test_skill_testing.py | 2 +- .../test_standalone_transaction/__init__.py | 2 +- .../standalone_transaction.py | 2 +- .../test_standalone_transaction.py | 2 +- tests/test_examples/__init__.py | 2 +- tests/test_examples/test_gym_ex.py | 2 +- ..._client_connection_to_aries_cloud_agent.py | 2 +- tests/test_packages/__init__.py | 2 +- .../test_connections/__init__.py | 2 +- .../test_p2p_libp2p/__init__.py | 2 +- .../test_p2p_libp2p/test_aea_cli.py | 2 +- .../test_p2p_libp2p/test_build.py | 2 +- .../test_p2p_libp2p/test_communication.py | 2 +- .../test_p2p_libp2p/test_errors.py | 2 +- .../test_p2p_libp2p/test_fault_tolerance.py | 2 +- .../test_p2p_libp2p/test_integration.py | 2 +- .../test_p2p_libp2p/test_public_dht.py | 2 +- .../test_p2p_libp2p/test_slow_queue.py | 2 +- .../test_prometheus/__init__.py | 2 +- .../test_prometheus/test_prometheus.py | 4 +- .../test_connections/test_webhook/__init__.py | 2 +- .../test_webhook/test_webhook.py | 2 +- .../test_packages/test_contracts/__init__.py | 2 +- .../test_packages/test_protocols/__init__.py | 2 +- .../test_protocols/test_aggregation.py | 2 +- .../test_protocols/test_ml_trade.py | 2 +- .../test_protocols/test_prometheus.py | 2 +- tests/test_packages/test_skills/__init__.py | 2 +- .../test_advanced_data_request/__init__.py | 2 +- .../test_behaviours.py | 2 +- .../test_handlers.py | 2 +- .../test_skills/test_aries_alice/__init__.py | 2 +- .../test_aries_alice/intermediate_class.py | 2 +- .../test_aries_alice/test_behaviours.py | 2 +- .../test_aries_alice/test_dialogues.py | 2 +- .../test_aries_alice/test_handlers.py | 2 +- .../test_aries_alice/test_strategy.py | 2 +- .../test_skills/test_aries_faber/__init__.py | 2 +- .../test_aries_faber/intermediate_class.py | 2 +- .../test_aries_faber/test_behaviours.py | 2 +- .../test_aries_faber/test_dialogues.py | 2 +- .../test_aries_faber/test_handlers.py | 2 +- .../test_aries_faber/test_strategy.py | 2 +- .../test_carpark_detection/__init__.py | 2 +- .../test_carpark_detection/test_database.py | 2 +- .../test_carpark_detection/test_strategy.py | 2 +- .../test_confirmation_aw1/__init__.py | 2 +- .../test_confirmation_aw1/test_behaviours.py | 2 +- .../test_confirmation_aw1/test_dialogues.py | 2 +- .../test_confirmation_aw1/test_handlers.py | 2 +- .../test_registration_db.py | 2 +- .../test_confirmation_aw1/test_strategy.py | 2 +- .../test_confirmation_aw2/__init__.py | 2 +- .../intermediate_class.py | 2 +- .../test_confirmation_aw2/test_handlers.py | 2 +- .../test_registration_db.py | 2 +- .../test_confirmation_aw2/test_strategy.py | 2 +- .../test_confirmation_aw3/__init__.py | 2 +- .../intermediate_class.py | 2 +- .../test_confirmation_aw3/test_behaviours.py | 2 +- .../test_confirmation_aw3/test_dialogues.py | 2 +- .../test_confirmation_aw3/test_handlers.py | 2 +- .../test_registration_db.py | 2 +- .../test_confirmation_aw3/test_strategy.py | 2 +- .../test_erc1155_deploy/__init__.py | 2 +- .../test_erc1155_deploy/intermediate_class.py | 2 +- .../test_erc1155_deploy/test_behaviours.py | 2 +- .../test_erc1155_deploy/test_dialogues.py | 2 +- .../test_erc1155_deploy/test_handlers.py | 2 +- .../test_erc1155_deploy/test_strategy.py | 2 +- .../test_skills/test_fetch_block/__init__.py | 2 +- .../test_fetch_block/test_behaviours.py | 2 +- .../test_fetch_block/test_handlers.py | 2 +- .../test_skills/test_hello_world/__init__.py | 2 +- .../test_hello_world/test_behaviours.py | 2 +- .../test_skills/test_http_echo/__init__.py | 2 +- .../test_http_echo/test_dialogues.py | 2 +- .../test_http_echo/test_handlers.py | 2 +- .../test_ml_data_provider/__init__.py | 2 +- .../test_ml_data_provider/test_dialogues.py | 2 +- .../test_ml_data_provider/test_handlers.py | 2 +- .../test_ml_data_provider/test_strategy.py | 2 +- .../test_skills/test_ml_train/__init__.py | 2 +- .../test_skills/test_ml_train/helpers.py | 2 +- .../test_ml_train/test_behaviours.py | 2 +- .../test_ml_train/test_dialogues.py | 2 +- .../test_ml_train/test_handlers.py | 2 +- .../test_ml_train/test_strategy.py | 2 +- .../test_skills/test_ml_train/test_task.py | 2 +- .../test_registration_aw1/__init__.py | 2 +- .../intermediate_class.py | 2 +- .../test_registration_aw1/test_behaviours.py | 2 +- .../test_registration_aw1/test_dialogues.py | 2 +- .../test_registration_aw1/test_handlers.py | 2 +- .../test_registration_aw1/test_strategy.py | 2 +- .../test_simple_aggregation/__init__.py | 2 +- .../test_behaviours.py | 2 +- .../test_simple_aggregation/test_handlers.py | 2 +- .../test_simple_aggregation/test_strategy.py | 2 +- .../test_skills/test_simple_buyer/__init__.py | 2 +- .../test_simple_data_request/__init__.py | 2 +- .../intermediate_class.py | 2 +- .../test_behaviours.py | 2 +- .../test_dialogues.py | 2 +- .../test_simple_data_request/test_handlers.py | 2 +- .../test_simple_oracle/__init__.py | 2 +- .../test_simple_oracle/test_behaviours.py | 2 +- .../test_simple_oracle/test_handlers.py | 2 +- .../test_simple_oracle_client/__init__.py | 2 +- .../test_behaviours.py | 2 +- .../test_handlers.py | 2 +- .../test_simple_seller/__init__.py | 2 +- .../test_simple_seller/test_strategy.py | 2 +- .../__init__.py | 2 +- .../test_behaviours.py | 2 +- .../test_dialogues.py | 2 +- .../test_handlers.py | 2 +- .../test_strategy.py | 2 +- .../test_simple_service_search/__init__.py | 2 +- .../test_behaviours.py | 2 +- .../test_dialogues.py | 2 +- .../test_handlers.py | 2 +- .../test_strategy.py | 2 +- .../test_skills/test_tac_control/__init__.py | 2 +- .../test_tac_control/test_behaviours.py | 2 +- .../test_tac_control/test_dialogues.py | 2 +- .../test_skills/test_tac_control/test_game.py | 2 +- .../test_tac_control/test_handlers.py | 2 +- .../test_tac_control/test_helpers.py | 2 +- .../test_tac_control/test_parameters.py | 2 +- .../test_tac_control_contract/__init__.py | 2 +- .../test_behaviours.py | 2 +- .../test_dialogues.py | 2 +- .../test_handlers.py | 2 +- .../test_tac_control_contract/test_helpers.py | 2 +- .../test_parameters.py | 2 +- .../test_tac_negotiation/__init__.py | 2 +- .../test_tac_negotiation/test_behaviours.py | 2 +- .../test_tac_negotiation/test_dialogues.py | 2 +- .../test_tac_negotiation/test_handlers.py | 2 +- .../test_tac_negotiation/test_helpers.py | 2 +- .../test_tac_negotiation/test_logical.py | 2 +- .../test_tac_negotiation/test_strategy.py | 2 +- .../test_tac_negotiation/test_transactions.py | 2 +- .../test_tac_participation/__init__.py | 2 +- .../test_tac_participation/test_behaviours.py | 2 +- .../test_tac_participation/test_dialogues.py | 2 +- .../test_tac_participation/test_game.py | 2 +- .../test_tac_participation/test_handlers.py | 2 +- .../test_skills/test_thermometer/__init__.py | 2 +- .../test_thermometer/test_strategy.py | 2 +- .../test_skills_integration/__init__.py | 2 +- .../test_aries_demo.py | 2 +- .../test_skills_integration/test_carpark.py | 54 +- .../test_coin_price.py | 20 +- .../test_skills_integration/test_erc1155.py | 32 +- .../test_fetch_block.py | 8 +- .../test_skills_integration/test_generic.py | 54 +- .../test_skills_integration/test_gym.py | 8 +- .../test_skills_integration/test_ml_skills.py | 54 +- .../test_simple_aggregation.py | 22 +- .../test_simple_oracle.py | 86 +- .../test_skills_integration/test_tac.py | 108 +- .../test_thermometer.py | 54 +- .../test_skills_integration/test_weather.py | 56 +- tests/test_packages_for_aea_tests/__init__.py | 2 +- .../test_connections/__init__.py | 2 +- .../test_connections/test_gym/__init__.py | 2 +- .../test_connections/test_gym/test_gym.py | 2 +- .../test_connections/test_local/__init__.py | 2 +- .../test_connections/test_local/test_misc.py | 2 +- .../test_local/test_search_services.py | 2 +- .../test_connections/test_oef/__init__.py | 2 +- .../test_oef/test_communication.py | 2 +- .../test_connections/test_oef/test_models.py | 2 +- .../test_oef/test_oef_serializer.py | 2 +- .../test_p2p_libp2p_client/__init__.py | 2 +- .../test_p2p_libp2p_client/test_aea_cli.py | 2 +- .../test_communication.py | 2 +- .../test_p2p_libp2p_client/test_errors.py | 2 +- .../test_p2p_libp2p_mailbox/__init__.py | 2 +- .../test_p2p_libp2p_mailbox/test_aea_cli.py | 2 +- .../test_communication.py | 2 +- .../test_p2p_libp2p_mailbox/test_errors.py | 2 +- .../test_mailbox_service.py | 2 +- .../test_p2p_stub/__init__.py | 2 +- .../test_p2p_stub/test_p2p_stub.py | 2 +- .../test_connections/test_soef/__init__.py | 2 +- .../test_connections/test_soef/models.py | 2 +- .../test_connections/test_soef/test_soef.py | 2 +- .../test_soef/test_soef_integration.py | 2 +- .../test_connections/test_stub/__init__.py | 2 +- .../test_connections/test_stub/test_stub.py | 2 +- .../test_connections/test_tcp/__init__.py | 2 +- .../test_connections/test_tcp/test_base.py | 2 +- .../test_tcp/test_communication.py | 2 +- .../test_protocols/test_acn.py | 2 +- .../test_protocols/test_contract_api.py | 2 +- .../test_protocols/test_default.py | 2 +- .../test_protocols/test_fipa.py | 2 +- .../test_protocols/test_gym.py | 2 +- .../test_protocols/test_http.py | 2 +- .../test_protocols/test_ledger_api.py | 2 +- .../test_protocols/test_oef_search.py | 2 +- .../test_protocols/test_register.py | 2 +- .../test_protocols/test_signing.py | 2 +- .../test_protocols/test_state_update.py | 2 +- .../test_protocols/test_tac.py | 2 +- .../test_skills/__init__.py | 2 +- .../test_skills/test_echo/__init__.py | 2 +- .../test_skills/test_echo/test_behaviours.py | 2 +- .../test_skills/test_echo/test_dialogues.py | 2 +- .../test_skills/test_echo/test_handlers.py | 2 +- .../test_erc1155_client/__init__.py | 2 +- .../test_erc1155_client/intermediate_class.py | 2 +- .../test_erc1155_client/test_behaviours.py | 2 +- .../test_erc1155_client/test_dialogues.py | 2 +- .../test_erc1155_client/test_handlers.py | 2 +- .../test_erc1155_client/test_strategy.py | 2 +- .../test_generic_buyer/__init__.py | 2 +- .../test_generic_buyer/test_behaviours.py | 2 +- .../test_generic_buyer/test_dialogues.py | 2 +- .../test_generic_buyer/test_handlers.py | 2 +- .../test_generic_buyer/test_models.py | 2 +- .../test_generic_seller/__init__.py | 2 +- .../test_generic_seller/test_behaviours.py | 2 +- .../test_generic_seller/test_dialogues.py | 2 +- .../test_generic_seller/test_handlers.py | 2 +- .../test_generic_seller/test_models.py | 2 +- .../test_skills/test_gym/__init__.py | 2 +- .../test_skills/test_gym/helpers.py | 2 +- .../test_gym/intermediate_class.py | 2 +- .../test_skills/test_gym/test_dialogues.py | 2 +- .../test_skills/test_gym/test_handlers.py | 2 +- .../test_skills/test_gym/test_helpers.py | 2 +- .../test_skills/test_gym/test_rl_agent.py | 2 +- .../test_skills/test_gym/test_task.py | 2 +- .../test_weather_station/__init__.py | 2 +- .../test_dummy_weather_station_data.py | 2 +- .../test_registration_db.py | 2 +- .../test_weather_station/test_strategy.py | 2 +- tox.ini | 13 +- user-image/README.md | 2 +- user-image/scripts | 1 - user-image/scripts/docker-build-img.sh | 41 + user-image/scripts/docker-publish-img.sh | 13 + 1574 files changed, 11229 insertions(+), 16331 deletions(-) create mode 100644 .github/CODEOWNERS create mode 100644 CITATION.cff create mode 100644 DEVELOPING.md delete mode 120000 develop-image/scripts create mode 100644 develop-image/scripts/docker-build-img.sh create mode 100644 develop-image/scripts/docker-publish-img.sh delete mode 160000 docker-images create mode 100644 docs/assets/images/favicon.ico create mode 100644 docs/assets/images/logo.png delete mode 100644 tests/data/reference_protocols/t_protocol/__init__.py delete mode 100644 tests/data/reference_protocols/t_protocol/custom_types.py delete mode 100644 tests/data/reference_protocols/t_protocol/dialogues.py delete mode 100644 tests/data/reference_protocols/t_protocol/message.py delete mode 100644 tests/data/reference_protocols/t_protocol/protocol.yaml delete mode 100644 tests/data/reference_protocols/t_protocol/serialization.py delete mode 100644 tests/data/reference_protocols/t_protocol/t_protocol.proto delete mode 100644 tests/data/reference_protocols/t_protocol/t_protocol_pb2.py delete mode 100644 tests/data/reference_protocols/t_protocol_no_ct/__init__.py delete mode 100644 tests/data/reference_protocols/t_protocol_no_ct/dialogues.py delete mode 100644 tests/data/reference_protocols/t_protocol_no_ct/message.py delete mode 100644 tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml delete mode 100644 tests/data/reference_protocols/t_protocol_no_ct/serialization.py delete mode 100644 tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct.proto delete mode 100644 tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py delete mode 120000 user-image/scripts create mode 100644 user-image/scripts/docker-build-img.sh create mode 100644 user-image/scripts/docker-publish-img.sh diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000000..a0112d07f2 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @5A11 @jrriehl diff --git a/.github/PULL_REQUEST_TEMPLATE/release.md b/.github/PULL_REQUEST_TEMPLATE/release.md index 1b4b7ba0cc..49ff36f139 100644 --- a/.github/PULL_REQUEST_TEMPLATE/release.md +++ b/.github/PULL_REQUEST_TEMPLATE/release.md @@ -18,7 +18,7 @@ _Put an `x` in the boxes that apply._ - [ ] I have added an item in `HISTORY.md` for this release. - [ ] I bumped the version number in the `aea/__version__.py` file. - [ ] I bumped the version number in every Docker image of the repo and published it. Also, I built and published them with tag `latest` - (check the READMEs of [`aea-develop`](https://github.com/fetchai/agents-aea/blob/master/develop-image/README.md#publish) + (check the READMEs of [`aea-develop`](https://github.com/fetchai/agents-aea/blob/master/develop-image/README.md#publish) and [`aea-user`](https://github.com/fetchai/agents-aea/blob/master/develop-image/user-image/README.md#publish)) - [ ] I have pushed the latest packages to the registry. - [ ] I have uploaded the latest `aea` to PyPI. diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index a431b74cef..98a71ca42f 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -196,7 +196,7 @@ jobs: sudo apt-get autoclean - name: Install tox run: | - pip install tox + pip install tox==3.28.0 - name: Check plugin aea-ledger-cosmos run: | tox -r -e plugins_env -- sh -c "pip install ./plugins/aea-ledger-cosmos && aea generate-key cosmos && echo aea-ledger-cosmos checked!" diff --git a/AUTHORS.md b/AUTHORS.md index 8ce0ab12a4..0f4e7d64a3 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -2,15 +2,16 @@ This is the official list of the AEA Framework authors: -* Ali Hosseini [5A11](https://github.com/5A11) -* Yuri Turchenkov [solarw](https://github.com/solarw) -* James Riehl [jrriehl](https://github.com/jrriehl) -* Marco Favorito [MarcoFavorito](https://github.com/MarcoFavorito) -* David Minarsch [DavidMinarsch](https://github.com/DavidMinarsch) -* Aristotelis Triantafyllidis [Totoual](https://github.com/Totoual) -* Diarmid Campbell [dishmop](https://github.com/dishmop) -* Oleg Panasevych [Panasevychol](https://github.com/panasevychol) -* Kevin Chen [Kevin-Chen0](https://github.com/Kevin-Chen0) -* Lokman Rahmani [lrahmani](https://github.com/lrahmani) -* Jiří Vestfál [MissingNO57](https://github.com/MissingNO57) -* Ed Fitzgerald [ejfitzgerald](https://github.com/ejfitzgerald) +### Lead + +- Ali Hosseini [5A11](https://github.com/5A11) + +### Primary Current and Past Contributors + +- James Riehl [jrriehl](https://github.com/jrriehl) +- David Minarsch [DavidMinarsch](https://github.com/DavidMinarsch) +- Marco Favorito [MarcoFavorito](https://github.com/MarcoFavorito) +- Yuri Turchenkov [solarw](https://github.com/solarw) +- Oleg Panasevych [Panasevychol](https://github.com/panasevychol) +- Lokman Rahmani [lrahmani](https://github.com/lrahmani) +- Jiří Vestfál [MissingNO57](https://github.com/MissingNO57) diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000000..0879d6b092 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,29 @@ +cff-version: 1.2.0 +message: "If you use the AEA framework in your research, please cite it as below:" +title: Autonomous Economic Agent (AEA) Framework +authors: + - family-names: Hosseini + given-names: Seyed Ali + - family-names: Minarsch + given-names: David + - family-names: Favorito + given-names: Marco + - family-names: Riehl + given-names: James + - family-names: Turchenkov + given-names: Yuri + - family-names: Panasevych + given-names: Oleg + - family-names: Rahmani + given-names: Lokman + - family-names: Vestfál + given-names: Jiří + - family-names: Triantafyllidis + given-names: Aristotelis + - family-names: Campbell + given-names: Diarmid + - family-names: Chen + given-names: Kevin +date-released: "2019-08-21" +url: "https://github.com/fetchai/agents-aea/" +license: "Apache-2.0" diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 374cb495d9..1efeec7003 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,4 +1,4 @@ -# Contributor Covenant Code of Conduct +# Code of Conduct ## Our Pledge @@ -10,19 +10,19 @@ We pledge to act and interact in ways that contribute to an open, welcoming, div Examples of behavior that contributes to a positive environment for our community include: -* Demonstrating empathy and kindness toward other people -* Being respectful of differing opinions, viewpoints, and experiences -* Giving and gracefully accepting constructive feedback -* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience -* Focusing on what is best not just for us as individuals, but for the overall community +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience +- Focusing on what is best not just for us as individuals, but for the overall community Examples of unacceptable behavior include: -* The use of sexualized language or imagery, and sexual attention or advances of any kind -* Trolling, insulting or derogatory comments, and personal or political attacks -* Public or private harassment -* Publishing others’ private information, such as a physical or email address, without their explicit permission -* Other conduct which could reasonably be considered inappropriate in a professional setting +- The use of sexualized language or imagery, and sexual attention or advances of any kind +- Trolling, insulting or derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others’ private information, such as a physical or email address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a professional setting ## Enforcement Responsibilities @@ -70,9 +70,9 @@ Community leaders will follow these Community Impact Guidelines in determining t ## Attribution -This Code of Conduct is adapted from the [Contributor Covenant][https://www.contributor-covenant.org], version 2.1, -available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html). +This Code of Conduct is adapted from the , version 2.1, +available at . Community Impact Guidelines were inspired by [Mozilla’s code of conduct enforcement ladder](https://github.com/mozilla/diversity). -For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are available at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). \ No newline at end of file +For answers to common questions about this code of conduct, see the FAQ at . Translations are available at . diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d94f481fb2..79802b0cfe 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,8 +1,6 @@ -# Contributing +# Contribution Guidelines -Contributions to the framework, plugins, related tools and packages are welcome! Every little helps and credit will always be given. - -As a contributor, here are the guidelines we would like you to follow: +Contributions to the framework, plugins, packages and related tools are welcome. As a contributor, here are the guidelines we would like you to follow: - [Code of Conduct](#coc) - [Question or Problem?](#question) @@ -11,7 +9,6 @@ As a contributor, here are the guidelines we would like you to follow: - [Submission Guidelines](#submit) - [Coding Rules](#rules) - [Commit Message Guidelines](#commit) -- [Development Guidelines](#dev) ## Code of Conduct @@ -19,24 +16,23 @@ Please read and follow our [Code of Conduct][coc]. ## Question or Problem? -Use [Github Discussions][ghdiscussion] to ask support-related questions. This is because: +Please use [GitHub Discussions][ghdiscussion] for support related questions and general discussions. Do NOT open issues as they are for bug reports and feature requests. This is because: - Questions and answers stay available for public viewing so your question/answer might help someone else. -- Github Discussions voting system ensures the best answers are prominently visible. - -Do not open issues for general support questions; they are used for bug reports and feature requests. +- GitHub Discussions voting system ensures the best answers are prominently visible. ## Found a Bug? -If you find a bug in the source code, [submit a bug report issue](#submit-issue) to our [GitHub repository][github]. +If you find a bug in the source code [submit a bug report issue](#submit-issue). Even better, you can [submit a Pull Request](#submit-pr) with a fix. ## Missing a Feature? -You can *request* a new feature by [submitting a feature request issue](#submit-issue) to our [GitHub repository][github]. + +You can *request* a new feature by [submitting a feature request issue](#submit-issue). If you would like to *implement* a new feature: -* For a **Major Feature**, first open an issue and outline your proposal so that it can be discussed. -* **Small Features** can be crafted and directly [submitted as a Pull Request](#submit-pr). +- For a **Major Feature**, first [open an issue](#submit-issue) and outline your proposal so that it can be discussed. +- **Small Features** can be crafted and directly [submitted as a Pull Request](#submit-pr). ## Submission Guidelines @@ -46,7 +42,7 @@ Before you submit an issue, please search the [issue tracker][issues]. An issue For bug reports, it is important that we can reproduce and confirm it. For this, we need you to provide a minimal reproduction instruction (this is part of the bug report issue template). -You can file new issues by selecting from our [new issue templates](https://github.com/fetchai/agents-aea/issues/new/choose) and filling out the issue template. +You can file new issues by selecting from our [new issue templates][new-issue] and filling out the issue template. ### Submitting a Pull Request (PR) @@ -54,20 +50,20 @@ Before you submit your Pull Request (PR) consider the following guidelines: 1. All Pull Requests should be based off of and opened against the `develop` branch. Do **not** open a Pull Request against `main`! -2. Search [Existing PRs](https://github.com/fetchai/agents-aea/pulls) for an open or closed PR that relates to your submission. +2. Search [Existing PRs][prs] for an open or closed PR that relates to your submission. You don't want to duplicate existing efforts. -3. Be sure that an issue describes the problem you're fixing, or the design for the feature you'd like to add. +3. Be sure that an issue exists describing the problem you're fixing, or the design for the feature you'd like to add. -4. [Fork](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo) the fetchai/agents-aea repo. +4. [Fork](https://docs.github.com/en/github/getting-started-with-github/fork-a-repo) the [repository][github]. 5. In your forked repository, make your changes in a new git branch created from the `develop` branch. -6. Make your changes, **including appropriate test cases**. +6. Make your changes, **including test cases** and updating documentation where appropriate. 7. Follow our [coding rules](#rules). -8. Run all tests and checks locally, as described in the [development guide](#dev), and ensure they pass. This saves CI hours and ensures you only commit clean code. +8. Run all tests and checks locally, as described in the [development guide][developing], and ensure they pass. This saves CI hours and ensures you only commit clean code. 9. Commit your changes using a descriptive commit message that follows our [commit message conventions](#commit). @@ -79,7 +75,7 @@ Before you submit your Pull Request (PR) consider the following guidelines: #### Reviewing a Pull Request -The AEA team reserves the right not to accept pull requests from community members who haven't been good citizens of the community. Such behavior includes not following our [code of conduct][coc] and applies within or outside of the managed channels. +The AEA team reserves the right not to accept pull requests from community members who haven't been good citizens of the community. Such behavior includes not following our [code of conduct][coc] and applies within or outside the managed channels. When you contribute a new feature, the maintenance burden is transferred to the core team. This means that the benefit of the contribution must be compared against the cost of maintaining the feature. @@ -98,84 +94,32 @@ If we ask for changes via code reviews then: After your pull request is merged, you can safely delete your branch and pull the changes from the (upstream) repository. ## Coding Rules -To ensure consistency throughout the source code, keep these rules in mind as you are working: - -* All code must pass our code quality checks (linters, formatters, etc). See the [development guide](#dev) section for more detail. -* All features or bug fixes **must be tested** via unit-tests and if applicable integration-tests. These help to, a) prove that your code works correctly, and b) guard against future breaking changes and lower the maintenance cost. -* All public features **must be documented**. -* All files must include a license header. - -## Commit Message Format - -Please follow the [Conventional Commits v1.0.0][convcommit]. - -##### Types - -The commit types (see [Conventional Commits v1.0.0][convcommit]) must be one of the following: - -* **build**: Changes that affect the build system or external dependencies -* **ci**: Changes to our CI configuration files and scripts -* **docs**: Documentation only changes -* **feat**: A new feature -* **fix**: A bug fix -* **perf**: A code change that improves performance -* **refactor**: A code change that neither fixes a bug nor adds a feature -* **test**: Adding missing tests or correcting existing tests - -## Development Guide - -### To set up - -First, set up your environment by either using the `develop-image` or by following these steps: - -- Install Python (version `3.8`, `3.9` or `3.10`) and `poetry`. Then run: - - make new-env - poetry shell -- The project uses [Google Protocol Buffers](https://developers.google.com/protocol-buffers/) compiler for message serialization. A guide on how to install it is found [here](https://fetchai.github.io/oef-sdk-python/user/install.html#protobuf-compiler). - -### During development - -We have various commands which are helpful during development. - -- For linting and static analysis use: - - make lint - make mypy - make pylint - make security - -- For checking packages integrity: - - make package-checks - -- To run tests: `make test`. - -- 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 - -- When making changes to one of the `packages`, then use `python scripts/generate_ipfs_hashes.py` to generate the latest hashes. - -#### Go Development +To ensure consistency throughout the source code, keep these rules in mind as you are working: -- The `fetchai/p2p_libp2p` package is partially developed in Go. +- All code must pass our code quality checks (linters, formatters, etc). See the [development guide][developing] section for more detail. +- All features or bug fixes **must be tested** via unit-tests and if applicable integration-tests. These help to, a. prove that your code works correctly, and b. guard against future breaking changes and lower the maintenance cost. +- All public features **must be documented**. +- All files must include a license header. -- To install Go visit the [Golang site](https://golang.org/doc/install). +## Commit Message Convention -- We use [`golines`](https://github.com/segmentio/golines) and [`golangci-lint`](https://golangci-lint.run) for linting. +Please follow the [Conventional Commits v1.0.0][convcommit]. The commit types must be one of the following: -- To run tests, use `go test -p 1 -timeout 0 -count 1 -v ./...` from the root directory of the package. If you experience installation or build issues run `go clean -modcache`. +- **build**: Changes that affect the build system or external dependencies +- **ci**: Changes to our CI configuration files and scripts +- **docs**: Documentation only changes +- **feat**: A new feature +- **fix**: A bug fix +- **nfunc**: Code that improves some non-functional characteristic, such as performance, security, ... +- **refactor**: A code change that neither fixes a bug nor adds a feature +- **test**: Adding missing tests or correcting existing tests [coc]: https://github.com/fetchai/agents-aea/blob/main/CODE_OF_CONDUCT.md +[developing]: https://github.com/fetchai/agents-aea/blob/main/DEVELOPING.md [ghdiscussion]: https://github.com/fetchai/agents-aea/discussions [issues]: https://github.com/fetchai/agents-aea/issues +[new-issue]: https://github.com/fetchai/agents-aea/issues/new/choose +[prs]: https://github.com/fetchai/agents-aea/pulls [convcommit]: https://www.conventionalcommits.org/en/v1.0.0/ -[dev-doc]: https://github.com/angular/angular/blob/main/docs/DEVELOPER.md [github]: https://github.com/fetchai/agents-aea -[discord]: https://bit.ly/3ra5uMI \ No newline at end of file diff --git a/DEVELOPING.md b/DEVELOPING.md new file mode 100644 index 0000000000..3cdd8d48d4 --- /dev/null +++ b/DEVELOPING.md @@ -0,0 +1,222 @@ +# Development Guidelines + +- [Getting the Source](#get) +- [Setting up a New Development Environment](#setup) +- [Development](#dev) + - [General code quality checks](#general) + - [Updating API documentation](#api) + - [Updating documentation](#docs) + - [Updating dependencies](#deps) + - [Updating packages](#package) + - [Tests](#tests) + - [Miscellaneous checks](#misc) +- [Contributing](#contributing) +- [Making Releases](#release) + +## Getting the Source + +1. Fork the [agents-aea repository][repo]. +2. Clone your fork of the agents-aea repository: + + ``` shell + git clone git@github.com:/agents-aea.git + ``` + +3. Define an `upstream` remote pointing back to the main agents-aea repository: + + ``` shell + git remote add upstream https://github.com/fetchai/agents-aea.git + ``` + +## Setting up a New Development Environment + +1. Ensure you have Python (version `3.8`, `3.9` or `3.10`) and [`poetry`][poetry]. + +2. ``` shell + make new-env + ``` + + This will create a new virtual environment using poetry with the project and all the development dependencies installed. + +3. ``` shell + poetry shell + ``` + + To enter the virtual environment. + +Depending on what you want to do, you might need extra tools on your system: + +- The project uses [Google Protocol Buffers][protobuf] compiler for message serialization. The compiler's version must match the `protobuf` library installed with the project (see `pyproject.toml`). +- The `fetchai/p2p_libp2p` package is partially developed in Go. To make changes, [install Golang][go]. +- To update fingerprint hashes of packages, you will need the [IPFS daemon][ipfs]. + +## Development + +### General code quality checks + +To run general code quality checkers, formatters and linters: + +- ``` shell + make lint + ``` + + Automatically formats your code and sorts your imports, checks your code's quality and scans for any unused code. + +- ``` shell + make mypy + ``` + + Statically checks the correctness of the types. + +- ``` shell + make pylint + ``` + + Analyses the quality of your code. + +- ``` shell + make security + ``` + + Checks the code for known vulnerabilities and common security issues. + +- ``` shell + make clean + ``` + + Cleans your development environment and deletes temporary files and directories. + +- For the Go parts, we use [`golines`][golines] and [`golangci-lint`][golangci-lint] for linting. + +### Updating documentation + +We use [`mkdocs`][mkdocs] and [`material-for-mkdocs`][material] for static documentation pages. To make changes to the documentation: + +- ``` shell + make docs-live + ``` + + This starts a live-reloading docs server on localhost which you can access by going to in your browser. Making changes to the documentation automatically reloads this page, showing you the latest changes. + + To create a new documentation page, add a markdown file under `/docs/` and add a reference to this page in `mkdocs.yml` under `nav`. + +### Updating API documentation + +If you've made changes to the core `aea` package that affects the public API: + +- ``` shell + make generate-api-docs + ``` + + This regenerates the API docs. If pages are added/deleted, or there are changes in their structure, these need to be reflected manually in the `nav` section of `mkdocs.yaml`. + +### Updating dependencies + +We use [`poetry`][poetry] and `pyproject.toml` to manage the project's dependencies. + +If you've made any changes to the dependencies (e.g. added/removed dependencies, or updated package version requirements): + +- ``` shell + poetry lock + ``` + + This re-locks the dependencies. Ensure that the `poetry.lock` file is pushed into the repository (by default it is). + +- ``` shell + make liccheck + ``` + + Checks that the licence for the framework is correct, taking into account the licences for all dependencies, their dependencies and so forth. + +### Updating packages + +If you've made changes to the packages included in the repository (e.g. skills, protocols, connections, contracts): + +- ``` shell + make update-package-hashes + ``` + + Updates the fingerprint hashes of every package in the repository. + +- ``` shell + make package-checks + ``` + + Checks, a. that the package hashes are correct, b. the documentation correctly references the latest packages, and c) runs other correctness checks on packages. + +### Tests + +To test the Python part of the project, we use `pytest`. To run the tests: + +- ``` shell + make test + ``` + + Runs all the tests. + +- ``` shell + make test-plugins + ``` + + Runs all plugin tests. + +- ``` shell + make dir={SUBMODULE} tdir={TESTMODULE} test-sub + ``` + + Runs the tests for `aea.{SUBMODULE}`. For example, to run the tests for the CLI: `make dir=cli tdir=cli test-sub` + +To test the Go parts of the project: + +- ``` shell + go test -p 1 -timeout 0 -count 1 -v ./... + ``` + + from the root directory of a Go package (e.g. `fetchai/p2p_libp2p`) to run the Golang tests. + If you experience installation or build issues, run `go clean -modcache`. + +### Miscellaneous checks + +- ``` shell + copyright-check + ``` + + Checks that all files have the correct copyright header (where applicable). + +- ``` shell + check-doc-links + ``` + + Checks that the links in the documentations are valid and alive. + +- ``` shell + make libp2p-diffs + ``` + + Checks the libp2p code under `libs` and in the connection packages aren't different. + +- ``` shell + make plugin-diffs + ``` + + Checks the plugin licenses and the codes under `cosmos` and `fetchai` ledger plugins aren't different. + +## Contributing + +For instructions on how to contribute to the project (e.g. creating Pull Requests, commit message convention, etc), see the [contributing guide][contributing guide]. + +## Making Releases + +For instructions on how to make a release, see the [release process][release process] guide. + +[protobuf]: https://developers.google.com/protocol-buffers/ +[ipfs]: https://docs.ipfs.tech/install/ +[go]: https://golang.org/doc/install +[golines]: https://github.com/segmentio/golines +[golangci-lint]: https://golangci-lint.run +[mkdocs]: https://www.mkdocs.org +[material]: https://squidfunk.github.io/mkdocs-material/ +[poetry]: https://python-poetry.org +[contributing guide]: https://github.com/fetchai/agents-aea/blob/main/CONTRIBUTING.md +[release process]: https://github.com/fetchai/agents-aea/blob/main/scripts/RELEASE_PROCESS.md +[repo]: https://github.com/fetchai/agents-aea diff --git a/HISTORY.md b/HISTORY.md index 7565698b4b..2513c10519 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,85 +1,114 @@ # Release History -## 1.2.4(2022-11-30) +## 1.2.5 (2023-01-18) + +Docs: + +- Sweeping foundational updates across all documentation + +Misc: + +- Update some dependencies +- Update copyright headers across all files (including year 2023) +- Remove `docker-images` submodule +- Various bug fixes + +## 1.2.4 (2022-11-30) Agents: + - Add hello_world skill and agent Docs: + - Update repository documentations - Update installation guide for Raspberry Pis (add a link to prebuilt image for Raspberry Pis) Misc: + - Update the dependencies (protobuf, jsonschema, cosmpy) - Various improvements in the repository structure (e.g. makefile, tox, workflows) - Speed up CI/CD - Various bug fixes -## 1.2.3(2022-11-03) +## 1.2.3 (2022-11-03) AEA: + - core and development are dependencies updated. - ci improvements - cosmpy updated to 0.6.0 - Small code format improvements and better linting Plugins: + - Small code format improvements - cosmpy updated to 0.6.0 Packages: + - Small code format improvements ## 1.2.2 (2022-10-17) AEA: + - Dependency management switched from pipenv to poetry. - Protocol generator updated to support Unions - Dependencies versions updates: click, mypy, black, ipfshttpclient - Small code format improvements Plugins: + - Update web3 to version 5.31 - Small code format improvements - ipfshttpclient dependency version updated to 0.8.0a2 Packages: + - Protocols regenerated according to the latest protocol generator improvements: Union support - Small code format improvements ## 1.2.1 (2022-07-12) AEA: + - Protocol generator uses int64 instead of int32 - Dependencies versions updates Plugins: + - Upgrades fetchai plugin to use cosmpy>=0.5.0 - Upgrades cosmos plugin to use cosmpy>=0.5.0 Packages: + - Fixes for skills to work with dorado testnet (tx fee adjusted) ## 1.2.0 (2022-05-05) AEA: + - Adds support for Python 3.10 -- Updates protobuf dependency +- Updates protobuf dependency - Updates asyncio dependency - Updates golang modules - Updates many dependencies to their latest versions - Fixes dependency issues Plugins: + - Upgrades fetchai plugin to be compatible with Dorado networks - Upgrades cosmos plugin to be compatible with Dorado networks Packages: + - Adds more logging to the p2p_libp2p packages (vanilla, client, mailbox) - Aries demo updated to cover the full base scenario - Protocols were regenerated with newer protobuf Chores: + - Fixed various tests - Fixed docker container issue in tests - Added automated script to add support for new versions of the Fetchai network @@ -91,23 +120,28 @@ Chores: ## 1.1.1 (2021-12-15) AEA: + - Updates the protocol generator to generate protocols that satisfy linter constraints Plugins: - - aea-cli-ipfs plugin small update + +- aea-cli-ipfs plugin small update Packages: + - Fixes fetchai/p2p_libp2p connection to address a slow DHT lookup problem - Updates protocols with the latest protocol generator - Updates random beacon agent so it produces block data instead of the (now deprecated feature of the test-net) random beacon data Misc + - Bumps go library versions - Various fixes and improvements ## 1.1.0 (2021-10-13) AEA: + - Adds public keys to agent identity and skill context - Adds contract test tool - Adds multiprocess support for task manager @@ -124,27 +158,30 @@ AEA: - Fixes IPFS hash calculation for large files - Fixes protobuf dictionary serializer's uncovered cases and makes it deterministic - Fixes scaffolding of error and decision maker handlers -- Fixes pywin32 problem when checking dependency +- Fixes pywin32 problem when checking dependency - Improves existing testing tools Benchmarks: + - Adds agents construction and decision maker benchmark cases Plugins: + - Upgrades fetchai plugin to use CosmPy instead of CLI calls - Upgrades cosmos plugin to use CosmPy instead of CLI calls -- Upgrades fetchai plugin to use StargateWorld +- Upgrades fetchai plugin to use StargateWorld - Upgrades cosmos plugin to Stargate - Sets the correct maximum Gas for fetch.ai plugin Packages: + - Adds support for Tac to be run against fetchai StargateWorld test-net - Adds more informative error messages to CosmWasm ERC1155 contract - Adds support for atomic swap to CosmWasm ERC1155 contract -- Adds an ACN protocol that formalises ACN communication using the framework's protocol language +- Adds an ACN protocol that formalises ACN communication using the framework's protocol language - Adds `cosm_trade` protocol for preparing atomic swap transactions for cosmos-based networks - Adds https support for server connection -- Adds parametrising of http(s) in soef connection +- Adds parametrising of http(s) in soef connection - Fixes http server content length response problem - Updates Oracle contract to 0.14 - Implements the full ACN spec throughout the ACN packages @@ -156,22 +193,26 @@ Packages: - Multiple fixes and stability improvements for `p2p_libp2p` connections Docs: + - Adds ACN internals documentation - Fixes tutorial for HTTP connection and skill - Multiple additional docs updates - Adds more context to private keys docs Chores: + - Various development features bumped - Bumped Mermaid-JS, for UML diagrams to major version 8 - Applies darglint to the code Examples: + - Adds a unified script for running various versions/modes of Tac ## 1.0.2 (2021-06-03) AEA: + - Bounds versions of dependencies by next major - Fixes incoherent warning message during package loading - Improves various incomprehensible error messages @@ -184,9 +225,11 @@ AEA: - Fixes `aea get-multiaddress` command to consider overrides Plugins: + - Bounds versions of dependencies by next major Packages: + - Updates `p2p_libp2p` connection to use TCP sockets for all platforms - Multiple fixes on `libp2p_node` including better error handling and stream creation - Adds sending queue in `p2p_libp2p` connection to handle sending failures @@ -201,11 +244,13 @@ Packages: - Multiple additional tests and test stability fixes Docs: + - Extends demo docs to include guidance of usage in AEA Manager - Adds short guide on Kubernetes deployment - Multiple additional docs updates Chores: + - Adds `--no-bump` option to `generate_all_protocols` script - Adds script to detect if aea or plugins need bumping - Bumps various development dependencies @@ -213,11 +258,13 @@ Chores: - Adds `darglint` to CI Examples: + - Updates TAC deployment scripts and images ## - (2021-05-05) Packages: + - Adds node watcher to `p2p_libp2p` connection - Improves logging and error handling in `p2p_libp2p` node - Addresses potential overflow issue in `p2p_libp2p` node @@ -231,16 +278,19 @@ Packages: ## 1.0.1 (2021-04-30) AEA: + - Fixes wheels issue for Windows - Fixes password propagation for certificate issuance in `MultiAgentManager` - Improves error message when local registry not present AEALite: + - Adds full protocol support - Adds end-to-end interaction example with AEA (based on `fetchai/fipa` protocol) - Multiple additional tests and test stability fixes Packages: + - Fixes multiple bugs in `ERC1155` version of TAC - Refactors p2p connections for better separation of concerns and maintainability - Integrates aggregation with simple oracle skill @@ -253,11 +303,13 @@ Packages: - Multiple additional tests and test stability fixes Docs: + - Extends car park demo with usage guide for AEA manager - Multiple additional docs updates Examples: -- Adds TAC deployment example + +- Adds TAC deployment example ## 1.0.0 (2021-03-30) @@ -311,7 +363,6 @@ Examples: - Multiple docs updates to fix order of CLI commands with respect to installing dependencies - Multiple additional tests and test stability fixes - ## 0.11.2 (2021-03-17) - Fixes a package import issue @@ -755,7 +806,7 @@ Examples: - Updates connection loading mechanism - Updates all connections for compatibility with new loading mechanism - Extracts multiplexer into its own module -- Implements list all CLI command +- Implements list all CLI command - Updates wallet to split into several crypto stores - Refactors component registry and resources - Extends soef connection functionality @@ -1049,7 +1100,6 @@ Examples: - Increased test coverage - Multiple additional minor fixes and changes - ## 0.1.4 (2019-09-20) - Adds CLI functionality to add connections diff --git a/README.md b/README.md index 4b1a670722..e111016513 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,10 @@ AEA Framework +

+Create Autonomous Economic Agents (AEAs) +

+

PyPI @@ -10,47 +14,28 @@ PyPI - Python Version - License + License - License + License -

-

+
AEA framework sanity checks and tests Codecov - + Discord conversation

-

-A framework for developing autonomous economic agents (AEAs) -

+The AEA framework allows you to create **Autonomous Economic Agents**: -

- AEA Description -

- -## To install - -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](https://pypi.org/project/aea/): - - 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](https://docs.fetch.ai/aea/). +- An AEA is an Agent, representing an individual, family, organisation or object (a.k.a. its "owner") in the digital world. It looks after its owner's interests and has their preferences in mind when acting on their behalf. +- AEAs are Autonomous; acting with no, or minimal, interference from their owners. +- AEAs have a narrow and specific focus: creating Economic value for their owners.

@@ -58,75 +43,51 @@ A framework for developing autonomous economic agents (AEAs)

-## Alternatively (1): Use `pipx` (CLI usage only) - -1. Install [pipx](https://github.com/pipxproject/pipx) - -2. Install the package from [PyPI](https://pypi.org/project/aea/): - - pipx install aea[all] - -3. Run AEA CLI e.g.: - - aea --help - -## Alternatively (2): 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](#preliminaries)). +## To install -You can have more control on the installed dependencies by leveraging the setuptools' extras mechanism. +1. Ensure you have Python (version `3.8`, `3.9` or `3.10`). +2. (optional) Use a virtual environment (e.g. [`pipenv`][pipenv] or [`poetry`][poetry]). +3. Install: `pip install aea[all]` -### Preliminaries +Please see the [installation page][docs-install] for more details. -- Create and launch a virtual environment with Python 3.7 (any Python `>=` 3.6 works): +## Documentation - pipenv --python 3.7 && pipenv shell +The full documentation, including how to get started, can be found [here][docs]. -- Install the package from source: +## Contributing - pip install .[all] +All contributions are very welcome! Remember, contribution is not only PRs and code, but any help with docs or helping other developers solve their issues are very appreciated! - Or, if you use `zsh` rather than `bash`: +Read below to learn how you can take part in the AEA project. - pip install ".[all]" +### Code of Conduct -- Then, build your agent as described in the [docs](https://fetchai.github.io/agents-aea/). +Please be sure to read and follow our [Code of Conduct][coc]. By participating, you are expected to uphold this code. -## Documentation +### Contribution Guidelines -- All documentation is hosted [here](https://docs.fetch.ai/aea). +Read our [contribution guidelines][contributing] to learn about our issue and PR submission processes, coding rules, and more. -- 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`. +### Development Guidelines -- To run demos against local packages use flag `--local` in `aea` CLI commands. +Read our [development guidelines][developing] to learn about the development processes and workflows when contributing to different parts of the AEA project. -## Contributing +### Issues, Questions and Discussions -We welcome contributions to the framework, its plugins, related tools and packages. Please consult the [contributing guide](https://github.com/fetchai/agents-aea/blob/main/CONTRIBUTING.md) for details. +We use [GitHub Issues][issues] for tracking requests and bugs, and [GitHub Discussions][discussion] for general questions and discussion. -## Cite +## License -If you are using our software in a publication, please -consider to cite it with the following BibTex entry: +The AEA project is licensed under [Apache License 2.0][license]. -``` -@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}, -} -``` +[poetry]: https://python-poetry.org +[pipenv]: https://pypi.org/project/pipenv/ +[docs]: https://docs.fetch.ai +[contributing]: https://github.com/fetchai/agents-aea/blob/main/CONTRIBUTING.md +[developing]: https://github.com/fetchai/agents-aea/blob/main/DEVELOPING.md +[coc]: https://github.com/fetchai/agents-aea/blob/main/CODE_OF_CONDUCT.md +[discussion]: https://github.com/fetchai/agents-aea/discussions +[issues]: https://github.com/fetchai/agents-aea/issues +[license]: https://github.com/fetchai/agents-aea/blob/main/LICENSE +[docs-install]: https://docs.fetch.ai/aea/installation/ diff --git a/SECURITY.md b/SECURITY.md index d347def524..fa7f245661 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -7,7 +7,7 @@ This document outlines security procedures and general policies for the `aea` pr The following table shows which versions of `aea` are currently being supported with security updates. | Version | Supported | -| --------- | ------------------ | +|-----------|--------------------| | `1.2.x` | :white_check_mark: | | `< 1.2.0` | :x: | diff --git a/aea/__init__.py b/aea/__init__.py index 5ab2162076..a4b749571a 100644 --- a/aea/__init__.py +++ b/aea/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/__version__.py b/aea/__version__.py index 4c0eef94f7..e5d3309055 100644 --- a/aea/__version__.py +++ b/aea/__version__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,7 +22,7 @@ __title__ = "aea" __description__ = "Autonomous Economic Agent framework" __url__ = "https://github.com/fetchai/agents-aea.git" -__version__ = "1.2.4" +__version__ = "1.2.5" __author__ = "Fetch.AI Limited" __license__ = "Apache-2.0" __copyright__ = "2022 Fetch.AI Limited" diff --git a/aea/abstract_agent.py b/aea/abstract_agent.py index eee8f6adaa..ebd307b984 100644 --- a/aea/abstract_agent.py +++ b/aea/abstract_agent.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/aea.py b/aea/aea.py index 3cfdfc6cb3..7ea67601f8 100644 --- a/aea/aea.py +++ b/aea/aea.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/aea_builder.py b/aea/aea_builder.py index 4e9d4cc41f..a940193ba1 100644 --- a/aea/aea_builder.py +++ b/aea/aea_builder.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/agent.py b/aea/agent.py index e65a3e788c..e1733f6066 100644 --- a/aea/agent.py +++ b/aea/agent.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/agent_loop.py b/aea/agent_loop.py index dc2ebb4dcb..febf08db2c 100644 --- a/aea/agent_loop.py +++ b/aea/agent_loop.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/__init__.py b/aea/cli/__init__.py index 6c8385e227..32aaa5164b 100644 --- a/aea/cli/__init__.py +++ b/aea/cli/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/__main__.py b/aea/cli/__main__.py index af9c2e8ab9..55de6f12ab 100755 --- a/aea/cli/__main__.py +++ b/aea/cli/__main__.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/add.py b/aea/cli/add.py index 5795207fb0..faa3f8599c 100644 --- a/aea/cli/add.py +++ b/aea/cli/add.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/add_key.py b/aea/cli/add_key.py index 30a1b59c99..b07496b5ef 100644 --- a/aea/cli/add_key.py +++ b/aea/cli/add_key.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/build.py b/aea/cli/build.py index 3832eae237..6d1066a9f9 100644 --- a/aea/cli/build.py +++ b/aea/cli/build.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/config.py b/aea/cli/config.py index def41754be..b648837143 100644 --- a/aea/cli/config.py +++ b/aea/cli/config.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/core.py b/aea/cli/core.py index 005c121ff9..121fd0a299 100644 --- a/aea/cli/core.py +++ b/aea/cli/core.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/create.py b/aea/cli/create.py index 608730b959..4862f2bc16 100644 --- a/aea/cli/create.py +++ b/aea/cli/create.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/delete.py b/aea/cli/delete.py index 81ffab264e..c00a92ffee 100644 --- a/aea/cli/delete.py +++ b/aea/cli/delete.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/eject.py b/aea/cli/eject.py index aecbfc27ac..99fe8eca58 100644 --- a/aea/cli/eject.py +++ b/aea/cli/eject.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/fetch.py b/aea/cli/fetch.py index a9b060b7c5..daf4cad109 100644 --- a/aea/cli/fetch.py +++ b/aea/cli/fetch.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/fingerprint.py b/aea/cli/fingerprint.py index 77af32c038..c7325d1120 100644 --- a/aea/cli/fingerprint.py +++ b/aea/cli/fingerprint.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/freeze.py b/aea/cli/freeze.py index 1e351be0e6..a9a3b741f2 100644 --- a/aea/cli/freeze.py +++ b/aea/cli/freeze.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/generate.py b/aea/cli/generate.py index 89f7bbe72e..e1a4bfffdc 100644 --- a/aea/cli/generate.py +++ b/aea/cli/generate.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/generate_key.py b/aea/cli/generate_key.py index dbf069bdc2..caaa636f34 100644 --- a/aea/cli/generate_key.py +++ b/aea/cli/generate_key.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/generate_wealth.py b/aea/cli/generate_wealth.py index 8671777cc4..5f59a25eac 100644 --- a/aea/cli/generate_wealth.py +++ b/aea/cli/generate_wealth.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/get_address.py b/aea/cli/get_address.py index 292e4b8e04..3cd5b6bebd 100644 --- a/aea/cli/get_address.py +++ b/aea/cli/get_address.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/get_multiaddress.py b/aea/cli/get_multiaddress.py index a7adb1d1fa..9773f64064 100644 --- a/aea/cli/get_multiaddress.py +++ b/aea/cli/get_multiaddress.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/get_public_key.py b/aea/cli/get_public_key.py index 2f28b36812..31b3d0b247 100644 --- a/aea/cli/get_public_key.py +++ b/aea/cli/get_public_key.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/get_wealth.py b/aea/cli/get_wealth.py index 8239ae03eb..f1585c87bc 100644 --- a/aea/cli/get_wealth.py +++ b/aea/cli/get_wealth.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/init.py b/aea/cli/init.py index c2d6d7c1dd..10f692a462 100644 --- a/aea/cli/init.py +++ b/aea/cli/init.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/install.py b/aea/cli/install.py index 01cf89ff07..7376faa076 100644 --- a/aea/cli/install.py +++ b/aea/cli/install.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/interact.py b/aea/cli/interact.py index b681633fd1..335da79386 100644 --- a/aea/cli/interact.py +++ b/aea/cli/interact.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/issue_certificates.py b/aea/cli/issue_certificates.py index 6e72801451..189c40c208 100644 --- a/aea/cli/issue_certificates.py +++ b/aea/cli/issue_certificates.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/launch.py b/aea/cli/launch.py index 7563444d20..01a28e28ab 100644 --- a/aea/cli/launch.py +++ b/aea/cli/launch.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/list.py b/aea/cli/list.py index 1d8be3d26b..4f3886bbae 100644 --- a/aea/cli/list.py +++ b/aea/cli/list.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/local_registry_sync.py b/aea/cli/local_registry_sync.py index a1e6c6f375..4401de537b 100644 --- a/aea/cli/local_registry_sync.py +++ b/aea/cli/local_registry_sync.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/login.py b/aea/cli/login.py index c7813ed86e..75676ce4c7 100644 --- a/aea/cli/login.py +++ b/aea/cli/login.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/logout.py b/aea/cli/logout.py index d9536fdf43..187b4ff478 100644 --- a/aea/cli/logout.py +++ b/aea/cli/logout.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/plugin.py b/aea/cli/plugin.py index e4d4fe7185..507d3fa735 100644 --- a/aea/cli/plugin.py +++ b/aea/cli/plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/publish.py b/aea/cli/publish.py index 65b8d71e92..174a56564a 100644 --- a/aea/cli/publish.py +++ b/aea/cli/publish.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/push.py b/aea/cli/push.py index 38e2f5726a..e48f276603 100644 --- a/aea/cli/push.py +++ b/aea/cli/push.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/register.py b/aea/cli/register.py index 6570d09e7e..31d844e24f 100644 --- a/aea/cli/register.py +++ b/aea/cli/register.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/registry/__init__.py b/aea/cli/registry/__init__.py index 0e0ec5577d..f67ce23300 100644 --- a/aea/cli/registry/__init__.py +++ b/aea/cli/registry/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/registry/add.py b/aea/cli/registry/add.py index 824a46a889..c65bf6c76c 100644 --- a/aea/cli/registry/add.py +++ b/aea/cli/registry/add.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/registry/fetch.py b/aea/cli/registry/fetch.py index d004befe63..4442785179 100644 --- a/aea/cli/registry/fetch.py +++ b/aea/cli/registry/fetch.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/registry/login.py b/aea/cli/registry/login.py index bfeb74c5da..6fffdbcd09 100644 --- a/aea/cli/registry/login.py +++ b/aea/cli/registry/login.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/registry/logout.py b/aea/cli/registry/logout.py index a45c178da3..6950e7cb87 100644 --- a/aea/cli/registry/logout.py +++ b/aea/cli/registry/logout.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/registry/publish.py b/aea/cli/registry/publish.py index 31493d9091..6958f244ea 100644 --- a/aea/cli/registry/publish.py +++ b/aea/cli/registry/publish.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/registry/push.py b/aea/cli/registry/push.py index 82f06823e6..cab77b9dcd 100644 --- a/aea/cli/registry/push.py +++ b/aea/cli/registry/push.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/registry/registration.py b/aea/cli/registry/registration.py index 42a9ee14fa..092a9380bb 100644 --- a/aea/cli/registry/registration.py +++ b/aea/cli/registry/registration.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/registry/settings.py b/aea/cli/registry/settings.py index e663ad09e3..80f38fb9fa 100644 --- a/aea/cli/registry/settings.py +++ b/aea/cli/registry/settings.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/registry/utils.py b/aea/cli/registry/utils.py index c6843dc570..71091141bb 100644 --- a/aea/cli/registry/utils.py +++ b/aea/cli/registry/utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/remove.py b/aea/cli/remove.py index 0806fcdb56..af3a4b38d6 100644 --- a/aea/cli/remove.py +++ b/aea/cli/remove.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/remove_key.py b/aea/cli/remove_key.py index 3f4871a5f2..a46242c7d9 100644 --- a/aea/cli/remove_key.py +++ b/aea/cli/remove_key.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/reset_password.py b/aea/cli/reset_password.py index 604392e3a7..a7be9dfe96 100644 --- a/aea/cli/reset_password.py +++ b/aea/cli/reset_password.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/run.py b/aea/cli/run.py index fc16c7849a..f68df3a713 100644 --- a/aea/cli/run.py +++ b/aea/cli/run.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/scaffold.py b/aea/cli/scaffold.py index 6853734f27..5ea08d9006 100644 --- a/aea/cli/scaffold.py +++ b/aea/cli/scaffold.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/search.py b/aea/cli/search.py index 2c5e29385c..6e66941f1c 100644 --- a/aea/cli/search.py +++ b/aea/cli/search.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/transfer.py b/aea/cli/transfer.py index fd18271876..9230da5631 100644 --- a/aea/cli/transfer.py +++ b/aea/cli/transfer.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/upgrade.py b/aea/cli/upgrade.py index 74c2899028..f8fcf4d8d1 100644 --- a/aea/cli/upgrade.py +++ b/aea/cli/upgrade.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/utils/__init__.py b/aea/cli/utils/__init__.py index 2899638156..d0f23969bb 100644 --- a/aea/cli/utils/__init__.py +++ b/aea/cli/utils/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/utils/click_utils.py b/aea/cli/utils/click_utils.py index ecac72e051..c63612b95a 100644 --- a/aea/cli/utils/click_utils.py +++ b/aea/cli/utils/click_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/utils/config.py b/aea/cli/utils/config.py index 4a0564bb25..dd9d2cfe22 100644 --- a/aea/cli/utils/config.py +++ b/aea/cli/utils/config.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/utils/constants.py b/aea/cli/utils/constants.py index 244ca2e28b..278dab9d5a 100644 --- a/aea/cli/utils/constants.py +++ b/aea/cli/utils/constants.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/utils/context.py b/aea/cli/utils/context.py index 69dc41dc41..b7738e3bd5 100644 --- a/aea/cli/utils/context.py +++ b/aea/cli/utils/context.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/utils/decorators.py b/aea/cli/utils/decorators.py index 7a2a53e221..37a403fcb4 100644 --- a/aea/cli/utils/decorators.py +++ b/aea/cli/utils/decorators.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/utils/exceptions.py b/aea/cli/utils/exceptions.py index 0d42d5727e..4de69579fb 100644 --- a/aea/cli/utils/exceptions.py +++ b/aea/cli/utils/exceptions.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/utils/formatting.py b/aea/cli/utils/formatting.py index 21e57d3d04..c78e1607ce 100644 --- a/aea/cli/utils/formatting.py +++ b/aea/cli/utils/formatting.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/utils/generic.py b/aea/cli/utils/generic.py index 0a5f247f29..2d2fe8d53e 100644 --- a/aea/cli/utils/generic.py +++ b/aea/cli/utils/generic.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/utils/loggers.py b/aea/cli/utils/loggers.py index 9ec8cf890c..c6db682e73 100644 --- a/aea/cli/utils/loggers.py +++ b/aea/cli/utils/loggers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/cli/utils/package_utils.py b/aea/cli/utils/package_utils.py index 85b53f5956..cad1a466c5 100644 --- a/aea/cli/utils/package_utils.py +++ b/aea/cli/utils/package_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/common.py b/aea/common.py index a688e1b73b..d674c88782 100644 --- a/aea/common.py +++ b/aea/common.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/components/__init__.py b/aea/components/__init__.py index 9b94dd8fa5..c2deb33d12 100644 --- a/aea/components/__init__.py +++ b/aea/components/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/components/base.py b/aea/components/base.py index b0c9a43a64..76c2649005 100644 --- a/aea/components/base.py +++ b/aea/components/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/components/loader.py b/aea/components/loader.py index 30386e2b71..aadc56249d 100644 --- a/aea/components/loader.py +++ b/aea/components/loader.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/components/utils.py b/aea/components/utils.py index 3f6c0348e9..66cc90e266 100644 --- a/aea/components/utils.py +++ b/aea/components/utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/configurations/__init__.py b/aea/configurations/__init__.py index f6282c36f3..53391de49f 100644 --- a/aea/configurations/__init__.py +++ b/aea/configurations/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/configurations/base.py b/aea/configurations/base.py index 579a40b46e..c13580cb5d 100644 --- a/aea/configurations/base.py +++ b/aea/configurations/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/configurations/constants.py b/aea/configurations/constants.py index ed4a9eada6..976d829201 100644 --- a/aea/configurations/constants.py +++ b/aea/configurations/constants.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/configurations/data_types.py b/aea/configurations/data_types.py index 5212ff7737..8b4c27bc52 100644 --- a/aea/configurations/data_types.py +++ b/aea/configurations/data_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/configurations/loader.py b/aea/configurations/loader.py index e44c277801..a1df260566 100644 --- a/aea/configurations/loader.py +++ b/aea/configurations/loader.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/configurations/manager.py b/aea/configurations/manager.py index cafe229c5e..b91d668899 100644 --- a/aea/configurations/manager.py +++ b/aea/configurations/manager.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/configurations/pypi.py b/aea/configurations/pypi.py index e46a81cecc..3b940de5ad 100644 --- a/aea/configurations/pypi.py +++ b/aea/configurations/pypi.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/configurations/utils.py b/aea/configurations/utils.py index 9a4dd1c8a3..b919d4a668 100644 --- a/aea/configurations/utils.py +++ b/aea/configurations/utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/configurations/validation.py b/aea/configurations/validation.py index c8147cc6f6..91398fff0e 100644 --- a/aea/configurations/validation.py +++ b/aea/configurations/validation.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/connections/__init__.py b/aea/connections/__init__.py index f4ac95384d..2a6564f0ca 100644 --- a/aea/connections/__init__.py +++ b/aea/connections/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/connections/base.py b/aea/connections/base.py index 04e4c463b9..5a825e06a1 100644 --- a/aea/connections/base.py +++ b/aea/connections/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/connections/scaffold/__init__.py b/aea/connections/scaffold/__init__.py index a936e7d121..f1f51a816a 100644 --- a/aea/connections/scaffold/__init__.py +++ b/aea/connections/scaffold/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/connections/scaffold/connection.py b/aea/connections/scaffold/connection.py index 890dd0ec66..ea33bd04d7 100644 --- a/aea/connections/scaffold/connection.py +++ b/aea/connections/scaffold/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/connections/scaffold/connection.yaml b/aea/connections/scaffold/connection.yaml index 008eceac4e..2b76d893f6 100644 --- a/aea/connections/scaffold/connection.yaml +++ b/aea/connections/scaffold/connection.yaml @@ -7,9 +7,9 @@ description: The scaffold connection provides a scaffold for a connection to be license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - __init__.py: QmY7cPhXj7suon5jahiWCZgsCtQr5zfwYtR7yu5CJ6y5nD - connection.py: Qmf6kTmh5SpN6Ho9VyjCJZ3FyjqrdWFb9649zmjm21WDZK - readme.md: Qmdt71SaCCwAG1c24VktXDm4pxgUBiPMg4bWfUTiqorypf + __init__.py: QmaA7o9G1hT3fHtPDq6UYUyS5KY51uDkwMUGUc96odzSCX + connection.py: QmWUqCmfD65KqnGjk2XWLDN3KAU32nC6uYgGCvjmSLWi7D + readme.md: QmRFgpKrtPPTJSAEaXoNNKcYFiTAhVFKuiNZdjrjmAw8d1 fingerprint_ignore_patterns: [] connections: [] protocols: [] diff --git a/aea/connections/scaffold/readme.md b/aea/connections/scaffold/readme.md index 6359d72d7b..5b373b777f 100644 --- a/aea/connections/scaffold/readme.md +++ b/aea/connections/scaffold/readme.md @@ -1,5 +1,7 @@ # Scaffold connection + The scaffold connection acts as a boilerplate for a newly created connection. ## Usage + Create a scaffold connection with the `aea scaffold connection {NAME}` command and implement your own connection. diff --git a/aea/context/__init__.py b/aea/context/__init__.py index 157c66fd19..d92417d6cc 100644 --- a/aea/context/__init__.py +++ b/aea/context/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/context/base.py b/aea/context/base.py index 4cd50b84f7..6b4d53055f 100644 --- a/aea/context/base.py +++ b/aea/context/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/contracts/__init__.py b/aea/contracts/__init__.py index a03465bcc9..89cddfc4da 100644 --- a/aea/contracts/__init__.py +++ b/aea/contracts/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/contracts/base.py b/aea/contracts/base.py index 53d24b7ab2..e1036c7923 100644 --- a/aea/contracts/base.py +++ b/aea/contracts/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/contracts/scaffold/__init__.py b/aea/contracts/scaffold/__init__.py index 3ae5b64509..bfb8df36e8 100644 --- a/aea/contracts/scaffold/__init__.py +++ b/aea/contracts/scaffold/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/contracts/scaffold/contract.py b/aea/contracts/scaffold/contract.py index 465e813035..35c638c00d 100644 --- a/aea/contracts/scaffold/contract.py +++ b/aea/contracts/scaffold/contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/contracts/scaffold/contract.yaml b/aea/contracts/scaffold/contract.yaml index b2a48cb828..d9b9d4841c 100644 --- a/aea/contracts/scaffold/contract.yaml +++ b/aea/contracts/scaffold/contract.yaml @@ -6,8 +6,8 @@ description: The scaffold contract scaffolds a contract to be implemented by the license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - __init__.py: QmapxaGbaFWWoo66bumd5dbFjbwiCoi7wy5EYigGSTUtFc - contract.py: QmQd4SZNb3737B9NQkBj8uxEYHHfrZf3SytT7uDtzfCDp2 + __init__.py: QmbqCg6ZKdTA5kLdmaMKpLtuTDhkwNZTSfyH9c8AUA2GCy + contract.py: QmUvREspzKHP81G3u5xgu98dz4a1J8vGYL4xjrf2kv9nGB fingerprint_ignore_patterns: [] class_name: MyScaffoldContract contract_interface_paths: {} diff --git a/aea/crypto/__init__.py b/aea/crypto/__init__.py index 4e34234411..ea4b4c7dec 100644 --- a/aea/crypto/__init__.py +++ b/aea/crypto/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/crypto/base.py b/aea/crypto/base.py index 8e4d9c4ab9..eb333f2b92 100644 --- a/aea/crypto/base.py +++ b/aea/crypto/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/crypto/helpers.py b/aea/crypto/helpers.py index 359dc0a747..2c9591d7c0 100644 --- a/aea/crypto/helpers.py +++ b/aea/crypto/helpers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/crypto/ledger_apis.py b/aea/crypto/ledger_apis.py index d54ef6e5e0..e112483581 100644 --- a/aea/crypto/ledger_apis.py +++ b/aea/crypto/ledger_apis.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/crypto/plugin.py b/aea/crypto/plugin.py index 62131319af..39143b04f2 100644 --- a/aea/crypto/plugin.py +++ b/aea/crypto/plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/crypto/registries/__init__.py b/aea/crypto/registries/__init__.py index 35c37aa35a..ccdff61bc0 100644 --- a/aea/crypto/registries/__init__.py +++ b/aea/crypto/registries/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/crypto/registries/base.py b/aea/crypto/registries/base.py index fac7342bce..f43ccafc32 100644 --- a/aea/crypto/registries/base.py +++ b/aea/crypto/registries/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/crypto/wallet.py b/aea/crypto/wallet.py index 29dc4ca0a5..5071bcc42f 100644 --- a/aea/crypto/wallet.py +++ b/aea/crypto/wallet.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/decision_maker/__init__.py b/aea/decision_maker/__init__.py index 3d887426f6..8971356188 100644 --- a/aea/decision_maker/__init__.py +++ b/aea/decision_maker/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/decision_maker/base.py b/aea/decision_maker/base.py index 10811c32ae..807c9f57d5 100644 --- a/aea/decision_maker/base.py +++ b/aea/decision_maker/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/decision_maker/default.py b/aea/decision_maker/default.py index e5f4e65cae..7f3fd12878 100644 --- a/aea/decision_maker/default.py +++ b/aea/decision_maker/default.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/decision_maker/gop.py b/aea/decision_maker/gop.py index 826da8fbaf..911f8b34e1 100644 --- a/aea/decision_maker/gop.py +++ b/aea/decision_maker/gop.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/decision_maker/scaffold.py b/aea/decision_maker/scaffold.py index 30615b47e2..1ecd7bdd88 100644 --- a/aea/decision_maker/scaffold.py +++ b/aea/decision_maker/scaffold.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/error_handler/__init__.py b/aea/error_handler/__init__.py index c5d9690eb3..34f71df870 100644 --- a/aea/error_handler/__init__.py +++ b/aea/error_handler/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/error_handler/base.py b/aea/error_handler/base.py index 19b6708ec9..d2f1c4ce8c 100644 --- a/aea/error_handler/base.py +++ b/aea/error_handler/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/error_handler/default.py b/aea/error_handler/default.py index 6502983218..c690717548 100644 --- a/aea/error_handler/default.py +++ b/aea/error_handler/default.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/error_handler/scaffold.py b/aea/error_handler/scaffold.py index af56314b11..18cc5fe684 100644 --- a/aea/error_handler/scaffold.py +++ b/aea/error_handler/scaffold.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/exceptions.py b/aea/exceptions.py index a2a880795b..ec24ee4ce7 100644 --- a/aea/exceptions.py +++ b/aea/exceptions.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/__init__.py b/aea/helpers/__init__.py index 159779d8a0..b6ca26876e 100644 --- a/aea/helpers/__init__.py +++ b/aea/helpers/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/acn/__init__.py b/aea/helpers/acn/__init__.py index efa8ffb81d..271e753fd0 100644 --- a/aea/helpers/acn/__init__.py +++ b/aea/helpers/acn/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/acn/agent_record.py b/aea/helpers/acn/agent_record.py index 9d71f2a8d9..f878db6c20 100644 --- a/aea/helpers/acn/agent_record.py +++ b/aea/helpers/acn/agent_record.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/acn/uri.py b/aea/helpers/acn/uri.py index c3d91329ef..334d31c1e4 100644 --- a/aea/helpers/acn/uri.py +++ b/aea/helpers/acn/uri.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/async_friendly_queue.py b/aea/helpers/async_friendly_queue.py index f1f17f1427..c764ac4756 100644 --- a/aea/helpers/async_friendly_queue.py +++ b/aea/helpers/async_friendly_queue.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/async_utils.py b/aea/helpers/async_utils.py index 265a4f0129..bca63f9493 100644 --- a/aea/helpers/async_utils.py +++ b/aea/helpers/async_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/base.py b/aea/helpers/base.py index 453ef3b5d4..7f260bde10 100644 --- a/aea/helpers/base.py +++ b/aea/helpers/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/constants.py b/aea/helpers/constants.py index e82b2a1172..7c38f8002c 100644 --- a/aea/helpers/constants.py +++ b/aea/helpers/constants.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/env_vars.py b/aea/helpers/env_vars.py index 26d6180c72..b0c7acb06b 100644 --- a/aea/helpers/env_vars.py +++ b/aea/helpers/env_vars.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/exception_policy.py b/aea/helpers/exception_policy.py index 9f9c48f3a9..6697d44590 100644 --- a/aea/helpers/exception_policy.py +++ b/aea/helpers/exception_policy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/exec_timeout.py b/aea/helpers/exec_timeout.py index d709b997b6..e8216195a9 100644 --- a/aea/helpers/exec_timeout.py +++ b/aea/helpers/exec_timeout.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/file_io.py b/aea/helpers/file_io.py index b5052d6206..047db2be4f 100644 --- a/aea/helpers/file_io.py +++ b/aea/helpers/file_io.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/file_lock.py b/aea/helpers/file_lock.py index 29aac82546..8a5632e587 100644 --- a/aea/helpers/file_lock.py +++ b/aea/helpers/file_lock.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/http_requests.py b/aea/helpers/http_requests.py index f5fb88a4aa..0068c7beb9 100644 --- a/aea/helpers/http_requests.py +++ b/aea/helpers/http_requests.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/install_dependency.py b/aea/helpers/install_dependency.py index 4d9d91523a..2a6eb2aff3 100644 --- a/aea/helpers/install_dependency.py +++ b/aea/helpers/install_dependency.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/io.py b/aea/helpers/io.py index 9a649fc754..60df2da545 100644 --- a/aea/helpers/io.py +++ b/aea/helpers/io.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/ipfs/__init__.py b/aea/helpers/ipfs/__init__.py index bf4c75feaf..01c95da837 100644 --- a/aea/helpers/ipfs/__init__.py +++ b/aea/helpers/ipfs/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/ipfs/base.py b/aea/helpers/ipfs/base.py index baf365263d..cb3bda41ff 100644 --- a/aea/helpers/ipfs/base.py +++ b/aea/helpers/ipfs/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/ipfs/pb/__init__.py b/aea/helpers/ipfs/pb/__init__.py index 159779d8a0..b6ca26876e 100644 --- a/aea/helpers/ipfs/pb/__init__.py +++ b/aea/helpers/ipfs/pb/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/ipfs/utils.py b/aea/helpers/ipfs/utils.py index efaa2986aa..3ff6ff00ad 100644 --- a/aea/helpers/ipfs/utils.py +++ b/aea/helpers/ipfs/utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/logging.py b/aea/helpers/logging.py index b90bd2d9c4..9230824a95 100644 --- a/aea/helpers/logging.py +++ b/aea/helpers/logging.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/multiaddr/__init__.py b/aea/helpers/multiaddr/__init__.py index 469275834f..33b0e9e9e7 100644 --- a/aea/helpers/multiaddr/__init__.py +++ b/aea/helpers/multiaddr/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/multiaddr/base.py b/aea/helpers/multiaddr/base.py index 79d1c03c23..7385c47b6a 100644 --- a/aea/helpers/multiaddr/base.py +++ b/aea/helpers/multiaddr/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/multiple_executor.py b/aea/helpers/multiple_executor.py index 2f17e4e969..b148b81fa4 100644 --- a/aea/helpers/multiple_executor.py +++ b/aea/helpers/multiple_executor.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/pipe.py b/aea/helpers/pipe.py index 6edb8f3b96..e9a7657793 100644 --- a/aea/helpers/pipe.py +++ b/aea/helpers/pipe.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/preference_representations/__init__.py b/aea/helpers/preference_representations/__init__.py index e112fb0362..5093c10adc 100644 --- a/aea/helpers/preference_representations/__init__.py +++ b/aea/helpers/preference_representations/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/preference_representations/base.py b/aea/helpers/preference_representations/base.py index 0bb05ae6f6..1757f29058 100644 --- a/aea/helpers/preference_representations/base.py +++ b/aea/helpers/preference_representations/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/profiling.py b/aea/helpers/profiling.py index 3a401cb457..eab4979b85 100644 --- a/aea/helpers/profiling.py +++ b/aea/helpers/profiling.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/search/__init__.py b/aea/helpers/search/__init__.py index d9b0f9e633..7c840809f1 100644 --- a/aea/helpers/search/__init__.py +++ b/aea/helpers/search/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/search/generic.py b/aea/helpers/search/generic.py index 5e8188af0e..030ed13dea 100644 --- a/aea/helpers/search/generic.py +++ b/aea/helpers/search/generic.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/search/models.py b/aea/helpers/search/models.py index 34ab644f91..c50048ab36 100644 --- a/aea/helpers/search/models.py +++ b/aea/helpers/search/models.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/serializers.py b/aea/helpers/serializers.py index 80acb2132b..bf304a8c00 100644 --- a/aea/helpers/serializers.py +++ b/aea/helpers/serializers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/storage/__init__.py b/aea/helpers/storage/__init__.py index 0e7c44c239..8f8cffbfc4 100644 --- a/aea/helpers/storage/__init__.py +++ b/aea/helpers/storage/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/storage/backends/__init__.py b/aea/helpers/storage/backends/__init__.py index f64430dd79..5b1ba667c7 100644 --- a/aea/helpers/storage/backends/__init__.py +++ b/aea/helpers/storage/backends/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/storage/backends/base.py b/aea/helpers/storage/backends/base.py index 3e4f59d1a0..c443423c59 100644 --- a/aea/helpers/storage/backends/base.py +++ b/aea/helpers/storage/backends/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/storage/backends/sqlite.py b/aea/helpers/storage/backends/sqlite.py index abbbee5f20..1a74247e41 100644 --- a/aea/helpers/storage/backends/sqlite.py +++ b/aea/helpers/storage/backends/sqlite.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/storage/generic_storage.py b/aea/helpers/storage/generic_storage.py index 84d1e19b06..3a0100f2de 100644 --- a/aea/helpers/storage/generic_storage.py +++ b/aea/helpers/storage/generic_storage.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/sym_link.py b/aea/helpers/sym_link.py index d3011d77d0..5d3e68cb82 100644 --- a/aea/helpers/sym_link.py +++ b/aea/helpers/sym_link.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/transaction/__init__.py b/aea/helpers/transaction/__init__.py index a512fbf65b..d52595a38c 100644 --- a/aea/helpers/transaction/__init__.py +++ b/aea/helpers/transaction/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/transaction/base.py b/aea/helpers/transaction/base.py index 235085072c..c1eb2a196c 100644 --- a/aea/helpers/transaction/base.py +++ b/aea/helpers/transaction/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/win32.py b/aea/helpers/win32.py index 72560b32ba..80e0b356cf 100644 --- a/aea/helpers/win32.py +++ b/aea/helpers/win32.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/helpers/yaml_utils.py b/aea/helpers/yaml_utils.py index 3036d72145..a1b6a6d49f 100644 --- a/aea/helpers/yaml_utils.py +++ b/aea/helpers/yaml_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/identity/__init__.py b/aea/identity/__init__.py index d059f3eb55..dc28887b1c 100644 --- a/aea/identity/__init__.py +++ b/aea/identity/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/identity/base.py b/aea/identity/base.py index 2776618f97..db3669a424 100644 --- a/aea/identity/base.py +++ b/aea/identity/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/launcher.py b/aea/launcher.py index 289c2c2129..edceb9a111 100644 --- a/aea/launcher.py +++ b/aea/launcher.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/mail/__init__.py b/aea/mail/__init__.py index c70fcf54e9..e21db8a17e 100644 --- a/aea/mail/__init__.py +++ b/aea/mail/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/mail/base.py b/aea/mail/base.py index 30e42e6ae3..41ca53ff31 100644 --- a/aea/mail/base.py +++ b/aea/mail/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/manager/__init__.py b/aea/manager/__init__.py index f42ec6cc43..d45eaab395 100644 --- a/aea/manager/__init__.py +++ b/aea/manager/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/manager/manager.py b/aea/manager/manager.py index cb50d3a5d7..6b75cd16e2 100644 --- a/aea/manager/manager.py +++ b/aea/manager/manager.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/manager/project.py b/aea/manager/project.py index 792e8cb7a5..65b4253501 100644 --- a/aea/manager/project.py +++ b/aea/manager/project.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/manager/utils.py b/aea/manager/utils.py index 6e837ed86e..6bb9fd04c4 100644 --- a/aea/manager/utils.py +++ b/aea/manager/utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/multiplexer.py b/aea/multiplexer.py index 2453b4455b..733317bebf 100644 --- a/aea/multiplexer.py +++ b/aea/multiplexer.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/__init__.py b/aea/protocols/__init__.py index 43fb466153..c63b3288a9 100644 --- a/aea/protocols/__init__.py +++ b/aea/protocols/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/base.py b/aea/protocols/base.py index f3606cd1c4..5009dabd48 100644 --- a/aea/protocols/base.py +++ b/aea/protocols/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/dialogue/__init__.py b/aea/protocols/dialogue/__init__.py index 41d3e3f2c4..a5f8ed203c 100644 --- a/aea/protocols/dialogue/__init__.py +++ b/aea/protocols/dialogue/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/dialogue/base.py b/aea/protocols/dialogue/base.py index 2e77ae71e5..7ffd911352 100644 --- a/aea/protocols/dialogue/base.py +++ b/aea/protocols/dialogue/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/generator/__init__.py b/aea/protocols/generator/__init__.py index fd51681ebe..f6fc8e871a 100644 --- a/aea/protocols/generator/__init__.py +++ b/aea/protocols/generator/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/generator/base.py b/aea/protocols/generator/base.py index 5e0b28cdc9..182403e7d8 100644 --- a/aea/protocols/generator/base.py +++ b/aea/protocols/generator/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/generator/common.py b/aea/protocols/generator/common.py index 2b07539e49..dd5377a049 100644 --- a/aea/protocols/generator/common.py +++ b/aea/protocols/generator/common.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/generator/extract_specification.py b/aea/protocols/generator/extract_specification.py index c9e856efdb..e64c439b6c 100644 --- a/aea/protocols/generator/extract_specification.py +++ b/aea/protocols/generator/extract_specification.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/generator/validate.py b/aea/protocols/generator/validate.py index 2c79314a58..cf475d9af7 100644 --- a/aea/protocols/generator/validate.py +++ b/aea/protocols/generator/validate.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/scaffold/__init__.py b/aea/protocols/scaffold/__init__.py index 3ce52e6a1c..8b6d295668 100644 --- a/aea/protocols/scaffold/__init__.py +++ b/aea/protocols/scaffold/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/scaffold/message.py b/aea/protocols/scaffold/message.py index af12aa4cf6..44291389e9 100644 --- a/aea/protocols/scaffold/message.py +++ b/aea/protocols/scaffold/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/protocols/scaffold/protocol.yaml b/aea/protocols/scaffold/protocol.yaml index 63c8bafc01..f31521966c 100644 --- a/aea/protocols/scaffold/protocol.yaml +++ b/aea/protocols/scaffold/protocol.yaml @@ -7,8 +7,8 @@ license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' protocol_specification_id: fetchai/scaffold:0.1.0 fingerprint: - __init__.py: QmYkkue6aaMZGWWTScCtpnP2M1bB9VnBe7qfc6AFxFdjhR - message.py: QmfNTLAPpPczf9Vvz9Q9Pbu92fi7YbV4Rfcmc3VanhxWvX - serialization.py: QmbczbN3YRTF9hY2VnWy2PdPsyirwPM9Spkk65NAtWL45Q + __init__.py: QmV67bUSsM7YErJJ3WgQb12zumYurryUn5MAJEeo4hJayu + message.py: QmYHZFdU9TVJNuXVmUX8Hw6nZ2uWU9SnpjeVBR1Qg8tQrf + serialization.py: QmW4HLfpGe4RXeeYZqVsoSoNJghJXVkDqq8TD4p7iqgXmG fingerprint_ignore_patterns: [] dependencies: {} diff --git a/aea/protocols/scaffold/serialization.py b/aea/protocols/scaffold/serialization.py index 553a3e79ba..dfdd46c88b 100644 --- a/aea/protocols/scaffold/serialization.py +++ b/aea/protocols/scaffold/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/registries/__init__.py b/aea/registries/__init__.py index 988a675638..26b0f2c125 100644 --- a/aea/registries/__init__.py +++ b/aea/registries/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/registries/base.py b/aea/registries/base.py index 2955f44c88..8cbeed6422 100644 --- a/aea/registries/base.py +++ b/aea/registries/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/registries/filter.py b/aea/registries/filter.py index 4b77e7a03d..e13aa51357 100644 --- a/aea/registries/filter.py +++ b/aea/registries/filter.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/registries/resources.py b/aea/registries/resources.py index 636e69a59d..ff138a3ea0 100644 --- a/aea/registries/resources.py +++ b/aea/registries/resources.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/runner.py b/aea/runner.py index 25c78a19de..044c5e1a3d 100644 --- a/aea/runner.py +++ b/aea/runner.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/runtime.py b/aea/runtime.py index 6b2269ebc9..ef93e62125 100644 --- a/aea/runtime.py +++ b/aea/runtime.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/skills/__init__.py b/aea/skills/__init__.py index 6d4a843b06..4ddaf27b7e 100644 --- a/aea/skills/__init__.py +++ b/aea/skills/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/skills/base.py b/aea/skills/base.py index 2fbd6f4b18..e121f52fb8 100644 --- a/aea/skills/base.py +++ b/aea/skills/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/skills/behaviours.py b/aea/skills/behaviours.py index 9613065667..b2a482ab4a 100644 --- a/aea/skills/behaviours.py +++ b/aea/skills/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/skills/scaffold/__init__.py b/aea/skills/scaffold/__init__.py index f95627947f..600c4dc9a0 100644 --- a/aea/skills/scaffold/__init__.py +++ b/aea/skills/scaffold/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/skills/scaffold/behaviours.py b/aea/skills/scaffold/behaviours.py index b5cb4c4840..727a83fa1b 100644 --- a/aea/skills/scaffold/behaviours.py +++ b/aea/skills/scaffold/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/skills/scaffold/handlers.py b/aea/skills/scaffold/handlers.py index f314dfd98f..f0aa78bc39 100644 --- a/aea/skills/scaffold/handlers.py +++ b/aea/skills/scaffold/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/skills/scaffold/my_model.py b/aea/skills/scaffold/my_model.py index fda1c79332..82f6884093 100644 --- a/aea/skills/scaffold/my_model.py +++ b/aea/skills/scaffold/my_model.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/skills/scaffold/skill.yaml b/aea/skills/scaffold/skill.yaml index db89950edc..db6c52d376 100644 --- a/aea/skills/scaffold/skill.yaml +++ b/aea/skills/scaffold/skill.yaml @@ -6,10 +6,10 @@ description: The scaffold skill is a scaffold for your own skill implementation. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - __init__.py: QmcvsRz9pVCQyuLMtYDZQMtMWvPFETaEEjU8uxj89bCJ8e - behaviours.py: QmPQ9Kpi5D9YzBjAyDJCYFgpEV3woK96r5XoWeEjCg7ykY - handlers.py: QmR3r66fxGKgjx3sCfFbbqMZFwFYcookmvSxpbEVgfEjqX - my_model.py: QmPtP2C6iqNpvtRMDrLgr9NVwnunm4MzVzB68Xdktw6Cfr + __init__.py: QmcZ7oz5k3TiyMAxHsGCXP5UGQA9FCqcXuBFYqEmwP7Kym + behaviours.py: QmTHQWGuBgc8YjVVLzqnFwVUZNmSsYUqMCRB2K8MJULkR5 + handlers.py: QmSjtqfb5KB9afc3WDgC9V8C8vw1u8DpupKU6WYHTURUej + my_model.py: QmbHTbagGPb3EFfBs4wLNbA7BiY7r2qtxYiq4WpVSYXbFf fingerprint_ignore_patterns: [] connections: [] contracts: [] diff --git a/aea/skills/tasks.py b/aea/skills/tasks.py index 939b054511..7edc82c5f1 100644 --- a/aea/skills/tasks.py +++ b/aea/skills/tasks.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/test_tools/__init__.py b/aea/test_tools/__init__.py index 2f4d052c2e..209b88e575 100644 --- a/aea/test_tools/__init__.py +++ b/aea/test_tools/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/test_tools/click_testing.py b/aea/test_tools/click_testing.py index b99663ecd7..3dbc06184d 100644 --- a/aea/test_tools/click_testing.py +++ b/aea/test_tools/click_testing.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/test_tools/constants.py b/aea/test_tools/constants.py index a8a4c4a60e..1eda2f809a 100644 --- a/aea/test_tools/constants.py +++ b/aea/test_tools/constants.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/test_tools/exceptions.py b/aea/test_tools/exceptions.py index b6eb22c95c..943b05400a 100644 --- a/aea/test_tools/exceptions.py +++ b/aea/test_tools/exceptions.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/test_tools/generic.py b/aea/test_tools/generic.py index ca6e0a14cd..0f5f8c36a2 100644 --- a/aea/test_tools/generic.py +++ b/aea/test_tools/generic.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/test_tools/test_cases.py b/aea/test_tools/test_cases.py index 823b084edb..35539039fe 100644 --- a/aea/test_tools/test_cases.py +++ b/aea/test_tools/test_cases.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/test_tools/test_contract.py b/aea/test_tools/test_contract.py index 3200fc2069..2e2ada86a8 100644 --- a/aea/test_tools/test_contract.py +++ b/aea/test_tools/test_contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/aea/test_tools/test_skill.py b/aea/test_tools/test_skill.py index f24efd7637..3c440d59b7 100644 --- a/aea/test_tools/test_skill.py +++ b/aea/test_tools/test_skill.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/README.md b/benchmark/README.md index 5cc76cbeb3..a08b684163 100644 --- a/benchmark/README.md +++ b/benchmark/README.md @@ -1,15 +1,19 @@ +# Benchmarks -# Running a benchmark locally: +## Running a benchmark locally First, set permissions: + ``` bash chmod +x /benchmark/checks/run_benchmark.sh ``` Then, run: + ``` bash ./benchmark/checks/run_benchmark.sh ``` + or to save to file: ``` bash @@ -18,10 +22,10 @@ or to save to file: The benchmark will use the locally installed AEA version! - -# Deploying a benchmark run and serving results: +## Deploying a benchmark run and serving results First remove any old configuration maps and create a new one: + ``` bash kubectl delete configmap run-benchmark kubectl create configmap run-benchmark --from-file=run_from_branch.sh @@ -51,11 +55,14 @@ List pods: kubectl get pod -o wide ``` -To access NGINX (wait for status: ` `): +To access NGINX (wait for status: ``): + ``` bash kubectl port-forward NODE_NAME 8000:80 ``` + then + ``` bash curl localhost:8000 | tee results.txt -``` \ No newline at end of file +``` diff --git a/benchmark/__init__.py b/benchmark/__init__.py index 9b72f74277..df1eabf6b0 100644 --- a/benchmark/__init__.py +++ b/benchmark/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/cases/__init__.py b/benchmark/cases/__init__.py index a861766963..50558e20a4 100644 --- a/benchmark/cases/__init__.py +++ b/benchmark/cases/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/cases/cpu_burn.py b/benchmark/cases/cpu_burn.py index 5916290c1d..398ce97c50 100644 --- a/benchmark/cases/cpu_burn.py +++ b/benchmark/cases/cpu_burn.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/cases/helpers/__init__.py b/benchmark/cases/helpers/__init__.py index ada06e4ffd..c09dfa006e 100644 --- a/benchmark/cases/helpers/__init__.py +++ b/benchmark/cases/helpers/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/cases/helpers/dummy_handler.py b/benchmark/cases/helpers/dummy_handler.py index 954d038cd3..83ab1a6955 100644 --- a/benchmark/cases/helpers/dummy_handler.py +++ b/benchmark/cases/helpers/dummy_handler.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/cases/react_multi_agents_fake_connection.py b/benchmark/cases/react_multi_agents_fake_connection.py index a37b1e4109..7a730124f7 100644 --- a/benchmark/cases/react_multi_agents_fake_connection.py +++ b/benchmark/cases/react_multi_agents_fake_connection.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/cases/react_speed_in_loop.py b/benchmark/cases/react_speed_in_loop.py index 2405a899fe..b745c5c9d0 100644 --- a/benchmark/cases/react_speed_in_loop.py +++ b/benchmark/cases/react_speed_in_loop.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/cases/react_speed_multi_agents.py b/benchmark/cases/react_speed_multi_agents.py index fcb69cd1ce..c50d66ab1c 100644 --- a/benchmark/cases/react_speed_multi_agents.py +++ b/benchmark/cases/react_speed_multi_agents.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/checks/__init__.py b/benchmark/checks/__init__.py index 9a06507217..f57a2987d9 100644 --- a/benchmark/checks/__init__.py +++ b/benchmark/checks/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/checks/check_agent_construction_time.py b/benchmark/checks/check_agent_construction_time.py index 22b60d051d..7b7aa06c1f 100755 --- a/benchmark/checks/check_agent_construction_time.py +++ b/benchmark/checks/check_agent_construction_time.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/checks/check_decision_maker.py b/benchmark/checks/check_decision_maker.py index 6f3454ce05..b42c35b5f8 100755 --- a/benchmark/checks/check_decision_maker.py +++ b/benchmark/checks/check_decision_maker.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/checks/check_dialogues_memory_usage.py b/benchmark/checks/check_dialogues_memory_usage.py index d9243f0ac3..0758b32ec6 100755 --- a/benchmark/checks/check_dialogues_memory_usage.py +++ b/benchmark/checks/check_dialogues_memory_usage.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/checks/check_mem_usage.py b/benchmark/checks/check_mem_usage.py index 17aac12fbf..185793abe3 100755 --- a/benchmark/checks/check_mem_usage.py +++ b/benchmark/checks/check_mem_usage.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/checks/check_messages_memory_usage.py b/benchmark/checks/check_messages_memory_usage.py index 4f67d5d82c..70749bd8a2 100755 --- a/benchmark/checks/check_messages_memory_usage.py +++ b/benchmark/checks/check_messages_memory_usage.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/checks/check_multiagent.py b/benchmark/checks/check_multiagent.py index d8ae22666a..0c3976f7b8 100755 --- a/benchmark/checks/check_multiagent.py +++ b/benchmark/checks/check_multiagent.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/checks/check_multiagent_http_dialogues.py b/benchmark/checks/check_multiagent_http_dialogues.py index c1f83762a0..263002125f 100755 --- a/benchmark/checks/check_multiagent_http_dialogues.py +++ b/benchmark/checks/check_multiagent_http_dialogues.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/checks/check_proactive.py b/benchmark/checks/check_proactive.py index 1dce1be288..391a2d91a3 100755 --- a/benchmark/checks/check_proactive.py +++ b/benchmark/checks/check_proactive.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/checks/check_reactive.py b/benchmark/checks/check_reactive.py index 5a6720236f..cafe5a799d 100755 --- a/benchmark/checks/check_reactive.py +++ b/benchmark/checks/check_reactive.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/checks/utils.py b/benchmark/checks/utils.py index 6681c41aaa..2749b82241 100644 --- a/benchmark/checks/utils.py +++ b/benchmark/checks/utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/framework/__init__.py b/benchmark/framework/__init__.py index 9b72f74277..df1eabf6b0 100644 --- a/benchmark/framework/__init__.py +++ b/benchmark/framework/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/framework/aea_test_wrapper.py b/benchmark/framework/aea_test_wrapper.py index 4ca4e97251..5baa8b79b2 100644 --- a/benchmark/framework/aea_test_wrapper.py +++ b/benchmark/framework/aea_test_wrapper.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/framework/benchmark.py b/benchmark/framework/benchmark.py index a847e50fcd..48f9b35bb6 100644 --- a/benchmark/framework/benchmark.py +++ b/benchmark/framework/benchmark.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/framework/cli.py b/benchmark/framework/cli.py index b6c8ff5e39..0872702bc6 100644 --- a/benchmark/framework/cli.py +++ b/benchmark/framework/cli.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/framework/executor.py b/benchmark/framework/executor.py index d018abda24..d812654132 100644 --- a/benchmark/framework/executor.py +++ b/benchmark/framework/executor.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/framework/fake_connection.py b/benchmark/framework/fake_connection.py index 29c5368960..0b2a8ec815 100644 --- a/benchmark/framework/fake_connection.py +++ b/benchmark/framework/fake_connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/framework/func_details.py b/benchmark/framework/func_details.py index ac6d3ee9e4..c1e5058441 100644 --- a/benchmark/framework/func_details.py +++ b/benchmark/framework/func_details.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/benchmark/framework/report_printer.py b/benchmark/framework/report_printer.py index 282a0e1f76..1e151fbe7d 100644 --- a/benchmark/framework/report_printer.py +++ b/benchmark/framework/report_printer.py @@ -1,6 +1,6 @@ # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/deploy-image/README.md b/deploy-image/README.md index 896e85a69f..7c6de6d899 100644 --- a/deploy-image/README.md +++ b/deploy-image/README.md @@ -23,14 +23,14 @@ Second, review the `entrypoint.sh` script to make sure you supply the agent with Importantly, do not add any private keys during the build step! Third, create a local `.env` file with the relevant environment variables: -``` + +``` bash AGENT_PRIV_KEY=hex_key_here CONNECTION_PRIV_KEY=hex_key_here ``` Finally, if required, modify the `Dockerfile` to expose any ports needed by the AEA. (The default example does not require this.) - ### Build the image ``` bash @@ -47,5 +47,4 @@ To stop, use `docker ps` to find the container id and then `docker stop CONTAINE ## Advanced usage and comments -- The above approach implies that key files remain in the container. To avoid this, a static volume can be mounted with the key files in it (https://docs.docker.com/get-started/06_bind_mounts/). - +- The above approach implies that key files remain in the container. To avoid this, a static volume can be mounted with the key files in it (). diff --git a/deploy-image/packages/__init__.py b/deploy-image/packages/__init__.py index 8a394679c2..a8ed758ec3 100644 --- a/deploy-image/packages/__init__.py +++ b/deploy-image/packages/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/develop-image/README.md b/develop-image/README.md index 8c2b571355..f562b3f1a1 100644 --- a/develop-image/README.md +++ b/develop-image/README.md @@ -4,110 +4,132 @@ All the commands must be executed from the parent directory, if not stated other ## Build - ./develop-image/scripts/docker-build-img.sh -t fetchai/aea-deploy:latest -- - +``` bash +./develop-image/scripts/docker-build-img.sh -t fetchai/aea-deploy:latest -- +``` To pass immediate parameters to the `docker build` command: - ./develop-image/scripts/docker-build-img.sh arg1 arg2 -- +``` bash +./develop-image/scripts/docker-build-img.sh arg1 arg2 -- +``` E.g.: - ./develop-image/scripts/docker-build-img.sh --squash --cpus 4 --compress -- - +``` bash +./develop-image/scripts/docker-build-img.sh --squash --cpus 4 --compress -- +``` ## Run - ./develop-image/scripts/docker-run.sh -- /bin/bash - -As before, to pass parameters to the `docker run` command: +``` bash +./develop-image/scripts/docker-run.sh -- /bin/bash +``` - ./develop-image/scripts/docker-run.sh -p 8080:80 -- /bin/bash +As before, to pass parameters to the `docker run` command: +``` bash +./develop-image/scripts/docker-run.sh -p 8080:80 -- /bin/bash +``` ## Publish -First, be sure you tagged the image with the `latest` tag: +First, be sure you tagged the image with the `latest` tag: - docker tag fetchai/aea-develop: fetchai/aea-develop:latest +``` bash +docker tag fetchai/aea-develop: fetchai/aea-develop:latest +``` Then, publish the images. First, the `fetchai/aea-develop:` - ./develop-image/scripts/docker-publish-img.sh +``` bash +./develop-image/scripts/docker-publish-img.sh +``` And then, the `fetchai/aea-develop:latest` image: - In `docker-env.sh`, uncomment `DOCKER_IMAGE_TAG=fetchai/aea-develop:latest` -- Run the publish command again: +- Run the publish command again: - ./develop-image/scripts/docker-publish-img.sh + ``` bash + ./develop-image/scripts/docker-publish-img.sh + ``` -# Publish to k8s +### Publish to k8s Switch the context: -``` bash + +``` shell kubectx sandbox ``` List pods in cluster: -``` bash + +``` shell kubectl get pods ``` Optionally, create new namespace: -``` bash + +``` shell kubectl create namespace aea-research ``` Ensure right namespace is used: -``` bash + +``` shell kubens aea-research ``` + Choose namespace in cluster: -``` bash + +``` shell kubens aea-research ``` + To enter selected namespace: -``` bash + +``` shell kubens ``` From the `develop-image` folder run: -``` bash + +``` shell skaffold run -p sandbox ``` SSH into a new image: -``` bash + +``` shell kubectl run --generator=run-pod/v1 -it debian --image=debian -- bash ``` -# Dedicated node pool for benchmarking agents +## Dedicated node pool for benchmarking agents - -## Setup and tear down +### Setup and tear down To create the node pool -``` bash + +``` shell gcloud container node-pools create agent-test-pool --cluster sandbox --project fetch-ai-sandbox --node-taints dedicated=agent:NoSchedule --machine-type=n1-standard-4 --num-nodes=1 --enable-autoscaling --node-labels=type=agent-test --max-nodes=1 --min-nodes=0 ``` -To remove the node pool -``` bash + +To remove the node pool + +``` shell gcloud container node-pools delete agent-test-pool --cluster sandbox --project fetch-ai-sandbox ``` -## Usage +### Usage List pods -``` bash +``` shell kubectl get pod -o wide ``` -``` bash +``` shell kubectl exec -it NAME -- bash ``` - - - diff --git a/develop-image/scripts b/develop-image/scripts deleted file mode 120000 index 179f9f57c9..0000000000 --- a/develop-image/scripts +++ /dev/null @@ -1 +0,0 @@ -../docker-images/scripts \ No newline at end of file diff --git a/develop-image/scripts/docker-build-img.sh b/develop-image/scripts/docker-build-img.sh new file mode 100644 index 0000000000..3629c267bf --- /dev/null +++ b/develop-image/scripts/docker-build-img.sh @@ -0,0 +1,41 @@ +#!/bin/bash -e +# Usage: +# ./docker-build-img.sh -- +# Where: +# * resulting docker build commandline will be: +# docker build $IMMEDIATE_PARAMS -t $DOCKER_IMAGE_TAG $TAIL_PARAMS $DOCKER_BUILD_CONTEXT_DIR +# * DOCKER_IMAGE_TAG and DOCKER_BUILD_CONTEXT_DIR variables are defined in the `docker-env.sh` and/or `docker-env-common.sh` +# +# Examples: +# * the following example provides the `--cpus 4 --compress` parameters to `docker build` command as IMMEDIATE_PARAMS, **ommiting** the TAIL_PARAMS: +# +# ./docker-build-img.sh --cpus 4 ---compress -- +# # the the resulting docker process commandline will be: +# # docker build --cpus 4 --compress -t $DOCKER_IMAGE_TAG $TAIL_PARAMS $DOCKER_BUILD_CONTEXT_DIR +# +# * the following example provides the `--squash` parameters to `docker build` command as IMMEDIATE_PARAMS, and `../../` parameter as TAIL_PARAMS (what corresponds to the context directory, what also means that DOCKER_BUILD_CONTEXT_DIR variable needs to be unset or set to empty string in the `docker-env.sh`): +# +# ./docker-build-img.sh --squash -- ../../ +# # the the resulting docker process commandline will be: +# # docker build --squash -t $DOCKER_IMAGE_TAG ../../ $DOCKER_BUILD_CONTEXT_DIR +# # the `DOCKER_BUILD_CONTEXT_DIR` shall be set to empty string in `docker-env.sh` file. +# NOTE: For more details, please see description for the `split_params()` shell function in the `docker-common.sh` script. + +SCRIPTS_DIR=${0%/*} +. "$SCRIPTS_DIR"/docker-env-common.sh + +docker_build_callback() { + local IMMEDIATE_PARAMS="$1" + local TAIL_PARAMS="$2" + + if [ -n "${DOCKERFILE}" ]; then + TAIL_PARAMS="-f $DOCKERFILE $TAIL_PARAMS" + fi + + local COMMAND="docker build $IMMEDIATE_PARAMS -t $DOCKER_IMAGE_TAG $TAIL_PARAMS $DOCKER_BUILD_CONTEXT_DIR" + + echo $COMMAND + $COMMAND +} + +split_params docker_build_callback "$@" diff --git a/develop-image/scripts/docker-publish-img.sh b/develop-image/scripts/docker-publish-img.sh new file mode 100644 index 0000000000..4f9dab93db --- /dev/null +++ b/develop-image/scripts/docker-publish-img.sh @@ -0,0 +1,13 @@ +#!/bin/bash -e +# NOTE: First docker needs to be authorized to push image to container registry. +# Normally this is done using 'docker login ', where the +# 'registry_url' value is set in the $DOCKER_CONTAINER_REGISTRY environment +# variable which is defined in the 'docker-env-common.sh' script file. +# If you are using the Google cloud docker registry, please run the +# 'gcloud auth configure-docker' instead. + +SCRIPTS_DIR=${0%/*} +. "$SCRIPTS_DIR"/docker-env-common.sh + +docker tag "$DOCKER_IMAGE_TAG" "$REGISTRY_DOCKER_IMAGE_TAG" +docker push "$REGISTRY_DOCKER_IMAGE_TAG" diff --git a/docker-images b/docker-images deleted file mode 160000 index ce903f0844..0000000000 --- a/docker-images +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ce903f08447aafc935d62ffbde29d9900d57f2eb diff --git a/docs/12-factor.md b/docs/12-factor.md index cf86a51074..c9f20a30b2 100644 --- a/docs/12-factor.md +++ b/docs/12-factor.md @@ -1,228 +1,131 @@ -# Relationship with the Twelve-Factor App methodology. +# Relationship with the Twelve-Factor App Methodology -The Twelve-Factor App is -a set of best practices to build modern -web applications, or *software-as-a-service*. +The Twelve-Factor App is a set of best practices to build modern web applications, or *software-as-a-service*. -In this section, we will see how the AEA framework -facilitates the achievement of those -in the development, release and deployment -phases of an AEA project. +In this section, we will see how the AEA framework facilitates the achievement of those in the development, release and deployment phases of an AEA project. -Note that an AEA instance, as a software agent, -can be seen as a more general case of a web app, -as it not only shows reactive behaviour, -but it is also *proactive*, depending -on the goals assigned to it. +Note that an AEA instance, as a software agent, can be seen as a more general case of a web app, as it not only shows reactive behaviour, but it is also *proactive*, depending on the goals assigned to it. ## Codebase -> One codebase tracked in revision control, many deploys +!!! info "Factor 1" + One codebase tracked in revision control, many deploys Support: Excellent -The framework does not impose any particular requirement -or convention on the type of version control -software to be used to store an AEA project. +The framework does not impose any particular requirement or convention on the type of version control software to be used to store an AEA project. ## Dependencies -> Explicitly declare and isolate dependencies +!!! info "Factor 2" + Explicitly declare and isolate dependencies Support: Good -The framework allows an AEA project to explicitly declare -the AEA package dependencies, and the PyPI dependencies -needed to proper working. - -However, it does not provide built-in support -for checking platform-specific dependencies, -e.g. specific Python version, or needed system-wide available libraries. -Nevertheless, this can be indirectly achieved -by means of build scripts called on `aea build`, -which can do the checks manually according to the specific -requirements of the project. +The framework allows an AEA project to explicitly declare the AEA package dependencies, and the PyPI dependencies needed to proper working. +However, it does not provide built-in support for checking platform-specific dependencies, e.g. specific Python version, or needed system-wide available libraries. Nevertheless, this can be indirectly achieved by means of build scripts called on `aea build`, which can do the checks manually according to the specific requirements of the project. ## Configuration -> Store configuration in the environment +!!! info "Factor 3" + Store configuration in the environment Support: Good -An AEA project can specify an environment configuration -file `.env`, stored in the project root, -that the framework will use to update -environment variables before the execution of the AEA instance. +An AEA project can specify an environment configuration file `.env`, stored in the project root, that the framework will use to update environment variables before the execution of the AEA instance. -The CLI tool command `aea run` accepts the option `--env PATH` -to change the default configuration file. -However, the framework does not -automatically switch between, nor allows to add, -different types of configuration files, one for each -deployment step (e.g. development, staging, production), -without using the `--env` option. +The CLI tool command `aea run` accepts the option `--env PATH` to change the default configuration file. However, the framework does not automatically switch between, nor allows to add, different types of configuration files, one for each deployment step (e.g. development, staging, production), without using the `--env` option. -## Backing services +## Backing Services -> Treat backing services as attached resources +!!! info "Factor 4" + Treat backing services as attached resources Support: Good -A persistent storage of an AEA can be seen -as an attached resource in the 12-factor terminology. -The default storage is SQLite, but the interface -`AbstractStorageBacked` allows to implement -specific wrappers to other backing services, -without changing the AEA project code. -The support for integrating -different storage back-end implementations in an AEA project -by using a plug-in mechanism is currently missing. - -Moreover, new adapters to backing services -can be implemented as custom connections, which -can connect to attached resources. -This does not usually requires a change -in the skill code, especially -in the case when a custom protocol -can abstract the details of the interaction with -the specific resource. +A persistent storage of an AEA can be seen as an attached resource in the 12-factor terminology. The default storage is SQLite, but the interface `AbstractStorageBacked` allows to implement specific wrappers to other backing services, without changing the AEA project code. The support for integrating different storage back-end implementations in an AEA project by using a plug-in mechanism is currently missing. +Moreover, new adapters to backing services can be implemented as custom connections, which can connect to attached resources. This does not usually require a change in the skill code, especially in the case when a custom protocol can abstract the details of the interaction with the specific resource. -## Build, release, run +## Build, Release, Run -> Strictly separate build and run stages +!!! info "Factor 5" + Strictly separate build and run stages Support: Excellent -The phases of build, release and run -of an AEA project are neatly separated, -both for programmatic usage -and through the usage of the CLI tool, -as each of them corresponds to different subcommands. +The phases of build, release and run of an AEA project are neatly separated, both for programmatic usage and through the usage of the CLI tool, as each of them corresponds to different subcommands. ## Processes -> Execute the app as one or more stateless processes +!!! info "Factor 6" + Execute the app as one or more stateless processes Support: Excellent -Whether the process is stateless depends on the specific AEA. -No strict enforcement is applied by the framework. -Moreover, dialogue histories can be stored -with persistent storage, if enabled by the developer. +Whether the process is stateless depends on the specific AEA. No strict enforcement is applied by the framework. Moreover, dialogue histories can be stored with persistent storage, if enabled by the developer. -## Port binding +## Port Binding -> Export services via port binding +!!! info "Factor 7" + Export services via port binding Support: Excellent -An AEA project may not need to expose services via HTTP. -This property depends on the specific choices of -the project developer, and the framework does not -impose any restriction. +An AEA project may not need to expose services via HTTP. This property depends on the specific choices of the project developer, and the framework does not impose any restriction. -One of the provided package, the "HTTP server" connection, -relies on `aiohttp`, which makes the connection completely -self-contained—therefore, it satisfies the requirement. +One of the provided package, the "HTTP server" connection, relies on `aiohttp`, which makes the connection completely self-contained—therefore, it satisfies the requirement. -Another relevant example is the ACN node, which -exposes its service to the Libp2p AEA connection +Another relevant example is the ACN node, which exposes its service to the Libp2p AEA connection ## Concurrency -> Scale out via the process model +!!! info "Factor 8" + Scale out via the process model Support: Not Supported -The framework does not easily allow to scale up an -AEA instance with multiple processes, -as it is bound to a process. -However, note that its attached services -can live in a different process, which could -give better scalability. +The framework does not easily allow to scale up an AEA instance with multiple processes, as it is bound to a process. However, note that its attached services can live in a different process, which could give better scalability. ## Disposability -> Maximize robustness with fast startup and graceful shutdown +!!! info "Factor 9" + Maximize robustness with fast startup and graceful shutdown Support: Good -Disposability of an AEA instance -depends, in general, on the AEA itself; -whether the connections can be quickly -connected and disconnected, -whether skills can be easily torn -down or not, whether other resources -can be detached successfully like -the persistent storage, -just to name a few examples. - -There has been put some effort into -reducing startup time, and to ensure -that a graceful shut down can happen -when the process receives a SIGTERM -under normal circumstances, -but robustness cannot be ensured for individual components, -as it depends on their implementation. - -Additionally, -the framework does provide some features to -control some aspects of AEA disposability, -e.g. the possibility to change -execution timeout for behaviours or handlers, -implementation of an effective exception propagation -from a component code to the main agent loop. - -## Dev/prod parity - -> Keep development, staging, and production as similar as possible +Disposability of an AEA instance depends, in general, on the AEA itself; whether the connections can be quickly connected and disconnected, whether skills can be easily torn down or not, whether other resources can be detached successfully like the persistent storage, just to name a few examples. + +There has been put some effort into reducing startup time, and to ensure that a graceful shut-down can happen when the process receives a SIGTERM under normal circumstances, but robustness cannot be ensured for individual components, as it depends on their implementation. + +Additionally, the framework does provide some features to control some aspects of AEA disposability, e.g. the possibility to change execution timeout for behaviours or handlers, implementation of an effective exception propagation from a component code to the main agent loop. + +## Dev/Prod Parity + +!!! info "Factor 10" + Keep development, staging, and production as similar as possible Support: Good -This aspect mostly depends on the specific AEA project, -and the framework does not impose particular restrictions -on best deployment practices (e.g. continuous integration, -same backing services between development -and production stages). +This aspect mostly depends on the specific AEA project, and the framework does not impose particular restrictions on best deployment practices (e.g. continuous integration, same backing services between development and production stages). ## Logs -> Treat logs as event streams +!!! info "Factor 11" + Treat logs as event streams Support: Excellent -Thanks to the seamless integration with the -Python standard library `logging`, -the developer or the deployer has great control -on the routing and filtering of log records. -The behaviour can be changed by providing -a proper configuration in the AEA project configuration file, -according to the standard library specification. -The framework facilitates this -by creating ad-hoc logger names that can be used -for finer-grained routing or filtering; -for example, each AEA instance uses its own -logging namespace to send logging events. -Integration with other log handlers -is delegated to extensions of the standard library, -hence not necessarily coupled with the AEA framework. - -## Admin processes - -> Run admin/management tasks as one-off processes +Thanks to the seamless integration with the Python standard library `logging`, the developer or the deployer has great control on the routing and filtering of log records. The behaviour can be changed by providing a proper configuration in the AEA project configuration file, according to the standard library specification. The framework facilitates this by creating ad-hoc logger names that can be used for finer-grained routing or filtering; for example, each AEA instance uses its own logging namespace to send logging events. Integration with other log handlers is delegated to extensions of the standard library, hence not necessarily coupled with the AEA framework. + +## Admin Processes + +!!! info "Factor 12" + Run admin/management tasks as one-off processes Support: Good -The CLI tool provides commands to -manage private keys and ledger related operations, and -it is possible to extend it with a plugin to manage databases of AEA's persistent storage -for maintenance operations. - -Moreover, the Python programming language -makes it easy to run one-off scripts or running a console -(also known as REPL) to do management tasks. -It follows that it is also easy to ensure -dependency isolation and same configurations -of the running AEA instance. +The CLI tool provides commands to manage private keys and ledger related operations, and it is possible to extend it with a plugin to manage databases of AEA's persistent storage for maintenance operations. + +Moreover, the Python programming language makes it easy to run one-off scripts or running a console (also known as REPL) to do management tasks. It follows that it is also easy to ensure dependency isolation and same configurations of the running AEA instance. diff --git a/docs/acn-internals.md b/docs/acn-internals.md index 5d16d212d2..41bd744edf 100644 --- a/docs/acn-internals.md +++ b/docs/acn-internals.md @@ -1,79 +1,50 @@ +# ACN Internals -The aim of this document is to describe at a high-level -the main implementation of the Agent Communication Network (ACN). +The aim of this document is to describe at a high-level the main implementation of the Agent Communication Network (ACN). In particular: -- the `libp2p_node` Golang library; -- the `p2p_libp2p` AEA connection, written in Python, that implements the _direct connection_ with an ACN peer; -- the `p2p_libp2p_client` AEA connection, written in Python, which implements the _delegate connection_ with an ACN peer. +- the `libp2p_node` Golang library; +- the `p2p_libp2p` AEA connection written in Python, that implements the **direct connection** with an ACN peer; +- the `p2p_libp2p_client` AEA connection written in Python, which implements the **delegate connection** with an ACN peer. -It is assumed the reader already knows what is the ACN and -its purposes; if not, we suggest reading this page. +It is assumed the reader already knows what is the ACN and its purposes; if not, we suggest reading this page. This documentation page is structured as follows: -- Firstly, the ACN protocol is described: all the messages -and data structures involved, as well as some example of interaction -protocol with these messages; -- Then, it is explained how a peer can join an existing ACN network, -and the message exchange involved; -- It follows the description of the journey of an envelope - in the ACN network: from the agent connection to its contact - peer, between ACN peers, and then from the contact peer of the - destination agent to the target agent; -- The following section describes the functionalities - of the AEA connections that allow to communicate through - the ACN: `fetchai/p2p_libp2p` and `fetchia/p2p_libp2p_delegate`; -- The documentation ends with a section of known issues and limitations - of the current implementation. +- Firstly, the ACN protocol is described: all the messages and data structures involved, as well as some example of interaction protocol with these messages; +- Then, it is explained how a peer can join an existing ACN network, and the message exchange involved; +- It follows the description of the journey of an envelope in the ACN network: from the agent connection to its contact peer, between ACN peers, and then from the contact peer of the destination agent to the target agent; +- The following section describes the functionalities of the AEA connections that allow to communicate through the ACN: `fetchai/p2p_libp2p` and `fetchia/p2p_libp2p_delegate`; +- The documentation ends with a section of known issues and limitations of the current implementation. ## Messages and Data Structures -At the foundation of the ACN there is the _ACN protocol_. -The protocol messages and the reply structure are generated from this -protocol specification, -using the protocol generator. -Therefore, it uses Protocol Buffers -as a serialization format, -and the definition of the data structures involved is defined in this -`.proto` file. +At the foundation of the ACN there is the _ACN protocol_. The protocol messages and the reply structure are generated from this protocol specification, using the protocol generator. Therefore, it uses Protocol Buffers as a serialization format, and the definition of the data structures involved is defined in this `.proto` file. -To know more about the protocol generator, refer to the relevant -section of the documentation: -Protocol Generator. +To know more about the protocol generator, refer to the relevant section of the documentation: Protocol Generator. ### Agent Record -An _agent record_ is a data structure containing information about an -agent and its Proof-of-Representation (PoR) to be used by a peer for other peers. -This data structure is used as a payload in other ACN messages (see below). +An _agent record_ is a data structure containing information about an agent and its Proof-of-Representation (PoR) to be used by a peer for other peers. This data structure is used as a payload in other ACN messages (see below). The `AgentRecord` data structure contains the following fields: - `service_id`: a string describing the service identifier. -- `ledger_id`: a string. It is the identifier of the ledger - this agent record is associated to. - Currently, the allowed values are: +- `ledger_id`: a string. It is the identifier of the ledger this agent record is associated to. Currently, the allowed values are: - `fetchai`, the identifier for the Fetch.AI ledger; - `ethereum`, the identifier for the Ethereum ledger; - `cosmos`, the identifier for the Cosmos ledger; -- `address`: a string. It is the public key of a public-private key pair. - It is used as an identifier for routing purposes. +- `address`: a string. It is the public key of a public-private key pair. It is used as an identifier for routing purposes. - `public_key`: a string. The representative's public key. Used in case of (PoR). - `peer_public_key`: a string. The public key of the peer. - `signature`: a string. The signature for PoR. -- `not_before`: a string. Specify the lower bound for certificate validity. - If it is a string, it must follow the format: `YYYY-MM-DD`. It will be interpreted as time zone UTC-0 -- `not_after`: a string. Specify the upper bound for certificate validity. - If it is a string, it must follow the format: `YYYY-MM-DD`. It will be interpreted as time zone UTC-0. - +- `not_before`: a string. Specify the lower bound for certificate validity. If it is a string, it must follow the format: `YYYY-MM-DD`. It will be interpreted as time zone UTC-0 +- `not_after`: a string. Specify the upper bound for certificate validity. If it is a string, it must follow the format: `YYYY-MM-DD`. It will be interpreted as time zone UTC-0. ### ACN Message -Entities in the ACN (i.e. either agents or peers) exchange _ACN messages_. -An ACN message contains a `payload` field, -which is the actual content of the message. +Entities in the ACN (i.e. either agents or peers) exchange _ACN messages_. An ACN message contains a `payload` field, which is the actual content of the message. There are different types of payloads: @@ -85,35 +56,24 @@ There are different types of payloads: ### Status -The `Status` payload is used as a response message to inform -the sender about the handling of certain requests. -The payload contains: +The `Status` payload is used as a response message to inform the sender about the handling of certain requests. The payload contains: -- the `status_code`, a positive integer among the ones in the - Protobuf file. +- the `status_code`, a positive integer among the ones in the Protobuf file. - a list of error messages (string). -A status code `0`, identified as `SUCCESS`, -means that the request has been processed successfully. -Status codes greater than `0` can be: +A status code `0`, identified as `SUCCESS`, means that the request has been processed successfully. Status codes greater than `0` can be: - Generic errors: errors that occur under generic circumstances. - - `ERROR_UNSUPPORTED_VERSION`, with integer value `1`: the receiver of the message - does not support the protocol version of the sender; - - `ERROR_UNEXPECTED_PAYLOAD`, with integer value `2`: the payload could not be - deserialised on the receiver side; + - `ERROR_UNSUPPORTED_VERSION`, with integer value `1`: the receiver of the message does not support the protocol version of the sender; + - `ERROR_UNEXPECTED_PAYLOAD`, with integer value `2`: the payload could not be deserialized on the receiver side; - `ERROR_GENERIC`, with integer value `3`: an internal error; - - `ERROR_SERIALIZATION`, with integer value `4`: a serialization error occurred - on the receiving end; + - `ERROR_SERIALIZATION`, with integer value `4`: a serialization error occurred on the receiving end; -- Register errors: errors that occur during agent registration operations in the ACN. +- Register errors: errors that occur during agent registration operations in the ACN. - - `ERROR_WRONG_AGENT_ADDRESS`, with integer value `10`: - the PoR by a peer from another peer does not match the destination address of - the envelope to be routed by the receiving peer. - - `ERROR_WRONG_PUBLIC_KEY`, with integer value `11`: the - representative peer public key does not match the one in the agent record; + - `ERROR_WRONG_AGENT_ADDRESS`, with integer value `10`: the PoR by a peer from another peer does not match the destination address of the envelope to be routed by the receiving peer. + - `ERROR_WRONG_PUBLIC_KEY`, with integer value `11`: the representative peer public key does not match the one in the agent record; - `ERROR_INVALID_PROOF`, with integer value `12`: the signature is invalid; - `ERROR_UNSUPPORTED_LEDGER`, with integer value `13`: the ledger of the PoR is not supported by the peer; @@ -122,26 +82,21 @@ Status codes greater than `0` can be: - `ERROR_UNKNOWN_AGENT_ADDRESS`, with integer value `20`: the requested agent address has not been found in the local DHT of the peer; - `ERROR_AGENT_NOT_READY`, with integer value `21`: the agent is not ready for envelope delivery. - ### Register -The `Register` payload is used to request a peer to register an agent among his known ones. -The payload contains the field `record`, which is an instance of `AgentRecord`. +The `Register` payload is used to request a peer to register an agent among his known ones. The payload contains the field `record`, which is an instance of `AgentRecord`. ### LookupRequest -The `LookupRequest` payload is sent between peer to look-up addresses in the Distributed Hash Table (DHT). -It contains the agent address (a string) that the sender needs to correctly route an envelope. +The `LookupRequest` payload is sent between peer to look-up addresses in the Distributed Hash Table (DHT). It contains the agent address (a string) that the sender needs to correctly route an envelope. ### LookupResponse -The `LookupResponse` payload is the response sent by a peer that received a `LookupRequest`. -It contains the `AgentRecord` associated to the requested address. +The `LookupResponse` payload is the response sent by a peer that received a `LookupRequest`. It contains the `AgentRecord` associated to the requested address. ### AeaEnvelope -The `AeaEnvelope` payload contains the envelope sent by an agent and to be delivered to another agent. -It contains: +The `AeaEnvelope` payload contains the envelope sent by an agent and to be delivered to another agent. It contains: - `envelope`: the envelope to be forwarded, in byte representation; - an `AgentRecord` (see above). @@ -156,10 +111,9 @@ The ACN protocol specifies three different possible interactions: ### "Registration" Interaction -The registration interaction is used by delegate agents or relayed peers -to register themselves to another peer. +The registration interaction is used by delegate agents or relayed peers to register themselves to another peer. -
+``` mermaid sequenceDiagram participant Agent/RelayedPeer participant Peer @@ -176,14 +130,13 @@ to register themselves to another peer. else unsupported ledger Peer->>Agent/RelayedPeer: Status(ERROR_UNSUPPORTED_LEDGER) end -
+``` ### "Look-up" Interaction -The look-up interaction is used by a peer -to request information to another peer about an agent address. +The look-up interaction is used by a peer to request information to another peer about an agent address. -
+``` mermaid sequenceDiagram participant Peer1 participant Peer2 @@ -193,15 +146,13 @@ to request information to another peer about an agent address. else unknown agent address Peer2->>Peer1: Status(ERROR_UNKNOWN_AGENT_ADDRESS) end -
- +``` ### "Routing" Interaction -The routing interaction is used by agents -and peers to route the envelope through the ACN. +The routing interaction is used by agents and peers to route the envelope through the ACN. -
+``` mermaid sequenceDiagram participant Peer1 participant Peer2 @@ -214,41 +165,24 @@ and peers to route the envelope through the ACN. else PoR errors note over Peer1,Peer2: see above end - -
- +``` ## Joining the ACN network -When an ACN peer wants to join the network, it has -to start from a list of _bootstrap peers_, i.e. -a list of ACN peers to connect with (at least one). +When an ACN peer wants to join the network, it has to start from a list of _bootstrap peers_, i.e. a list of ACN peers to connect with (at least one). Each node handles four different types of libp2p streams: -- the _notification stream_, identified by the URI `/aea-notif/`: - this stream is used by new peers to notify their existence to -- the _address stream_, identified by the URI `/aea-address/`: - used to send look-up requests and look-up responses; -- the _envelope stream_, identified by the URI `/aea/`: - used to forward and to receive ACN envelopes; -- the _register relay stream_, identified by the URI `/aea-register/`: - this is to receive messages from clients that want to register their agents addresses; - this peer, and then it can register their addresses. - -To begin with, the node process initializes -the transport connections with the bootstrap peers, -the local copy of the Kademlia Distributed -Hash Table (DHT), -the persistent storage for agent records, -and performs other non-functional operations -like setting up the Prometheus monitoring system. -Optionally, can also start listening for relay connections -and delegate connections. +- the _notification stream_, identified by the URI `/aea-notif/`: this stream is used by new peers to notify their existence to +- the _address stream_, identified by the URI `/aea-address/`: used to send look-up requests and look-up responses; +- the _envelope stream_, identified by the URI `/aea/`: used to forward and to receive ACN envelopes; +- the _register relay stream_, identified by the URI `/aea-register/`: this is to receive messages from clients that want to register their agents addresses; this peer, and then it can register their addresses. + +To begin with, the node process initializes the transport connections with the bootstrap peers, the local copy of the Kademlia Distributed Hash Table (DHT), the persistent storage for agent records, and performs other non-functional operations like setting up the Prometheus monitoring system. Optionally, can also start listening for relay connections and delegate connections. Then, it sets up the notification stream and notifies the bootstrap peers (if any). -
+``` mermaid sequenceDiagram participant Peer1 participant Peer2 @@ -269,18 +203,15 @@ Then, it sets up the notification stream and notifies the bootstrap peers (if an Peer1->>Peer3: register address end note over Peer1: set up:
- address stream
- envelope stream
- register relay stream -
+``` -### Relay connections +### Relay Connections -If the ACN node is configured to run the relay service, -it sets up the register relay stream, waiting for registration -requests. +If the ACN node is configured to run the relay service, it sets up the register relay stream, waiting for registration requests. -The following diagram shows an example of the message exchanged -during a registration request: +The following diagram shows an example of the message exchanged during a registration request: -
+``` mermaid sequenceDiagram participant Agent participant Peer @@ -303,58 +234,33 @@ during a registration request: Peer->>Agent: Status(SUCCESS) note over Peer: announce agent address
to other peers end -
+``` -### Delegate connections +### Delegate Connections -If the ACN node is configured to run the delegate service, -it start listening from a TCP socket at a configurable URI. +If the ACN node is configured to run the delegate service, it starts listening from a TCP socket at a configurable URI. -To see a diagram of the message exchanged -during a registration request read -this section. +To see a diagram of the message exchanged during a registration request read this section. -## ACN transport +## ACN Transport -In the following sections, we describe the main three steps of the routing -of an envelope through the ACN: +In the following sections, we describe the main three steps of the routing of an envelope through the ACN: -- _ACN entrance_: when an envelope sent by an agent enters - the peer-to-peer network via the peer the agent is connected to - i.e. agent-to-peer communication; -- _ACN routing_: when an envelope gets routed through the peer-to-peer network, - i.e. peer-to-peer communication; -- _ACN exit_: when an envelope gets delivered to the receiving agent - through its representative peer, i.e. peer-to-agent communication. +- _ACN entrance_: when an envelope sent by an agent enters the peer-to-peer network via the peer the agent is connected to i.e. agent-to-peer communication; +- _ACN routing_: when an envelope gets routed through the peer-to-peer network, i.e. peer-to-peer communication; +- _ACN exit_: when an envelope gets delivered to the receiving agent through its representative peer, i.e. peer-to-agent communication. - ### ACN Envelope Entrance: Agent -> Peer -In this section, we will describe the interaction protocols between agents and peers -for the messages sent by the agent to the ACN network; -in particular, the communication from the contact peer of an agent to the agent. +In this section, we will describe the interaction protocols between agents and peers for the messages sent by the agent to the ACN network; in particular, the communication from the contact peer of an agent to the agent. The following diagram explains the exchange of messages on entering an envelope in the ACN. -In the case of _direct connection_, -`Agent` is a Python process, whereas `Peer` is in a separate (Golang) process. -The logic of the Python Agent client is implemented in -the AEA connection `fetchai/p2p_libp2p` -The communication between `Agent` and `Peer` is done through -an OS pipe for Inter-Process Communication (IPC) between the AEA's process and the libp2p node process; -then, the message gets enqueued to an output queue by an input coroutine. -Finally, the envelope ends up in an output queue, -which is processed by an output coroutine and routed to the next peer. - -In the case of _delegate connection_, -the message exchange is very similar; however, instead of using -pipes, the communication is done through the network, i.e. TCP, -with a peer which has the delegate service enabled. -The logic of the `Agent` client connected with a delegate connection -is implemented in -the AEA connection `fetchai/p2p_libp2p_client` - -
+In the case of _direct connection_, `Agent` is a Python process, whereas `Peer` is in a separate (Golang) process. The logic of the Python Agent client is implemented in the AEA connection `fetchai/p2p_libp2p` The communication between `Agent` and `Peer` is done through an OS pipe for Inter-Process Communication (IPC) between the AEA's process and the libp2p node process; then, the message gets enqueued to an output queue by an input coroutine. Finally, the envelope ends up in an output queue, which is processed by an output coroutine and routed to the next peer. + +In the case of _delegate connection_, the message exchange is very similar; however, instead of using pipes, the communication is done through the network, i.e. TCP, with a peer which has the delegate service enabled. The logic of the `Agent` client connected with a delegate connection is implemented in the AEA connection `fetchai/p2p_libp2p_client` + +``` mermaid sequenceDiagram participant Agent participant Peer @@ -378,82 +284,65 @@ the - sequenceDiagram - participant Agent - participant Peer1 - participant Peer2 - Agent->>Peer1: AeaEnvelope - alt envelope sender not registered locally - note over Peer1: stop, log error - end -
- -2) the `target` of the envelope is - the local agent connected to the peer: - the envelope is routed to the local agent. - -
- sequenceDiagram - participant Agent - participant Peer1 - participant Peer2 - Agent->>Peer1: AeaEnvelope - alt target == peer1.my_agent - note over Peer1: envelope destinated
to local agent,
not routing - loop agent not ready - note over Peer1: sleep for 100ms + ``` mermaid + sequenceDiagram + participant Agent + participant Peer1 + participant Peer2 + Agent->>Peer1: AeaEnvelope + alt envelope sender not registered locally + note over Peer1: stop, log error end - Peer1->>Agent: AeaEnvelope - Agent->>Peer1: Status(Success) - end -
- -3) the `target` is a delegate client. - Send the envelope via TCP. - -
- sequenceDiagram - participant Delegate - participant Peer1 - participant Peer2 - Delegate->>Peer1: AeaEnvelope - alt destination is a delegate - note over Peer1: send envelope
to delegate via TCP - Peer1->>Delegate: AeaEnvelope - Delegate->>Peer1: Status(Success) - end -
+ ``` + +2. the `target` of the envelope is the local agent connected to the peer: the envelope is routed to the local agent. + + ``` mermaid + sequenceDiagram + participant Agent + participant Peer1 + participant Peer2 + Agent->>Peer1: AeaEnvelope + alt target == peer1.my_agent + note over Peer1: envelope destinated
to local agent,
not routing + loop agent not ready + note over Peer1: sleep for 100ms + end + Peer1->>Agent: AeaEnvelope + Agent->>Peer1: Status(Success) + end + ``` + +3. the `target` is a delegate client. Send the envelope via TCP. + + ``` mermaid + sequenceDiagram + participant Delegate + participant Peer1 + participant Peer2 + Delegate->>Peer1: AeaEnvelope + alt destination is a delegate + note over Peer1: send envelope
to delegate via TCP + Peer1->>Delegate: AeaEnvelope + Delegate->>Peer1: Status(Success) + end + ``` -4) Otherwise, look up the local DHT. - If an entry is found, use it; - otherwise, send a look-up request - to connected peers. +4. Otherwise, look up the local DHT. If an entry is found, use it; otherwise, send a look-up request to connected peers. -
+``` mermaid sequenceDiagram participant Agent participant Peer1 @@ -474,13 +363,11 @@ we may have different scenario: end end note over Peer1,Peer2: Now Peer1 knows the contact peer
is PeerX -
- -In particular, when a peer receives a LookupRequest message, -it does the following: +``` +In particular, when a peer receives a LookupRequest message, it does the following: -
+``` mermaid sequenceDiagram participant Peer1 participant Peer2 @@ -500,13 +387,11 @@ it does the following: Peer2->>Peer1:Status(UNKNOWN_AGENT_ADDRESS) end end -
+``` -Let `Peer3` the contact peer of the recipient of the envelope. -The following diagram shows how the contact peer of the -envelope recipient handles the incoming envelope: +Let `Peer3` the contact peer of the recipient of the envelope. The following diagram shows how the contact peer of the envelope recipient handles the incoming envelope: -
+``` mermaid sequenceDiagram participant Peer1 participant Peer3 @@ -542,20 +427,15 @@ envelope recipient handles the incoming envelope: Peer3->>Peer1: Status(ERROR_UNKNOWN_AGENT_ADDRESS) end end -
+``` ### ACN Envelope Exit: Peer -> Agent -The following diagram explains the exchange of messages on exiting an envelope in the ACN. -That is, the communication from the contact peer of an agent to the agent. +The following diagram explains the exchange of messages on exiting an envelope in the ACN. That is, the communication from the contact peer of an agent to the agent. -The same message exchange is done -both in the case of direct connection and -delegate connection, -similarly for what has been described for the envelope entrance -
(see above). +The same message exchange is done both in the case of direct connection and delegate connection, similarly for what has been described for the envelope entrance (see above). -
+``` mermaid sequenceDiagram participant Agent participant Peer @@ -571,43 +451,26 @@ similarly for what has been described for the envelope entrance else wrong payload Agent->>Peer: Status(GENERIC_ERROR) end -
+``` ## Connect your AEA to the ACN -To connect the AEA to the ACN network, -there are two AEA connections available: +To connect the AEA to the ACN network, there are two AEA connections available: -- the `fetchai/p2p_libp2p`, that implements - a direct connection, and -- the `fetchai/p2p_libp2p_delegate` connection, - that implements the delegate connection. +- the `fetchai/p2p_libp2p`, that implements a direct connection, and +- the `fetchai/p2p_libp2p_delegate` connection, that implements the delegate connection. -For more information on the AEA connection package type, -refer to this guide. +For more information on the AEA connection package type, refer to this guide. -### The `fetchai/p2p_libp2p` connection +### The `fetchai/p2p_libp2p` Connection -The source code of the `fetchai/p2p_libp2p` connection -can be downloaded from -the AEA Registry, -or from the main AEA framework repository. +The source code of the `fetchai/p2p_libp2p` connection can be downloaded from the AEA Registry, or from the main AEA framework repository. -The package provides the connection class `P2PLibp2pConnection`, -which implements the `Connection` interface and -therefore can be used by the Multiplexer as any other connection. +The package provides the connection class `P2PLibp2pConnection`, which implements the `Connection` interface and therefore can be used by the Multiplexer as any other connection. -- The `connect` method of this connection spawns a new instance - of the `libp2p_node` program -(i.e. an ACN peer node) and connects to it through OS pipes. -Then, it sets up the _message receiving loop_, - which enqueues messages in the input queue to be read by `read` method calls, - and the _message sending loop_, - which dequeues messages from the output queue and forwards them to the Libp2p node. -The loops are run concurrently in the Multiplexer thread, - using the Python asynchronous programming library `asyncio`. +- The `connect` method of this connection spawns a new instance of the `libp2p_node` program (i.e. an ACN peer node) and connects to it through OS pipes. Then, it sets up the _message receiving loop_, which enqueues messages in the input queue to be read by `read` method calls, and the _message sending loop_, which dequeues messages from the output queue and forwards them to the Libp2p node. The loops are run concurrently in the Multiplexer thread, using the Python asynchronous programming library `asyncio`. -
+``` mermaid sequenceDiagram participant Libp2p Connection participant sending loop @@ -624,13 +487,11 @@ The loops are run concurrently in the Multiplexer thread, deactivate Libp2p Node deactivate sending loop deactivate receiving loop -
+``` -- The `send` method enqueues a message in the output queue. -The message is then dequeued by the sending loop, -and then sent to the Libp2p node. +- The `send` method enqueues a message in the output queue. The message is then dequeued by the sending loop, and then sent to the Libp2p node. -
+``` mermaid sequenceDiagram participant Libp2p Connection participant sending loop @@ -656,13 +517,11 @@ and then sent to the Libp2p node. else envelope decoding error Libp2p Node->>sending loop: Status(ERROR_SERIALIZATION) end -
+``` -- The `receive` method dequeues a message from the input queue. -The queue is populated by the receiving loop, -which receives messages from the Libp2p node. +- The `receive` method dequeues a message from the input queue. The queue is populated by the receiving loop, which receives messages from the Libp2p node. -
+``` mermaid sequenceDiagram participant Libp2p Connection participant receiving loop @@ -688,34 +547,19 @@ which receives messages from the Libp2p node. end Libp2p Connection->>receiving loop: read message from output queue note over Libp2p Connection: return message
to Multiplexer -
- -- the `disconnect` method stops both the receiving loop and the sending loop, - and stops the Libp2p node. - -### The `fetchai/p2p_libp2p_delegate` connection - -The source code of the `fetchai/p2p_libp2p_delegate` connection -can be downloaded from -the main AEA framework repository. -or from the main AEA framework repository. - -The package provides the connection class `P2PLibp2pClientConnection`, -which implements the `Connection` interface and -therefore can be used by the Multiplexer as any other connection. - -- The `connect` method of this connection will set up a TCP - connection to the URI of the delegate peer. Then, it will - send a `Register` request to register the agent among the peer's - client connections. - On registration success, it sets up the _message receiving loop_, - which enqueues messages in the input queue to be read by read method calls, - and the _message sending loop_, which dequeues messages from the output queue - and forwards them to the Libp2p node. - The loops are run concurrently in the Multiplexer thread, - using the Python asynchronous programming library `asyncio`. - -
+``` + +- the `disconnect` method stops both the receiving loop and the sending loop, and stops the Libp2p node. + +### The `fetchai/p2p_libp2p_delegate` Connection + +The source code of the `fetchai/p2p_libp2p_delegate` connection can be downloaded from the main AEA framework repository. or from the main AEA framework repository. + +The package provides the connection class `P2PLibp2pClientConnection`, which implements the `Connection` interface and therefore can be used by the Multiplexer as any other connection. + +- The `connect` method of this connection will set up a TCP connection to the URI of the delegate peer. Then, it will send a `Register` request to register the agent among the peer's client connections. On registration success, it sets up the _message receiving loop_, which enqueues messages in the input queue to be read by read method calls, and the _message sending loop_, which dequeues messages from the output queue and forwards them to the Libp2p node. The loops are run concurrently in the Multiplexer thread, using the Python asynchronous programming library `asyncio`. + +``` mermaid sequenceDiagram participant Libp2p Client Connection participant Libp2p Node @@ -744,34 +588,24 @@ therefore can be used by the Multiplexer as any other connection. activate Libp2p Node deactivate Libp2p Node end -
+``` -- The `send` method and the `receive` methods behave similarly to - the `send` and `receive` methods of the - `p2p_libp2p connection`, - in terms of message exchange; - however, the communication is done via TCP rather than pipes. +- The `send` method and the `receive` methods behave similarly to the `send` and `receive` methods of the `p2p_libp2p connection`, in terms of message exchange; however, the communication is done via TCP rather than pipes. -- The `disconnect` method interrupts the connection with the delegate peer, - without explicitly unregistering. +- The `disconnect` method interrupts the connection with the delegate peer, without explicitly unregistering. -## Known issues and limitations +## Known Issues and Limitations -In this section, we provide a list of known issues -and limitations of the current implementation -of the ACN, considering both the ACN nodes (written in Golang) -and the AEA connections, for the Python AEA framework, to interact with them. +In this section, we provide a list of known issues and limitations of the current implementation of the ACN, considering both the ACN nodes (written in Golang) and the AEA connections, for the Python AEA framework, to interact with them. -### Delegate client on client disconnection/reconnection +### Delegate Client on Client Disconnection/Reconnection -In case of disconnection/reconnection, delegate client record will be removed. -This can cause two problems: either the delegate client is not found, -or connection is closed during the send operation. +In case of disconnection/reconnection, delegate client record will be removed. This can cause two problems: either the delegate client is not found, or connection is closed during the send operation. Possible solutions: - Create more complicated structure for clients storage; -- Keep the delegate client record for longer; +- Keep the delegate client record for longer; - Clean up the record by timeout, per client queues. Code references: @@ -779,33 +613,20 @@ Code references: - record removed: https://github.com/fetchai/agents-aea/blob/1db1720081969bcec1be5a2000ca176475d2b487/libs/go/libp2p_node/dht/dhtpeer/dhtpeer.go#L864 - send code: https://github.com/fetchai/agents-aea/blob/1db1720081969bcec1be5a2000ca176475d2b487/libs/go/libp2p_node/dht/dhtpeer/dhtpeer.go#L955 +### Golang Node <> Python Client `libp2p` Connection -### Golang Node <> Python Client `libp2p` connection - -In case of connection between the Golang side (i.e. ACN node) -and the Python side (i.e. the `libp2p` AEA connection) is broken, -there is no reconnection attempt. -The Golang side connect to the Python server opened, -but if the connection is broken Golang can try to reconnect; -however, the Python side does not know about this and will restart -the node completely. +In case of connection between the Golang side (i.e. ACN node) and the Python side (i.e. the `libp2p` AEA connection) is broken, there is no reconnection attempt. The Golang side connect to the Python server opened, but if the connection is broken Golang can try to reconnect; however, the Python side does not know about this and will restart the node completely. -Possible solutions: the problem requires updates on both sides and assume possible timeouts on broken connection. -If connection is broken, the Python side awaits for reconnection from Golang side, -and restart node completely after timeout. +Possible solutions: the problem requires updates on both sides and assume possible timeouts on broken connection. If connection is broken, the Python side awaits for reconnection from Golang side, and restart node completely after timeout. -### What a peer should do if it receives an acknowledgement with an error? +### What a Peer Should Do if it Receives an Acknowledgement with an Error? -If an ACN response is the `Status` with error code different from `SUCCESS`, -the forwarding to other peers is not repeated. +If an ACN response is the `Status` with error code different from `SUCCESS`, the forwarding to other peers is not repeated. -A possible solution is to resend the message; however, -not clear why it should help in case of healthy connection, -how many times the sender should retry, and how it would help. +A possible solution is to resend the message; however, not clear why it should help in case of healthy connection, how many times the sender should retry, and how it would help. -Discussion on GitHub: -https://github.com/fetchai/agents-aea/pull/2509#discussion_r642628983 +Discussion on GitHub: https://github.com/fetchai/agents-aea/pull/2509#discussion_r642628983 -### No possibility of switching peers +### No Possibility of Switching Peers In case of a peer becoming unavailable, a delegate client or relay client currently has no means to automatically switch the peer. In particular, the DHT should be updated when a client switches peers. diff --git a/docs/acn.md b/docs/acn.md index f083aeff33..03a74bdca0 100644 --- a/docs/acn.md +++ b/docs/acn.md @@ -1,17 +1,19 @@ +# Agent Communication Network The agent communication network (ACN) provides a system for agents to find each other and communicate, solely based on their wallet addresses. It addresses the message delivery problem. -## Message delivery problem +## Message Delivery Problem + Agents need to contact each others. Given the wallet address of a target agent, how can the originator agent deliver a message to it whilst guaranteeing certain properties? -The properties we would like to have are: +The properties we would like to have, are: - Reliability: with guarantees on message reception - Authentication: to prevent impersonation - Confidentiality: to prevent exposing sensitive information within the message - Availability: some guarantees about the liveness of the service (tampering detection) -The problem statement and the agents framework context impose a number of design constraints: +The problem statement and the agent framework context impose a number of design constraints: - Distributed environment: no assumption are placed about the location of the agent, they can be anywhere in the publicly reachable internet - Decentralized environment: no trusted central authority @@ -23,31 +25,27 @@ The ACN solves the above problem whilst providing the above guarantees and satis The ACN is maintained by peers. Peers are not to be equated with agents. They are processes (usually distributed and decentralized) that together maintain the service. To use the service, agents need to associate themselves with peers. Thanks to digital signatures, the association between a given peer and agent can be verified by any participant in the system. -## Distributed hash table +## Distributed Hash Table At its core, the ACN implements a distributed hash table (DHT). A DHT is similar to a regular hash table in that it stores key-value pairs. However, storage is distributed across the participating machines (peers) with an efficient lookup operation. This is enabled by: - Consistent hashing: decide responsibility for assignment of the DHT key-value storage -- Structured overlays: organize the participating peers in a well defined topology for efficient routing +- Structured overlays: organize the participating peers in a well-defined topology for efficient routing DHT For the ACN, we use the DHT to store and maintain association between an agent address and the (network) location of its peer. - -## N-tier architecture +## N-Tier Architecture To satisfy different resource constraints and flexible deployment the ACN is implemented as a multi-tier architecture. As such, it provides an extension of the client-server model. The agent framework exploits this by implementing different tiers as different `Connections`: DHT -
-

Note

-

The p2p_libp2p_mailbox connection is not available yet. -

-
+!!! note + The `p2p_libp2p_mailbox` connection is not available yet. -## Trust and security +## Trust and Security An agent can choose which connection to use depending on the resource and trust requirements: @@ -57,6 +55,3 @@ An agent can choose which connection to use depending on the resource and trust All communication protocols use public cryptography to ensure security (authentication, confidentiality, and availability) using TLS handshakes with pre-shared public keys. DHT - - -
diff --git a/docs/aea-vs-mvc.md b/docs/aea-vs-mvc.md index 5b34cbd149..787299479d 100644 --- a/docs/aea-vs-mvc.md +++ b/docs/aea-vs-mvc.md @@ -1,3 +1,5 @@ +# AEA and Web Frameworks + The AEA framework borrows several concepts from popular web frameworks like Django and Ruby on Rails. ## MVC @@ -8,7 +10,7 @@ Both aforementioned web frameworks use the asynchronous messaging and other agent-oriented development assumptions. Hence, there is not a direct one-to-one relationship between MVC based architectures and the AEA framework. Nevertheless, there are some parallels which can help a developer familiar with MVC make quick progress in the AEA framework, in particular the development of `Skills`: @@ -21,10 +23,8 @@ The AEA framework is based on Build a skill for an AEA - -
diff --git a/docs/agent-oriented-development.md b/docs/agent-oriented-development.md index 86085e4883..22d507215e 100644 --- a/docs/agent-oriented-development.md +++ b/docs/agent-oriented-development.md @@ -1,69 +1,67 @@ -# Agent-oriented development +# Agent-Oriented Development In this section, we discuss some of the most fundamental characteristics of an agent-oriented approach to solution development, which might be different from existing paradigms and methodologies that you may be used to. We hope that with this, we can guide you towards the right mindset when designing your own agent-based solutions to real world problems. ## Decentralisation -Multi-Agent Systems (**MAS**) are inherently decentralised. The vision is of an environment in which every agent is able to directly connect with everyone else and interact with them without having to rely on a third party acting as an intermediary or match-maker. This is in direct contrast to centralised systems in which a single entity is the central point of authority, through which all interactions happen. The conventional client-server model is an example of a centralized architecture where clients interact with one another regarding specific services (e.g. communication, commerce) only through a server. +Multi-Agent Systems (**MAS**) are inherently decentralized. The vision is of an environment in which every agent is able to directly connect with everyone else and interact with them without having to rely on a third party acting as an intermediary or match-maker. This is in direct contrast to centralized systems in which a single entity is the central point of authority, through which all interactions happen. The conventional client-server model is an example of a centralized architecture where clients interact with one another regarding specific services (e.g. communication, commerce) only through a server. This is not to say that facilitators and middlemen have no place in a multi-agent system; rather it is the '_commanding reliance on middlemen_' that MAS rejects. -**Division of responsibilities:** In a decentralised system, every agent is equally privileged, and (in principle) should be able to interact with any other agent. The idea is very much aligned with the peer-to-peer paradigm, in which it is the voluntary participation and contribution of the peers that create the infrastructure. Therefore, in a decentralised system, there is no central 'enforcer'. This means all the work that would typically fall under the responsibilities of a central entity must be performed by individual parties in a decentralised system. Blockchain-based cryptocurrencies are a good example of this. A notable characteristic of cryptocurrencies is the absence of central trusted entities (e.g. banks). But this in turn means that most security precautions related to the handling of digital assets and the execution of transactions are the responsibility of individuals. +**Division of responsibilities:** In a decentralized system, every agent is equally privileged, and (in principle) should be able to interact with any other agent. The idea is very much aligned with the peer-to-peer paradigm, in which it is the voluntary participation and contribution of the peers that create the infrastructure. Therefore, in a decentralized system, there is no central 'enforcer'. This means all the work that would typically fall under the responsibilities of a central entity must be performed by individual parties in a decentralized system. Blockchain-based cryptocurrencies are a good example of this. A notable characteristic of cryptocurrencies is the absence of central trusted entities (e.g. banks). But this in turn means that most security precautions related to the handling of digital assets and the execution of transactions are the responsibility of individuals. - + -**Decentralisation vs distribution:** It is important to emphasise that by decentralisation we do not mean distribution; although multi-agent systems typically do also tend to be distributed. A distributed system is one whose components are physically located in different places and connected over a network. A fully centralised system, owned and operated by a single entity, may in fact be highly distributed. Google or Microsoft's cloud infrastructure are examples of this, where their components are distributed across the globe yet designed to work together harmoniously and function in unison. Decentralisation on the other hand refers to a system whose components may be owned, operated, and managed by different stakeholders, each with their own personal objectives, interests, and preferences which may not necessarily be aligned with one another or the system itself. Therefore, distribution refers to the physical placement of a system's components, whereas decentralisation refers to **a)** the diversity of ownership and control over a system's constituents, and **b)** the absence of central authorities between them. +**Decentralisation vs distribution:** It is important to emphasise that by decentralisation we do not mean distribution; although multi-agent systems typically do also tend to be distributed. A distributed system is one whose components are physically located in different places and connected over a network. A fully centralized system, owned and operated by a single entity, may in fact be highly distributed. Google or Microsoft's cloud infrastructure are examples of this, where their components are distributed across the globe yet designed to work together harmoniously and function in unison. Decentralisation on the other hand refers to a system whose components may be owned, operated, and managed by different stakeholders, each with their own personal objectives, interests, and preferences which may not necessarily be aligned with one another or the system itself. Therefore, distribution refers to the physical placement of a system's components, whereas decentralisation refers to **a.** the diversity of ownership and control over a system's constituents, and **b.** the absence of central authorities between them. -**Example:** To better illustrate the distinction between centralised and decentralised systems, consider another example: search and discoverability in a commerce environment. In a centralised system (say Amazon), there is a single search service -- provided, owned and run by the commerce company itself -- which takes care of all search-related functionality for every product within their domain. So to be discoverable in this system, all sellers must register their products with this particular service. However in a decentralised system, there may not necessarily be a single search service provider. There may be multiple such services, run by different, perhaps competing entities. Each seller has the freedom to register with (i.e. make themselves known to) one or a handful of services. On the buyers side, the more services they contact and query, the higher their chances of finding the product they are looking for. +**Example:** To better illustrate the distinction between centralized and decentralized systems, consider another example: search and discoverability in a commerce environment. In a centralized system (say Amazon), there is a single search service -- provided, owned and run by the commerce company itself -- which takes care of all search-related functionality for every product within their domain. So to be discoverable in this system, all sellers must register their products with this particular service. However, in a decentralized system, there may not necessarily be a single search service provider. There may be multiple such services, run by different, perhaps competing entities. Each seller has the freedom to register with (i.e. make themselves known to) one or a handful of services. On the buyers side, the more services they contact and query, the higher their chances of finding the product they are looking for. ## Conflicting Environment -As discussed above, the notion of decentralisation extends as far as ownership and control. Therefore, the different components that make up a decentralised system may each be owned by a different entity, designed according to very different principles and standards, with heterogeneous software and hardware, and each with internal objectives that may be fundamentally inconsistent, worse yet contradictory, with those of others. +As discussed above, the notion of decentralisation extends as far as ownership and control. Therefore, the different components that make up a decentralized system may each be owned by a different entity, designed according to very different principles and standards, with heterogeneous software and hardware, and each with internal objectives that may be fundamentally inconsistent, worse yet contradictory, with those of others. As such, a distinctive characteristic of a multi-agent environment, is that it is inhabited by more than one agent (as the name suggests), where each agent may be owned potentially by a different stakeholder (individual, company, government). Since by design, each agent represents and looks after the interests of its owner(s), and because different stakeholders may have unaligned, conflicting, or contradictory interests, it is very common to have multi-agent systems in which the agents' objectives, values and preferences are unaligned, conflicting, or contradictory. **In practice:** There are practical implications that follow from the above when it comes to designing an agent. For example, it is not rational for an agent to automatically rely on the information it receives from other agents. The information could be: -* Incomplete: what is unrevealed may have been deemed private for strategic reasons. -* Uncertain: it may be the result of an inaccurate prediction. -* Incorrect: it could be an outright lie, due to the adversarial nature of the environment. +- Incomplete: what is unrevealed may have been deemed private for strategic reasons. +- Uncertain: it may be the result of an inaccurate prediction. +- Incorrect: it could be an outright lie, due to the adversarial nature of the environment. -Therefore one can argue, that there is a degree of uncertainty attached to almost all information an agent receives or infers in a multi-agent system. It wouldn't then be illogical for an agent to take a sceptical approach: treating everything as uncertain, unless proved otherwise. +Therefore, one can argue that there is a degree of uncertainty attached to almost all information an agent receives or infers in a multi-agent system. It wouldn't then be illogical for an agent to take a sceptical approach: treating everything as uncertain, unless proved otherwise. -## Asynchronisation +## Asynchronization -The conflicting nature of multi-agent systems, consisting of self-interested autonomous agents, points to _asynchronisation_ as the preferred method of designing and managing processes and interactions. +The conflicting nature of multi-agent systems, consisting of self-interested autonomous agents, points to _asynchronization_ as the preferred method of designing and managing processes and interactions. -**Synchronisation vs asynchronisation:** In general, asynchronisation refers to the decoupling of events that do interact with one another but do not occur at predetermined intervals, not necessarily relying on each other's existence to function. This is in contrast with _synchronous_ systems in which processes are aware of one another, where one's execution depends in some way on the other. +**Synchronisation vs asynchronization:** In general, asynchronization refers to the decoupling of events that do interact with one another but do not occur at predetermined intervals, not necessarily relying on each other's existence to function. This is in contrast with _synchronous_ systems in which processes are aware of one another, where one's execution depends in some way on the other. -**Asynchronisation in MAS:** In the context of multi-agent systems, the decentralised and potentially conflicting nature of the environment creates uncertainty over the behaviour of the whole system, in particular of other agents. For example, suppose an agent `i` sends a message requesting some resources from an agent `j`. Since MAS often tends to be distributed, there is the usual uncertainties with communication over a network: `j` may never receive `i`'s request, or may receive it after a long delay. Furthermore, `j` could receive the request in time and respond immediately, but as mentioned in the last section, its answer might be incomplete (gives only some of the requested resources), uncertain (promises to give the resources, but cannot be fully trusted), or incorrect (sends a wrong resource). In addition, since agents are self-interested, `j` may _decide_ to reply much later, to the point that the resource is no longer useful to agent `i`, or `j` may simply decide not to respond at all. There might be a myriad of reasons why it may choose to do that; it could be because `j` assigns a low priority to answering `i` over its other tasks. But that's beside the point. The take away is that agents' autonomy strongly influences what can be expected of them, and of an environment inhabited by them. As such, developing for a system whose constituents are autonomous, e.g. agents in a multi-agent system, is fundamentally different from one whose constituents aren't, e.g. objects in an object-oriented system. +**Asynchronization in MAS:** In the context of multi-agent systems, the decentralized and potentially conflicting nature of the environment creates uncertainty over the behaviour of the whole system, in particular of other agents. For example, suppose an agent `i` sends a message requesting some resources from an agent `j`. Since MAS often tends to be distributed, there is the usual uncertainties with communication over a network: `j` may never receive `i`'s request, or may receive it after a long delay. Furthermore, `j` could receive the request in time and respond immediately, but as mentioned in the last section, its answer might be incomplete (gives only some of the requested resources), uncertain (promises to give the resources, but cannot be fully trusted), or incorrect (sends a wrong resource). In addition, since agents are self-interested, `j` may _decide_ to reply much later, to the point that the resource is no longer useful to agent `i`, or `j` may simply decide not to respond at all. There might be a myriad of reasons why it may choose to do that; it could be because `j` assigns a low priority to answering `i` over its other tasks. But that's beside the point. The takeaway is that agents' autonomy strongly influences what can be expected of them, and of an environment inhabited by them. As such, developing for a system whose constituents are autonomous, e.g. agents in a multi-agent system, is fundamentally different from one whose constituents aren't, e.g. objects in an object-oriented system. -**Objects vs agents:** In object-oriented systems, objects are entities that encapsulate state and perform actions, i.e. call methods, on this state. In object-oriented languages, like C++ and Java, it is common practice to declare methods as public, so they can be invoked by other objects in the system whenever they wish. This implies that an object does not control its own behaviour. If an object’s method is public, the object has no control over whether or not that method is executed. +**Objects vs agents:** In object-oriented systems, objects are entities that encapsulate state and perform actions, i.e. call methods, on this state. In object-oriented languages, like C++ and Java, it is common practice to declare methods as public, so they can be invoked by other objects in the system whenever they wish. This implies that an object does not control its own behaviour. If an object’s method is public, the object has no control over whether that method is executed. We cannot take for granted that an agent `j` will execute an action (the equivalent of a method in object-oriented systems) just because another agent `i` wants it to; this action may not be in the best interests of agent `j`. So we do not think of agents as invoking methods on one another, rather as _requesting_ actions. If `i` requests `j` to perform an action, then `j` may or may not perform the action. It may choose to do it later or do it in exchange for something. The locus of control is therefore different in object-oriented and agent-oriented systems. In the former, the decision lies with the object invoking the method, whereas in the latter, the decision lies with the agent receiving the request. This distinction could be summarised by the following slogan (from An Introduction to MultiAgent Systems by Michael Wooldridge): >objects do it for free; agents do it because they want to. -All of this makes asynchronisation the preferred method for designing agent processes and interactions. An agent's interactions should be independent of each other, as much as possible, and of the agent's decision making processes and actions. This means the success or failure of, or delay in any single interaction does not block the agent's other tasks. +All of this makes asynchronization the preferred method for designing agent processes and interactions. An agent's interactions should be independent of each other, as much as possible, and of the agent's decision-making processes and actions. This means the success or failure of, or delay in any single interaction does not block the agent's other tasks. ## Time -Closely related with the discussion of asynchronicity, is the idea that in multi-agent systems, time is not a universally agreed notion. Agents may not necessarily share the same clock and this fact must be taken into account when designing agent-based systems. For example, you cannot necessarily expect agents to synchronise their behaviour according to time (e.g. perform a certain task at a time `X`). +Closely related with the discussion of asynchronicity, is the idea that in multi-agent systems, time is not a universally agreed notion. Agents may not necessarily share the same clock and this fact must be taken into account when designing agent-based systems. For example, you cannot necessarily expect agents to synchronise their behaviour according to time (e.g. perform a certain task at a time `X`). -Another related issue, is that unlike some agent-based simulation (ABS) systems where there is a global tick rate for all agents, in AEA-based systems tick rates may be different for different agents. This is due to the fundamental difference that ABS systems control some aspects of all of their agents' executions while in AEA-based systems, agents are truly decoupled from one another - most likely distributed and running on different machines and networks - and there is absolutely no central unit that moderates any aspect of their behaviour. +Another related issue, is that unlike some agent-based simulation (ABS) systems where there is a global tick rate for all agents, in AEA-based systems tick rates may be different for different agents. This is due to the fundamental difference that ABS systems control some aspects of all of their agents' executions while in AEA-based systems, agents are truly decoupled from one another - most likely distributed and running on different machines and networks - and there is absolutely no central unit that moderates any aspect of their behaviour. ## Complex, Incomplete, Inconsistent and Uncertain The fourth characteristic(s) relate to the environment in which agents are expected to operate in, and these have been mentioned a number of times in the previous sections. -The environment agents are suited for typically tend to be complex, to the point that it is usually impossible for any single agent to perceive the whole of the environment on its own. This means that at any point in time, any agent has a limited knowledge about the state of the environment. In other words, the agents;' information tend to be incomplete due to the complexity and sophistication of the world in which they reside. +The environment agents are suited for typically tend to be complex, to the point that it is usually impossible for any single agent to perceive the whole of the environment on its own. This means that at any point in time, any agent has a limited knowledge about the state of the environment. In other words, the agents;' information tend to be incomplete due to the complexity and sophistication of the world in which they reside. -Consider an agent which represents a driverless vehicle. The complexity of the problem of driving on the road makes it impossible for a single vehicle to have an accurate and up-to-date knowledge of the overall state of the world . This means that an agent's model of the world is at best uncertain. For instance, the vehicle, through its sensor may detect green light at a junction, and by being aware of what it means, it may infer that it is safe to cross a junction. However, that simply may not be true as another car in the opposite direction may still cross the junction violating their red light. Therefore, there is uncertainty associated with the knowledge "it is safe to cross the road because the light is green", and the agent must recognise that. +Consider an agent which represents a driver-less vehicle. The complexity of the problem of driving on the road makes it impossible for a single vehicle to have an accurate and up-to-date knowledge of the overall state of the world . This means that an agent's model of the world is at best uncertain. For instance, the vehicle, through its sensor may detect green light at a junction, and by being aware of what it means, it may infer that it is safe to cross a junction. However, that simply may not be true as another car in the opposite direction may still cross the junction violating their red light. Therefore, there is uncertainty associated with the knowledge "it is safe to cross the road because the light is green", and the agent must recognise that. -Furthermore, the often conflicting nature of the environment means information obtained from multiple sources (agents) may be inconsistent. Again, this must be taken into consideration when designing an agent which is expected to operate successfully in a potentially conflicting environment. +Furthermore, the often conflicting nature of the environment means information obtained from multiple sources (agents) may be inconsistent. Again, this must be taken into consideration when designing an agent which is expected to operate successfully in a potentially conflicting environment. ## Further Reading -* Wooldridge, M. (2009). _An Introduction to MultiAgent Systems_. Wiley, Second edition. -* Shoham, Y. and Leyton-Brown, K. (2008). _Multiagent Systems: Algorithmic, Game-Theoretic, and Logical Foundations_. Cambridge University Press - -
+- Wooldridge, M. (2009). _An Introduction to MultiAgent Systems_. Wiley, Second edition. +- Shoham, Y. and Leyton-Brown, K. (2008). _Multiagent Systems: Algorithmic, Game-Theoretic, and Logical Foundations_. Cambridge University Press diff --git a/docs/agent-vs-aea.md b/docs/agent-vs-aea.md index 16a90e5d37..aaa951ebf3 100644 --- a/docs/agent-vs-aea.md +++ b/docs/agent-vs-aea.md @@ -1,12 +1,15 @@ +# AEAs vs Agents + AEAs are more than just agents. AEA vs Agent vs Multiplexer -In this guide we show some of the differences in terms of code. +In this guide, we show some of the differences in terms of code. The Build an AEA programmatically guide shows how to programmatically build an AEA. We can build an agent of the `Agent` class programmatically as well. -First, import the python and application specific libraries. (Get the packages directory from the AEA repository `svn export https://github.com/fetchai/agents-aea.git/trunk/packages`.) +First, import the python and application specific libraries. (Get the `packages` directory from the AEA repository `svn export https://github.com/fetchai/agents-aea.git/trunk/packages`.) + ``` python import os import time @@ -27,12 +30,12 @@ from packages.fetchai.protocols.default.message import DefaultMessage Unlike an `AEA`, an `Agent` does not require a `Wallet`, `LedgerApis` or `Resources` module. However, we need to implement 4 abstract methods: + - `setup()` - `act()` - `handle_envelope()` - `teardown()` - When we run an agent, `start()` calls `setup()` and then the main agent loop. The main agent loop calls `act()`, `react()` and `update()` on each tick. When the agent is stopped via `stop()` then `teardown()` is called. Such a lightweight agent can be used to implement simple logic. @@ -40,6 +43,7 @@ Such a lightweight agent can be used to implement simple logic. ## Code an `Agent` We define our `Agent` which simply receives envelopes, prints the sender address and `protocol_id` and returns it unopened. + ``` python INPUT_FILE = "input_file" OUTPUT_FILE = "output_file" @@ -118,8 +122,10 @@ class MyAgent(Agent): my_agent = MyAgent(identity, [stub_connection]) ``` -## Start the agent +## Start the Agent + We run the agent from a different thread so that we can still use the main thread to pass it messages. + ``` python # Set the agent running in a different thread try: @@ -130,8 +136,10 @@ We run the agent from a different thread so that we can still use the main threa time.sleep(3) ``` -## Send and receive an envelope +## Send and Receive an Envelope + We use the input and output text files to send an envelope to our agent and receive a response + ``` python # Create a message inside an envelope and get the stub connection to pass it into the agent message_text = b"my_agent,other_agent,fetchai/default:1.0.0,\x12\r\x08\x01*\t*\x07\n\x05hello," @@ -148,7 +156,9 @@ We use the input and output text files to send an envelope to our agent and rece ``` ## Shutdown -Finally stop our agent and wait for it to finish + +Finally, stop our agent and wait for it to finish + ``` python finally: # Shut down the agent @@ -156,139 +166,135 @@ Finally stop our agent and wait for it to finish t.join() ``` -## Your turn +## Your Turn Now it is your turn to develop a simple agent with the `Agent` class. -## Entire code listing -If you just want to copy and paste the entire script in you can find it here: - -
Click here to see full listing -

- -``` python -import os -import time -from threading import Thread -from typing import List - -from aea.agent import Agent -from aea.configurations.base import ConnectionConfig -from aea.connections.base import Connection -from aea.helpers.file_io import write_with_lock -from aea.identity.base import Identity -from aea.mail.base import Envelope - -from packages.fetchai.connections.stub.connection import StubConnection -from packages.fetchai.protocols.default.message import DefaultMessage - - -INPUT_FILE = "input_file" -OUTPUT_FILE = "output_file" - +## Entire Code Listing -class MyAgent(Agent): - """A simple agent.""" - - def __init__(self, identity: Identity, connections: List[Connection]): - """Initialise the agent.""" - super().__init__(identity, connections) - - def setup(self): - """Setup the agent.""" - - def act(self): - """Act implementation.""" - print("Act called for tick {}".format(self.tick)) - - def handle_envelope(self, envelope: Envelope) -> None: - """ - Handle envelope. +If you just want to copy and paste the entire script in you can find it here: - :param envelope: the envelope received - :return: None - """ - print("React called for tick {}".format(self.tick)) - if ( - envelope is not None - and envelope.protocol_specification_id - == DefaultMessage.protocol_specification_id - ): - sender = envelope.sender - receiver = envelope.to - envelope.to = sender - envelope.sender = receiver - envelope.message = DefaultMessage.serializer.decode(envelope.message_bytes) - envelope.message.sender = receiver - envelope.message.to = sender - print( - "Received envelope from {} with protocol_specification_id={}".format( - sender, envelope.protocol_specification_id +??? note "Click here to see full listing" + + ``` python + import os + import time + from threading import Thread + from typing import List + + from aea.agent import Agent + from aea.configurations.base import ConnectionConfig + from aea.connections.base import Connection + from aea.helpers.file_io import write_with_lock + from aea.identity.base import Identity + from aea.mail.base import Envelope + + from packages.fetchai.connections.stub.connection import StubConnection + from packages.fetchai.protocols.default.message import DefaultMessage + + + INPUT_FILE = "input_file" + OUTPUT_FILE = "output_file" + + + class MyAgent(Agent): + """A simple agent.""" + + def __init__(self, identity: Identity, connections: List[Connection]): + """Initialise the agent.""" + super().__init__(identity, connections) + + def setup(self): + """Setup the agent.""" + + def act(self): + """Act implementation.""" + print("Act called for tick {}".format(self.tick)) + + def handle_envelope(self, envelope: Envelope) -> None: + """ + Handle envelope. + + :param envelope: the envelope received + :return: None + """ + print("React called for tick {}".format(self.tick)) + if ( + envelope is not None + and envelope.protocol_specification_id + == DefaultMessage.protocol_specification_id + ): + sender = envelope.sender + receiver = envelope.to + envelope.to = sender + envelope.sender = receiver + envelope.message = DefaultMessage.serializer.decode(envelope.message_bytes) + envelope.message.sender = receiver + envelope.message.to = sender + print( + "Received envelope from {} with protocol_specification_id={}".format( + sender, envelope.protocol_specification_id + ) ) - ) - self.outbox.put(envelope) - - def teardown(self): - """Teardown the agent.""" - - -def run(): - """Run demo.""" - - # Ensure the input and output files do not exist initially - if os.path.isfile(INPUT_FILE): - os.remove(INPUT_FILE) - if os.path.isfile(OUTPUT_FILE): - os.remove(OUTPUT_FILE) - - # Create an addresses identity: - identity = Identity( - name="my_agent", address="some_address", public_key="public_key" - ) - - # Set up the stub connection - configuration = ConnectionConfig( - input_file_path=INPUT_FILE, - output_file_path=OUTPUT_FILE, - connection_id=StubConnection.connection_id, - ) - stub_connection = StubConnection( - configuration=configuration, data_dir=".", identity=identity - ) - - # Create our Agent - my_agent = MyAgent(identity, [stub_connection]) - - # Set the agent running in a different thread - try: - t = Thread(target=my_agent.start) - t.start() - - # Wait for everything to start up - time.sleep(3) - - # Create a message inside an envelope and get the stub connection to pass it into the agent - message_text = b"my_agent,other_agent,fetchai/default:1.0.0,\x12\r\x08\x01*\t*\x07\n\x05hello," - - with open(INPUT_FILE, "wb") as f: - write_with_lock(f, message_text) - - # Wait for the envelope to get processed - time.sleep(2) - - # Read the output envelope generated by the agent - with open(OUTPUT_FILE, "rb") as f: - print("output message: " + f.readline().decode("utf-8")) - finally: - # Shut down the agent - my_agent.stop() - t.join() - - -if __name__ == "__main__": - run() -``` -

-
- -
+ self.outbox.put(envelope) + + def teardown(self): + """Teardown the agent.""" + + + def run(): + """Run demo.""" + + # Ensure the input and output files do not exist initially + if os.path.isfile(INPUT_FILE): + os.remove(INPUT_FILE) + if os.path.isfile(OUTPUT_FILE): + os.remove(OUTPUT_FILE) + + # Create an addresses identity: + identity = Identity( + name="my_agent", address="some_address", public_key="public_key" + ) + + # Set up the stub connection + configuration = ConnectionConfig( + input_file_path=INPUT_FILE, + output_file_path=OUTPUT_FILE, + connection_id=StubConnection.connection_id, + ) + stub_connection = StubConnection( + configuration=configuration, data_dir=".", identity=identity + ) + + # Create our Agent + my_agent = MyAgent(identity, [stub_connection]) + + # Set the agent running in a different thread + try: + t = Thread(target=my_agent.start) + t.start() + + # Wait for everything to start up + time.sleep(3) + + # Create a message inside an envelope and get the stub connection to pass it into the agent + message_text = b"my_agent,other_agent,fetchai/default:1.0.0,\x12\r\x08\x01*\t*\x07\n\x05hello," + + with open(INPUT_FILE, "wb") as f: + write_with_lock(f, message_text) + + # Wait for the envelope to get processed + time.sleep(2) + + # Read the output envelope generated by the agent + with open(OUTPUT_FILE, "rb") as f: + print("output message: " + f.readline().decode("utf-8")) + finally: + # Shut down the agent + my_agent.stop() + t.join() + + + if __name__ == "__main__": + run() + ``` diff --git a/docs/aggregation-demo.md b/docs/aggregation-demo.md index c5bf1c7b58..1490e46c1b 100644 --- a/docs/aggregation-demo.md +++ b/docs/aggregation-demo.md @@ -1,11 +1,13 @@ +# Aggregation Skill + This demo shows how AEAs can aggregate values over the peer-to-peer network. ## Discussion This demonstration shows how to set up a simple aggregation network in which several AEAs take an average of values fetched from different sources for the same real-world quantity. For this particular example, we take an average of Bitcoin prices from four public APIs. -## Preparation instructions - +## Preparation Instructions + ### Dependencies Follow the Preliminaries and Installation sections from the AEA quick start. @@ -17,75 +19,78 @@ Follow the Preliminaries and Alternatively, create from scratch. -

+??? note "Alternatively, create from scratch:" -Create the AEA. + Create the AEA: -``` bash -agent_name="agg$i" -aea create agent_name -cd agent_name -aea add connection fetchai/http_client:0.24.5 -aea add connection fetchai/http_server:0.23.5 -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/prometheus:0.9.5 -aea add skill fetchai/advanced_data_request:0.7.5 -aea add skill fetchai/simple_aggregation:0.3.5 - -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea install -aea build -``` + ``` bash + agent_name="agg$i" + aea create agent_name + cd agent_name + aea add connection fetchai/http_client:0.24.6 + aea add connection fetchai/http_server:0.23.6 + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/prometheus:0.9.6 + aea add skill fetchai/advanced_data_request:0.7.6 + aea add skill fetchai/simple_aggregation:0.3.6 + + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea install + aea build + ``` + + Set the desired decimal precision for the quantity: -Set the desired decimal precision for the quantity: -``` bash -aea config set --type int vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.decimals 0 -``` + ``` bash + aea config set --type int vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.decimals 0 + ``` -Disable the http server since it is not used in this demo: -``` bash -aea config set --type bool vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.use_http_server false -``` - -

- + Disable the http server since it is not used in this demo: + ``` bash + aea config set --type bool vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.use_http_server false + ``` Set the cert requests for the peer-to-peer connection: + ``` bash aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ '[{"identifier": "acn", "ledger_id": "fetchai", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "message_format": "{public_key}", "save_path": ".certs/conn_cert.txt"}]' ``` Match the agent index `i` to the `COIN_URL` and `JSON_PATH` below: + - `agg0`: `COIN_URL="https://api.coinbase.com/v2/prices/BTC-USD/buy" && JSON_PATH="data.amount"` - `agg1`: `COIN_URL="https://api.coinpaprika.com/v1/tickers/btc-bitcoin" && JSON_PATH="quotes.USD.price"` - `agg2`: `COIN_URL="https://api.cryptowat.ch/markets/kraken/btcusd/price" && JSON_PATH="result.price"` - `agg3`: `COIN_URL="https://api.coingecko.com/api/v3/simple/price?ids=bitcoin&vs_currencies=usd" && JSON_PATH="bitcoin.usd"` Set the following configuration for the `advanced_data_request` skill: + ``` bash aea config set vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.url $COIN_URL aea config set vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.outputs '[{"name": "price", "json_path": '"\"$JSON_PATH\""'}]' ``` Set the name of the quantity to aggregate and choose an aggregation function for the AEAs (the currently implemented options are `mean`, `median`, and `mode`): + ``` bash aea config set vendor.fetchai.skills.simple_aggregation.models.strategy.args.quantity_name price aea config set vendor.fetchai.skills.simple_aggregation.models.strategy.args.aggregation_function mean ``` Specify a name for your aggregation service: + ``` bash SERVICE_ID=my_btc_aggregation_service aea config set vendor.fetchai.skills.simple_aggregation.models.strategy.args.service_id $SERVICE_ID @@ -93,6 +98,7 @@ aea config set vendor.fetchai.skills.simple_aggregation.models.strategy.args.sea ``` Additionally, create private keys for use with the ledger and the peer-to-peer connection: + ``` bash aea generate-key fetchai aea add-key fetchai @@ -101,13 +107,15 @@ aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the keys for use by the connections that request them: + ``` bash aea issue-certificates ``` -### Configure the peer-to-peer network +### Configure the Peer-to-Peer Network + +Set the multiaddress of the first AEA as an initial peer to help the remaining AEAs find each other on the network. Also, if these AEAs are all running on the same machine, set different ports for their connections to ensure there are no conflicts (from the `agg1`, `agg2`, and `agg3` directories): -Set the multi-address of the first AEA as an initial peer to help the remaining AEAs find each other on the network. Also, if these AEAs are all running on the same machine, set different ports for their connections to ensure there are no conflicts (from the `agg1`, `agg2`, and `agg3` directories): ``` bash MULTIADDR=$(cd ../agg0 && aea get-multiaddress fetchai --connection) aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ @@ -122,38 +130,44 @@ aea config set vendor.fetchai.connections.prometheus.config.port $((20000+i)) aea config set vendor.fetchai.connections.http_server.config.port $((8000+i)) ``` -### Oracle integration (optional) +### Oracle Integration (optional) To publish the aggregated value to an oracle smart contract, add the ledger connection and simple oracle skill to one of the aggregators: + ``` bash -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/simple_oracle:0.16.4 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/simple_oracle:0.16.5 ``` Configure the simple oracle skill for the `fetchai` ledger: + ``` bash aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.ledger_id fetchai aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.update_function update_oracle_value ``` Generate some wealth to use for transactions on the testnet ledger: -``` + +``` bash aea generate-wealth fetchai ``` Set the name of the oracle value to match the value collected by the aggregators: + ``` bash aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.oracle_value_name price_mean ``` ### Run the AEAs -Run each of the aggregator AEAs in separate terminals: +Run each of the aggregator AEAs in separate terminals: + ``` bash aea run ``` After a few moments, you should see the AEAs finding peers, making observations, sending them to peers, and taking the average of their observations: + ``` bash info: [agg_i] found agents... ... diff --git a/docs/app-areas.md b/docs/app-areas.md index b19d603d9d..0de9868c3a 100644 --- a/docs/app-areas.md +++ b/docs/app-areas.md @@ -1,34 +1,31 @@ +# Application Areas + The
introduction and the agent-oriented development guide together present a picture of the kinds of solution an agent-based approach makes possible, and the types of environment they are most suited for. In short, this is where: - * the environment is decentralised, - * involves multiple stakeholders, and - * is inhabited by AEAs representing the different stakeholders who: - * interact autonomously, and - * communicate with one another directly via a peer-to-peer network. +- the environment is decentralized, +- involves multiple stakeholders, and +- is inhabited by AEAs representing the different stakeholders who: + - interact autonomously, and + - communicate with one another directly via a peer-to-peer network. In light of those discussions, on this page we identify a number of application areas for AEA-based solutions. This list is by no means comprehensive. In fact, we are most excited about applications which we have not thought of before. -* **Inhabitants**: agents representing objects in the IoT (Internet of Things) space. For examples, AEAs paired with real world hardware devices such as drones, laptops, heat sensors, etc. An example is a thermometer agent . -* **Interfaces**: facilitation agents which provide the necessary API interfaces for interaction between existing (Web 2.0) and new (Web 3.0) economic models. An example is an AEA with HTTP connection and skill who has the capability to communicate using HTTP. -* **Pure software**: software agents _living_ in the digital space that interact with interface agents and others. -* **Digital data sales agents**: software agents that attach to data sources and sell it via the open economic framework. An example can be found here. -* **Representative**: an agent which represents an individual's activities on the Fetch.ai network. An example can be found here. +- **Inhabitants**: agents representing objects in the IoT (Internet of Things) space. For examples, AEAs paired with real world hardware devices such as drones, laptops, heat sensors, etc. An example is a thermometer agent . +- **Interfaces**: facilitation agents which provide the necessary API interfaces for interaction between existing (Web 2.0) and new (Web 3.0) economic models. An example is an AEA with HTTP connection and skill who has the capability to communicate using HTTP. +- **Pure software**: software agents _living_ in the digital space that interact with interface agents and others. +- **Digital data sales agents**: software agents that attach to data sources and sell it via the open economic framework. An example can be found here. +- **Representative**: an agent which represents an individual's activities on the Fetch.ai network. An example can be found here. -## Likely short-term applications +## Likely Short-Term Applications In the short-term we see AEAs primarily deployed in three areas: -* Off-load repetitive tasks: AEAs can automate well-defined processes in different domains such as supply chain, mobility and finance, etc. - -* Micro transactions: AEAs make it economically viable to execute trades which involve small value transfers. This is particularly relevant in areas where there is a (data) supply side constituted of many small actors and a single demand side. - -* Wallet agents: AEAs can simplify interactions with blockchains for end users. For instance, they can act as "smart wallets" which optimize blockchain interactions on behalf of the user. +- Off-load repetitive tasks: AEAs can automate well-defined processes in different domains such as supply chain, mobility and finance, etc. +- Micro-transactions: AEAs make it economically viable to execute trades which involve small value transfers. This is particularly relevant in areas where there is a (data) supply side constituted of many small actors and a single demand side. +- Wallet agents: AEAs can simplify interactions with blockchains for end users. For instance, they can act as "smart wallets" which optimize blockchain interactions on behalf of the user. - -## Multi-agent system versus agent-based modelling +## Multi-Agent System versus Agent-Based Modelling The multi-agent systems enabled by the AEA framework are technological agent-based solutions to real problems and, although there are some overlap, the framework is not designed from the outset to be used as an agent-based modelling software where the goal is scientific behavioural observation rather than practical economic gain. -Moreover, there is no restriction to *multi*; single-agent applications are also supported. - -
+Moreover, there is no restriction to _multi_; single-agent applications are also supported. diff --git a/docs/aries-cloud-agent-demo.md b/docs/aries-cloud-agent-demo.md index d81f0d9de3..3dbc9595ad 100644 --- a/docs/aries-cloud-agent-demo.md +++ b/docs/aries-cloud-agent-demo.md @@ -1,10 +1,9 @@ -
-

Note

-

This demo is incomplete and will soon be updated. -

-
+# Aries Cloud Agents Demo -Demonstrating an entire decentralised identity scenario involving AEAs and instances of Aries Cloud Agents (ACAs). +!!! note + This demo is incomplete and will soon be updated. + +Demonstrating an entire decentralized identity scenario involving AEAs and instances of Aries Cloud Agents (ACAs). ## Discussion @@ -12,7 +11,7 @@ This demo corresponds with the one +``` mermaid sequenceDiagram participant faea as Faber_AEA participant faca as Faber_ACA @@ -41,39 +40,39 @@ The aim of this demo is to illustrate how AEAs can connect to ACAs, thus gaining deactivate faca deactivate aaca deactivate aaea - +``` There are two AEAs: - * **Alice_AEA** - * **Faber_AEA** +- **Alice_AEA** +- **Faber_AEA** and two ACAs: - * **Alice_ACA** - * **Faber_ACA** +- **Alice_ACA** +- **Faber_ACA** Each AEA is connected to its corresponding ACA: **Alice_AEA** to **Alice_ACA** and **Faber_AEA** to **Faber_ACA**. The following lists the sequence of interactions between the four agents: - * **Alice_AEA**: starts - * **Alice_AEA**: shows its P2P address in the terminal and waits for an `invitation` detail from **Faber_AEA**. - * **Alice_AEA**: registers itself on the SOEF. - * **Faber_AEA**: starts - * **Faber_AEA**: searches the SOEF and finds **Alice_AEA**. - * **Faber_AEA**: tests its connection to **Faber_ACA**. - * **Faber_ACA**: responds to **Faber_AEA**. - * **Faber_AEA**: registers a DID on the ledger. - * **Faber_AEA**: request **Faber_ACA** to register a schema on the ledger. - * **Faber_ACA**: responds by sending back the `schema_id`. - * **Faber_AEA**: request **Faber_ACA** to register a credential definition on the ledger. - * **Faber_ACA**: responds by sending back the `credential_definition_id`. - * **Faber_AEA**: requests **Faber_ACA** to create an invitation. - * **Faber_ACA**: responds by sending back the `connection` detail, which contains an `invitation` field. - * **Faber_AEA**: sends the `invitation` detail to **Alice_AEA**. - * **Alice_AEA**: receives `invitation` detail from **Faber_AEA**. - * **Alice_AEA**: requests **Alice_ACA** to accept the invitation, by passing it the `invitation` detail it received in the last step. +- **Alice_AEA**: starts +- **Alice_AEA**: shows its P2P address in the terminal and waits for an `invitation` detail from **Faber_AEA**. +- **Alice_AEA**: registers itself on the SOEF. +- **Faber_AEA**: starts +- **Faber_AEA**: searches the SOEF and finds **Alice_AEA**. +- **Faber_AEA**: tests its connection to **Faber_ACA**. +- **Faber_ACA**: responds to **Faber_AEA**. +- **Faber_AEA**: registers a DID on the ledger. +- **Faber_AEA**: request **Faber_ACA** to register a schema on the ledger. +- **Faber_ACA**: responds by sending back the `schema_id`. +- **Faber_AEA**: request **Faber_ACA** to register a credential definition on the ledger. +- **Faber_ACA**: responds by sending back the `credential_definition_id`. +- **Faber_AEA**: requests **Faber_ACA** to create an invitation. +- **Faber_ACA**: responds by sending back the `connection` detail, which contains an `invitation` field. +- **Faber_AEA**: sends the `invitation` detail to **Alice_AEA**. +- **Alice_AEA**: receives `invitation` detail from **Faber_AEA**. +- **Alice_AEA**: requests **Alice_ACA** to accept the invitation, by passing it the `invitation` detail it received in the last step. All messages from an AEA to an ACA are http requests (using `http_client` connection). @@ -85,21 +84,21 @@ This is the extent of the demo at this point. The rest of the interactions requi The rest of the interactions are broadly as follows: - * **Alice_ACA**: accepts the invitation. - * **Alice_ACA**: sends a matching invitation request to **Faber_ACA**. - * **Faber_ACA**: accepts +- **Alice_ACA**: accepts the invitation. +- **Alice_ACA**: sends a matching invitation request to **Faber_ACA**. +- **Faber_ACA**: accepts At this point, the two ACAs are connected to each other. - * **Faber_AEA**: requests **Faber_ACA** to issue a credential (e.g. university degree) to **Alice_AEA**, which **Faber_ACA** does via **Alice_ACA**. - * **Faber_AEA**: requests proof that **Alice_AEA**'s age is above 18. - * **Alice_AEA**: presents proof that it's age is above 18, without presenting its credential. +- **Faber_AEA**: requests **Faber_ACA** to issue a credential (e.g. university degree) to **Alice_AEA**, which **Faber_ACA** does via **Alice_ACA**. +- **Faber_AEA**: requests proof that **Alice_AEA**'s age is above 18. +- **Alice_AEA**: presents proof that it's age is above 18, without presenting its credential. ## Preparation Instructions ### Dependencies -Follow the Preliminaries and Installation sections from the AEA quick start. +Follow the Preliminaries and Installation sections from the AEA quick start. Install Aries cloud-agents (for more info see here) if you do not have it on your machine: @@ -111,7 +110,7 @@ This demo has been successfully tested with `aca-py` version `0.4.5`. This demo requires an instance of von network running in docker locally (for more info see here) -This demo has been successfully tested with the von-network git repository pulled on 07 Aug 2020 (commit number `ad1f84f64d4f4c106a81462f5fbff496c5fbf10e`). +This demo has been successfully tested with the von-network git repository pulled on 07 Aug 2020 (commit number `ad1f84f64d4f4c106a81462f5fbff496c5fbf10e`). ### Terminals @@ -126,7 +125,8 @@ This http://localhost:9000. ## Alice and Faber ACAs @@ -149,9 +149,9 @@ Make sure the ports above are unused. Take note of the specific IP addresses and ports you used in the above command. We will refer to them by the following names: -* **Faber admin IP**: 127.0.0.1 -* **Faber admin port**: 8021 -* **Faber webhook port**: 8022 +- **Faber admin IP**: 127.0.0.1 +- **Faber admin port**: 8021 +- **Faber webhook port**: 8022 The admin IP and port will be used to send administrative commands to this ACA from an AEA. @@ -167,9 +167,9 @@ aca-py start --admin 127.0.0.1 8031 --admin-insecure-mode --inbound-transport ht Again, make sure the above ports are unused and take note of the specific IP addresses and ports. In this case: -* **Alice admin IP**: 127.0.0.1 -* **Alice admin port**: 8031 -* **Alice webhook port**: 8032 +- **Alice admin IP**: 127.0.0.1 +- **Alice admin port**: 8031 +- **Alice webhook port**: 8032 ## Alice and Faber AEAs @@ -180,40 +180,39 @@ Now you can create **Alice_AEA** and **Faber_AEA** in terminals 3 and 4 respecti In the third terminal, fetch **Alice_AEA** and move into its project folder: ``` bash -aea fetch fetchai/aries_alice:0.32.4 +aea fetch fetchai/aries_alice:0.32.5 cd aries_alice ``` -
Alternatively, create from scratch. -

+??? note "Alternatively, create from scratch:" -The following steps create Alice_AEA from scratch: -``` bash -aea create aries_alice -cd aries_alice -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/http_client:0.24.5 -aea add connection fetchai/webhook:0.20.5 -aea add skill fetchai/aries_alice:0.26.5 -``` -

-
+ The following steps create **Alice_AEA** from scratch: + + ``` bash + aea create aries_alice + cd aries_alice + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/http_client:0.24.6 + aea add connection fetchai/webhook:0.20.6 + aea add skill fetchai/aries_alice:0.26.6 + ``` -#### Configure the `aries_alice` skill: +#### Configure the `aries_alice` Skill -(configuration file: `alice/vendor/fetchai/skills/aries_alice/skill.yaml`) +(configuration file: `alice/vendor/fetchai/skills/aries_alice/skill.yaml`) Ensure `admin_host` and `admin_port` values match with the values you noted above for **Alice_ACA**. You can use the framework's handy `config` CLI command to set these values: ``` bash aea config set vendor.fetchai.skills.aries_alice.models.strategy.args.admin_host 127.0.0.1 ``` + ``` bash aea config set --type int vendor.fetchai.skills.aries_alice.models.strategy.args.admin_port 8031 ``` -#### Configure the `webhook` connection: +#### Configure the `webhook` Connection (configuration file: `alice/vendor/fetchai/connections/webhook/connection.yaml`). @@ -229,7 +228,7 @@ Next, make sure the value of `webhook_url_path` is `/webhooks/topic/{topic}/`. aea config set vendor.fetchai.connections.webhook.config.webhook_url_path /webhooks/topic/{topic}/ ``` -#### Configure the `p2p_libp2p` connection: +#### Configure the `p2p_libp2p` Connection ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ @@ -242,7 +241,7 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ }' ``` -### Install the Dependencies and Run Alice_AEA: +### Install the Dependencies and Run Alice_AEA Now install all the dependencies: @@ -251,40 +250,37 @@ aea install aea build ``` -Finally run **Alice_AEA**: +Finally, run **Alice_AEA**: ``` bash aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` to retrieve the address.) We will refer to this as **Alice_AEA's P2P address**. +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` to retrieve the address.) We will refer to this as **Alice_AEA's P2P address**. ### Faber_AEA In the fourth terminal, fetch **Faber_AEA** and move into its project folder: ``` bash -aea fetch fetchai/aries_faber:0.32.4 +aea fetch fetchai/aries_faber:0.32.5 cd aries_faber ``` -
Alternatively, create from scratch. -

+??? note "Alternatively, create from scratch:" + The following steps create **Faber_AEA** from scratch: -The following steps create Faber_AEA from scratch: -``` bash -aea create aries_faber -cd aries_faber -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/http_client:0.24.5 -aea add connection fetchai/webhook:0.20.5 -aea add skill fetchai/aries_faber:0.24.4 -``` -

-
+ ``` bash + aea create aries_faber + cd aries_faber + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/http_client:0.24.6 + aea add connection fetchai/webhook:0.20.6 + aea add skill fetchai/aries_faber:0.24.5 + ``` -#### Configure the `aries_faber` skill: +#### Configure the `aries_faber` Skill (configuration file: `faber/vendor/fetchai/skills/aries_alice/skill.yaml`) @@ -298,7 +294,7 @@ aea config set vendor.fetchai.skills.aries_faber.models.strategy.args.admin_host aea config set --type int vendor.fetchai.skills.aries_faber.models.strategy.args.admin_port 8021 ``` -#### Configure the `webhook` connection: +#### Configure the `webhook` Connection (configuration file: `faber/vendor/fetchai/connections/webhook/connection.yaml`). @@ -314,7 +310,7 @@ Next, make sure the value of `webhook_url_path` is `/webhooks/topic/{topic}/`. aea config set vendor.fetchai.connections.webhook.config.webhook_url_path /webhooks/topic/{topic}/ ``` -#### Configure the `p2p_libp2p` connection: +#### Configure the `p2p_libp2p` Connection ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ @@ -329,7 +325,7 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ where `SOME_ADDRESS` is **Alice_AEA's P2P address** as displayed in the third terminal. -### Install the Dependencies and Run Faber_AEA: +### Install the Dependencies and Run Faber_AEA Now install all the dependencies: @@ -365,10 +361,10 @@ aea delete aries_faber aea delete aries_alice ``` -## Further developments +## Further Developments In the next update to this demo, the remaining interactions between AEAs and ACAs must be implemented. This means: -* An instance of Indy ledger must be installed and running. See here for more detail. -* The commands for running the ACAs need to be adjusted. Additional options relating to a wallet (wallet-name, type, key, storage-type, configuration, credentials) need to be fed to the ACAs as well as the ledger's genesis file so the ACAs can connect to the ledger. -* The remaining interactions between the AEAs and ACAs as described here need to be implemented. \ No newline at end of file +- An instance of Indy ledger must be installed and running. See here for more detail. +- The commands for running the ACAs need to be adjusted. Additional options relating to a wallet (wallet-name, type, key, storage-type, configuration, credentials) need to be fed to the ACAs as well as the ledger's genesis file so the ACAs can connect to the ledger. +- The remaining interactions between the AEAs and ACAs as described here need to be implemented. diff --git a/docs/assets/images/favicon.ico b/docs/assets/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..8c5a4d5b3ec784024720f4a537eb5f099ce3b2ad GIT binary patch literal 1150 zcmb`H+b)Aq5QVqIog0ZnP-j&|ix4V~Jl+ALyz<%IM>NJy{oGUhVAu}>1mPw8tLv( z8SC3R(kvN<)=KNl_*ruy-X+EKgv>=-Wv;hPikS(?_IGGpv+N}kvNY7Ac_ArG4$DR& z{tF{N5SHV7%JSzmzqFW^T&&aLj&d`yGSVw4tiulh;&_#bAc<^AQ^FyMg}{J>M*g}1Hj54?c;!Thx3R0q8P20Y+K zPk5d1pg;WH&x?Z*tDWs@Hw=743$d*6ojTTE6?o*s|GKmN;4KoLPeM2Zxt z2Bk;`5d`Vd38CB_-uHXY_n-Tn|DNaO0o<8AYi7-?X=~Op#!z3AhVn8c001-yEj42R zIQtTO{&b!U{JZS*s0jRr!c)r%0|25t#9xwt=SqG6Kz7&3)Y8XNPgl;~!%Ys(^Qh+DY-Ua2uX@_!ja#!G9uW#b!baGJOwvf_;>UpZ7?mB4&dZSDN^-b*q zUF_iw+)9d^*8}800&XZDBxit|t2;(6K!N*|t{nJG1dDNVo}&1;C~)5(GUT+>GvrkD z@J4Y;iAsyui%Uvz%D_d%rD2kAxG<*#R9sdJDk~-q6A_n|lZ47iNO1oB;Rd;RJD}x^ z)inO*1%6ZDzU$-TDJLf8@9!__4-@t9b`%qb!{K632{8!?5fDQJbI;ue86e`0;rSN@ zH5A6)+sV_%$-|wKND*o0;p?No4bJp05!^igA?uF$TTP(C!~&3>V&bAuqDZHR4)*`x zdHQ<0o-%i^7el$C+)(a57!X(dA6(D79zGtJyB_}o>3?4T9}Ga%>goN%<3G;D&Fvo+ z7$0>%P>jD7@*lA=ruRHiV#X+php)FiO5G2fCJ#{>PdQa@6w=4T+tkCu^r4yNKk4gH>4v<%+uYGoAV!C%Bgy| zdU%73!P&w79ga{{HT3pCJGp`{FvglHoCtMQX>qu;w1|YL_~~@@^yCok7$2m&Jqn?w zzzu3h)XB*~4i1x&go@kQiO8TNr9>p*k`f|tBpfDUXOFap*&`if?Pbva8n5PI?@P1; z;`qN@!okBHr14+VgNfVO%R(igB1jlqRz%uC5-kEJPD0uqChi~slYlwE;s2s$;Ozu@ zCDQfZsS;=908*5MqU>NOBuoVD0E3E1%A&vt!H{SXDU`H?gfvuI8if=m+Wx6I$!R%Z zz=gi|w>O!fy#9W2b>cj=AUUKx(K8gd?TIFVa^U_O?DQY>@xS8y_jv!iD3Iv?#Y+C- zj`2YI_#?ehHylCT{qIas?0=NN!`%<%{ckdOBE6AdR6==U6u8me9&VgSPfu4Tdn8d{ zF+X>Qzn%S`CF1n);QTMk`XBjVkbeJnJ^k7NK^- zG$3bna@BWMx^{Pis;_&m)#THc63!e-6^n~{=f0U{~`3Yrj{TUcj zMDc^8V1Ui#dMMouL(cXS50N*zt|ViD55wbGk&wgKg;yjVE zbEi+?ue1zFPMAtE(FH-9@4cuZtpBaCPX2zzcS07erIM z;Z8oT?#ua|GYy$m0wt*@hs@Yx&FHXnd3@j9Y&lV28dfE=FrmIC3&aU+D`e*!*#OFS z(B@h<5eMo9_SO2vLM6%DU*NSNg@=hv0lyY-8c7Efi!QG^P-x%z4qtfx?1x_b`wCsO z`IFJH-g4nd#~R$x`*0ISvGv`i8w6s);5NeNJ)(2;nyHYM`7)~me+&L2(t{FOXj z7n}(%6tB__WwL$kWez{Xnw&MMb#ozswE2At=PaK;8xVfI<^8I8X!{_SHbMryn_Xmp zt6QtSf-N|c6pwcca>2KmX2F<&4K00=9$U0fa?Y9XcFL|2c|4EBK`HNK*664ULJ-tf zf+*xg<0BFgXb_}09CiL7J=O%MFr4qpj@8pwD4nygX$X*pTWqwhL>|5I9U-l!?7E^(>^ z00f!y4C0r!Y?2CEZXbpISp9BKc0VIhBqVWMlqBbo=RJJcgcrcd(j@>i7kYlih^q{N zgo(&$Fbk#4(>cW|FIxkz2cGQr{3(i#?tqoSb~y zi>Y+qz8lVEebM$$? zwD}bTM=l2Z878U|065E(G+$!24q09mw75o!+~H`&Uu*ik*c;IVaT_@!tq3dQ4MCVr zYV=#sgVib+71(igud}4IYhC8Y;KNy?{!I{YnK3xGZIxZ7*)e&>ke3?$kr?-k0#PEm za$x?iHzSIsLW|2fVYZJs!Yvmrhd$4bFM@%#LL_HBv!ByPTDCZs_;c~j0gup2U>l8o z9_6u0U^8zz4FP;OcrC^Frk!8E&*o!>C&TW|l!AabaoGT%xh2ADLK81UV0Y$OYz<-& z=ecpNAfqDCS)qXPZw4l~y3cTbzC~R{{9uD;m3e=4u-(!Y7mIk1%j4twUh@ZG!Ny(>@ai5eo3fo@EMG41FxTr)l|%oCs;Y z07f|3M_I2SX>{th@U0s}AP_)DAqYetNL5Y@tCo+Pf-FTrho&{tOkISyrD&XLL>3Nt z34HA76>N7~AFl``?k0dgSBYpwn&|`>>LL*kKA`r1vYE>cm+zd5(OXg`!hqsva2~3r zbf}sb`%^&9HE`GzBQ9T%JN7tDnw|)3E&;>v4+WGi*TRIT8!HhMZlVqn3o3miQQsy` z1OWQ1;7r%?@MpRya_5PF=Ec)d>S|d{Cgguj)0#NV;)H7hkc3l!XA3AZt7^795g%v{ zPAWL_M-V1t-wj_FdzX9))V~Ch^$@_E>Ijex0Vx#K{GBOm@BD|PKvZn)U>)h{=p02* zn$u4w2>{z$`w zAZ9aRIt?es%MhuV>DQQYy{n9#+`X@`rV%HTCwn@V@qHO>j#T8typ@zSw89$E6$7 z4^jIidu#P+CsPMH{W$n=e85Tbw+OR0)p-YzzaIHpEOqpy&nexS27l}6);Sm!cF`q` zCl4{2wC9>HqWxr4s-GW(A$$XG3M%ok=;S@6(5VCy@1iVePotcI?_sUap^YQjLT<{% zQf+Ej)QQpQa4~0mj@C|JrT#6};Jhi^{+_CklhDb5v=vVl99BO#rCmds8?TT_z1}+g zYx;3}=HAeNdFTUF3Y@l}Hl}txmv4|iZpAeBSo@Wo`J?y=4SLXX>E)IN8cQg4_tn~A0dN1Q6KJnRK|1AJ{f%`@NRUKy;cx`*TalDhibv$kZ zn1nm6wK8RO^-Iaf_zR_@P@kXddW9MbVkJX2JLwc64&p2Qn9JLrXhU`c8 zjS#&RfbG6A2`juOGP+inw4QoBqJxUFpQCB943CRzt}=nF_g(jUtF@3eU}o))VO-J3GxJR*dC zOtYCZLen}5Cr(?KttopRFk>?V-9;AjC>{;mct8oDKleJr>W3@kIQ!DD?q60CvS2?# zsPyhO6(#vFVaa^wEt!RMq1S&)*047eo3bi9CXn(AZd0wln+Qd6olN@m&HXw|F1UFf zCe%vbNxrpafJDqq;V$PS1;ZlXo@>FN;E+Uab`{of&?fcXe1!)w228E;@Vo9#2-0N~ro-_Apxm%eP)) zWTGBcT^@v6sD#R^uQZZ>kXXx#K#^-AA>i}^F_d=Yw6e$il(soy(R zr7DU8x3BU)lWgJK*7xXZoa~jtlU*OXB~{%vI^XDwr$yw#X*tU(oDaO@Ii@T+_ae)^ z$-PT=58TQ=ChMvQGzGpPlK(wgS|WjwH8Jn3U6#?kgX=Mx;F_L4;y~4w z4lXxXEOzW!=SqIyVA`BEa|8?bIYLWJrgBq-(QU$=uBL^aKU-CY_SaI>_diq@b@$#K zc6@MlXz|w0`^g-7(3@kmS+k+3%O^G6yj7va z27%gnI~N!4O}T5S2ff+y--+0>7CFf^qp3@@VB|(blCt01d}=nf+i-7j?`g=(U*o$s zXL+Xt@qR}GUw6;U^4y5jR9^!EOM@nA2B{vRY)f0}#O*!4I6;mCoPu7RU7G@YgpTA3 zce4+}tJr2lhi4RVIhe`wJESR|MNESICiQRS=fmZwulZripNBE*H+9#tx1aa7>b!tf zlwXkM8EiVw^HIz{@L+0*eh6RMus4ayw6*F9b4;UHe{m5Z_>sqTQJw?ueiMH@n%@y9 z7S*?5ZgAA1(r6v#I&C62r{wZ(nL+abC1&XNA6f&Mn~VeA(ki)4B`2=IJd51-Agxk$ zq_S3Aby>GIJYMCdvq}1-kIQN&^SA!$=iWBk7flgeCHf2jCy|84R0H$Z zkfU;+aexY6<*k_ab&rw$e14%&{IJ-{+<3pzizH5(^^^D_y?_-LeBaHiKkj#ji*dbo z2z6C-x<57&Hs8BGi{5-PdUStddOo50!WQ`y`%f4*=&p6WxwWuVNc-55;%#v8ZY^6ZeYmurbHeabAb}vvh6^U_L;rZK6`n+dWv#PJ@dt;k20^Q;_4c=_`wksf zMK>^>1GC5WYxP$*1hUTRZ092THVtpLuWyGa{P7EmyR0470IHqi> z%fmxHyGJ(}Q|^ni);=g`Ra%ICIcH(aM6rCfQoPA~siAE2^GH|i6^{9Scde5ec9uYA z`4168(<3TaQ-RFUx~PzRYn_81IrTZ4vD^z2IC#e9k$Lv?&&0^8jT*OFtfErQy2)|y zDph_p3_mnluQpUpfRuQu^}) z8R?P>TV>qt42m*)8rUUU@C~BU%UoY!gn}38nqyY7Jdx<4n{F#TaTo;q-hgjgUWw=k zQTp+Ay$qvtb6+MlRriO?5K*AL)g>>vY>xzFQPl;5G+WvYsO35tCrG72Alai(l^r54qri_I_aUm zO!-f8;blxF>s~nDryPHb7IB;(-!fdDdyZDba|AiGSu9L+2;@9u;Asot3k$^=%6wMq z<{p(5DlY$J0dc4Qo;5TTTiSQIF>oW+FXX0{p@^F0XZ(%OMM74v>JAs1q};8i_YYnc zckFzF?=>MGUxYfP?<#NS9uiLEj6zcA>D@WfUToQ15)u|y<$)CYZLWSsJv-p*fDcE6 zs+4xU7s_4~%;(vEb{u`lfAf~Mm3X&Ctj${*2AGO>X|l((*nDN$n>R^5 zgaXgVVG{RVn?ry>`GGUC#W`Zqw7e~)durC%yWGAYdNSYl5g#pLl_nX8d=A+bZIk+OYjQ_xkMO4}ri8*_>A`L2kbVkHuzS ziND?(eV7}3WdYfxJBVVzDmqzC|B32~cH#tU08Qp}`Y?o{SsB9}shuYcs|~BorH#Tf zaX|0%)OTY^uB z)7=;DJUQ$8#kj@I^0t@A`99UrLM@&X#TAY7juI+ZXIMe(6GZ9&3!lg^MXB>#qUR{@ zOP6#NLg#;-4l2B1s~~+JQ<*gcfz&IDy4AvbO@?Bo@HPrJ1IMB zW-Y&ziQ$jjjd>S+BYCdKN4fx5!}i zm-Y|M>o{5mGp*RS)aDZijG0zQ^a*vaLADou#XoB_@CPP1iy&TP>otv!KImZnm^&7= zL$bf7bOY^|@dHzhJCc2Y>lJ)V5N(()XB z(W1($awR!p^;*tl;~IZBQ~H~$l40{@lF~Ly=dZ_67w(h~L{wf!suaWs>yK~n@L4wc zzkW}Viaq=LFiQzmde!ip&=UFiTW$o!u<9tAALkXoZESdQ#Ht<2VM9NZ!aw6$jygqd z(sJidmvkSVXegk-VW{5vgEz(?R)>4=9s4xC+pMCIrEx$ex!t1c%%^XWLvK~FBk_mQ zM${MUjBB*6p1%X`wgHWca@?vo*7pVWN+T8sHwP;sHLiyl`p0oJ)QmNDA@SEfm>ur^ zG#L;G#r_yhYX8rv5 zE15Tk;DktHGFjT)k+-mJ4s|xhWcN2BL)+vk1BAx*zC}z@j`t#eTmq#_y0fxW!hVa; zPesu*LVLCBr6;v&ZKzMlnNJt;_}}|u73CHJrfj|o9AEs?ettdITJ4*h6Q?ZM*q&4U z#al;wk)UZo7)7~mt1&yKyF!p@s#lDBzGQK*4m1y$T&YQq7jh*X?XKm>&&4?2ZvLrv zi)@gbz-;tFoBix(7})+v-wg>S6^*^0Otge|b`}QWU)gM2$sItUe`HN__xL_D2@z)5 zEPEkcN18=av&ZhvV)BS8ptn0|OAF4is70o0XLlBil$><1GDfBPE@g}Z(sNXUF@Dwd zjK^i!`eSknUpd-^+a09^4<%oT%1?wNN+gi1tO(1Hh6G`KLTE7LEdK*gh$5K7j%l{U z#gBq$zb1#zmwBu-)0Y{;e6?+b-&(x5RcWo3CE-QQ+M(^Gsp#`8MCpU)^ET^wC?`>c z{eqQjWyJ}Oh3{LT_O(b7kC+gfqffC{b-zmc1F%7jR6N}GBCGmJ5$|e{;&ul=(H|jT z6T1CN>Z+xJ@AanxwV*+2Up~()=1L*T6YFQ^$38Id$C~-q`XdSTCC()Ckw$BE##J>! zp5BPxxC5>I2H4I~zTBjdZm-j}(eAn>q(V=x#p}1jXn|;DT=gc0n&_R*SIdLR%3YO^ z2i8HIaYQNK#$FrnGJ82o6}?|Wryhp5Lc#3LWR)OtKJ%GJ9cgBX=ri3cS+XLQh7frt z#@`~_J@vgv;mct2g!LL*fwdarB!uQ{h$~O`EBcP`$jcQCi6WmeORd)cbm1U zB0NM#yWRW!jkK$jDj8`Feh5MO$++E}W%32}87+ql`S9lyWj;_n@l|_+HpS+ecg$Jbinrdm%EuC>nm&MeIo`i9Ju@CO2h1fTUvgDaQ7)RRRtGLja& ziMXtxbW`T9ZQmu%3SrVQ>Y6ay(kEcAz(ko4YFtxCYDqi^faC&Jj_RWihIduzNzG)^1IC82M_zj)h-!DNs|J6y}gv})$8>|_c@<~OOXBuoP*kB zPgZmal$yHg@ih~^1QIIof-fVy)TCN5Ol08}>gg`@pTi?sz8{EUSRbo`k@6>#cw`Pn zZwv}mzGC!3myI;NFixNiZvsH?nW<%^Zx!>s>0)p0Cn_!g1n_~1w?_f?_%tg1Ho_U#MH?)EO!W4 z<_SL21q}r3r<<(-NqLxZsj3O2Fr_2tK_3PEflj`8VXlHs@I=k_at@|`LL4ypOEGn% z%F_Qu+_D1nWt|r0CYFev=r=7VHCVs58Ql5UKkuFKH+=b>g18gQQo|Zz|CE8P&Mrn; z0O-nT*^>kS*!S3&u0pOG)%*}o_wAM%b{JtPr~bOP79!J%>*T$8-?0x0eG35w$Vsn4 z?bhCMNUjoLhXpp?rBuEmPWen406b^U~eu2+r$_x3RjVM!Pidifgj_Rwh)9y3?Wup*$v*b1IUBvp?_-a7C za~tbtL-xSdOXY#5z2iBHIa*tUmLak{7W53ucc7vy$@r|m6P40#_GWBS!RFZ2+EtBM zr10eZS{KbYB=wi4GCsJ~&s3yT!*jI2=wU9gtqrxA;kE{LlM1kNIWD}bv>)*tv+5GD zsC}=A;&qzP9QDIeb#*l}%zf`xQ0$!AV8=u8y zFm@FxJA+mNT94U}9GBh|-Tv2i^ygjYQY@=}<}B}Cwb*IV^TR5_7e4SrrFHWoWCHP& zajy?&ofBCvq!-6u+uEaMm<0O4i5(g&aRNY!Az}=jK;j|f4Vo?F zI7zdC56wMx%}gr7-$e`IqyDfUrXfwm`qO)9Axxmf3e7;KqTtTLpA8IMqrAEuwbLXZxy<3 zYFXS~)WCe8O!%GM*xm!o%NNmG#hb*rwXSgY3{jkl=m1B1lh}?u>GW;_ zQxM`6s6A7#j<5~)yoSDFl=_LULYZ_d4y<*6@FEq$lp3QoFU?tjuLgY)#7GY&n<~nl zXcFN*>1VoK(n>()N3cM^x`htV9W0cADU+F){X~~^FKzrH7dCUv{uCz)=-zTA90&DZ zgSLTTM@IvUzER^~2CtwHPQtifu}V$L0HDaHA?w_+{f!3XT`h57l5bYV)#)cY(t1iM z*}kozLs24@i;Mukcw8e@pshQ1rS}!H#d;6%#HMJ&(V@<_n-l2$Y?J&ebM#!e(_^>k zCP@4l@%PW{(8L-k9;^hXt@>$%`^~+^m9=5F_~Xw4Nxk82p|`1d3MPR< z5mKv!jkkf$a>VLH?$%ordGq}oj67I?d(n>rP$MMjNVHNG#IgQG3tR;?q~-7Im(Lph|2|GO!on$2zv@UBW%24 z#T!|a9pUu@MR=HD+@G5@*?)&rwmB(Ahn}B@N@%FG7ioKeI5#oB3IXvEwzMoJ*T*eq zt%X9FhGKiLiTv+ahN!}BB0e}?p$)H%FslTm8{4DHvf{-Np0E)$V`)DJePn( zv6GjfF3OtP%33H~0oKwl~vq_RP^T1<{sxC@i+GNZ8ld zskeD5(0&r;ovd8FkVS)V)p4b}3iobV9D~sKWBTiB>F+w@Kil+I#qSHuejtZoNR-zzeUGgx9m5#VZUewlf zT**apnOT#+S5?1F55y#N6@qajOE#*VqU#%%;|Su|*Y@I8lv-Dbd8>^OK$YxC|6uos zhID-I&5W=W+i8vU;OixPYJniu)B_5hZ@KfnCO6;7dYEuB1a3EYeJ|?F<}1}q62K$)T#2h}381do5F^LQc4jy| zORflopod?EnoG-7JLsmS=}@JEH-tyNzUIVov`wT;gwoUdUATOFr@_{RBb*giNA)}_ z;=NSW*3*rg*sqP#LggXrsc4l;$wYbSB3qedC`xZ;kFr~2ZIStD>`K{{;V@v9dB7y^ z6p;pZj47=buPRgX{bH^)NK+TyQYccj0+1aP&1foX^`~V`3OCrW();ekdQ4l#`=JS1&wfp!bov zoR{O=2KQB_N1JC^xuF-(HMA$9m=0g+AWdZ-iqcyyPj7wLO9)_H@4XxW zJ#1;xdfaUhx9_fRU|72f0fZylBYfeX93MJ$3k0dv`-+22ZX@5c!}O*tu+w;l6`0nM zGcdH~$Bs60qRpckdmbLfX2|2`TJ-k!9%d;-6qzN94}Ob8Jc2z(7@KXb5>Q}gk4twD zJojy~Z;c%}Z7p7cV&PjzD;WNJq zlbcpk)n9><5Ys{mv>72~&xaRV7&p1<8Fgt`9#N}Z<*dEgRigLogZ>bhP8xF#diUN& z>TmNQ)2a`Dtk0PvpNtB=!tG-##ta};_XD_|{!u?_Y^A~ln@j7nS)K=9&eyX>EpYTw>7x~`-9n!zIM(>>B?iriW^hm9>04#PR9F}Sh@ z*KiU>)ft%|Ovcpw_|0#gc^DxQxO~>^ON{~MWdp=4qhd^Dx^^Aa@sk6RiO$ z<|D=>U1crf5W^=A2l8+A^yN%OitXD)5VQncztj!M#t3v>kba~2axWF^Eu}C+mvdFM zjN`rBHMo?L@QzCqYo26Xa%|ywa^k!Sx$tVlZLtd0r_)|372RAG&e@S)=i|ihS^X9; z@`e3^m9{{Bp?Y74z>eXmfGyg+HV>w?`A zx+Su7hvz;E8rsGRzuL3~gM?Pblh^D-!Ze0v;Sobxdzgv_M05wDTTHv&te&o`1VQu; z2Cyd1!8mF+`8wKgO$*dXtxHp1FQZ%EA_tEl*s;tfoo_;AEyna$8uj}%u_h0L*)2m~ zXSs7^S2kqr`nA;y?D$B%CO|W-;se5_M_t6+_pl=_@xyl{v5MdoH|)MIpRd0D-G_?K zAG>tAYS$M6pTxbVOaa;-?cv2>WhzSB=KV^WDYRvDYtFMd1TAmppS>&X`J~;}Q8IrD zQ+|6!U6=(s)q%IC?#w5+J*tqH`QGR+AE}GK__Q^U;ZCupf5(bse&wI6wPjKNiQ<++ z+m(F(ymj%3tgzML`SAqqPxd9fwQn-!$Md3jlwJg7-;-Blim|D`vbA0%u{SGsZr(9( zoxV{q`h$#80lfCCTNHlxSxxY&diQIsDkRuH_Fa3wAiAjl-czhk?CjXjBTOVNkM!17 zb@+K4*UO;@$0Hmct7dmFedKMyEM8$dNefQ2!r%O(6na#T80oaQlzOZc2qpqeXV)!Y z*}p2`LHKTZ_5De~>*e$Bjc6Q?ClWK{ZVBN#qfwHo6myAAytc2mQMgEl71g+l)a+KLor4I6vf ziuZTKpRKv7IJzHw)}zELeBhW*4W>fm?4i$i^uEe6+5B?oO3>*l32}iDdf>GR8oJG_ zS2O&wN7D{Bmvc&c_oglQ<#@ZmV^egE*}<>9$U9mI&y9A5JDsf1e32zPD#I4H48c^hqeF7%MDhl=wTxd{OwC-rbU^<;W^MfU)#Ra zLsBasi5n{VydCs&T(5myPM9ie(*oZt5y7PFczHoEtoSZZSZJ>(hOKz1>a)W7c~bbo z<%J1N8YP*PL0_<4i32a$72d^=dpft=d!7#o=?`G(%&gKkSPjg8Gj9*>C2fD`a4XC6 zb+kWbd-1b5yKhyw(F|mz?)zg^d)Ad9=lsHiyGQdViq^68CcdmH_=Sl?-k*tn@x1#L zuQwikR=Jp>O{OsW4r0eX=P#ARGod&#MdTH+rd#yp$k4CewRdYa7j%<5$r4=TRdU1P4HsM^ zcaL;KeKFba9Q&m?!hH_7|Gwn5p5bcXM9rd=zx30Te)fQ^I;p7ow%Y7iVh5q?*=%ZL z8l8@=sc)dRu61RuSboRDL#e{`qvzmdO6K&J&O51@V-5-DET1Vc3=cb5h2%X1%_L|w zC{441|u%#J_p zos6pxj*W_k8*916eftl}3$R604Y~2FbFi8!dYsSbN3Rt9#*_het{jJ!rHZ{fiG7$` zOIOKMS=J|9Rihbo7;28Kqi!tle-SG=#_B6>Y=B3q$$dMLk$Y2-ht8$e^PXQ-M=oz7 zLV4#S=W~C!???vVC2NmqJX=Il(eeQdpWS4et9C)?gJ z;fVZ`*qV^HVA2Mrs%3;W_j&L|Djd1N#j2a^N%~ZoMlCbDQ;uoD4`v+|c;zS?6tnAt zcEL*=CqcV1Q!bj!WYYa6SVEZ3eq3;I@$NGkrH@g~6jU*#)xjsvzM71`P4OUYM2z** z&M}Scsu--|w~lR}uk#CB4rvOhNXxhVef2~`f-;d-|L^|~0CZf$Fe#n(2LVpv+0W_c d->!QeoMfD*4dDNNBa!$9p{}o1u44P({{hR1pCteQ literal 0 HcmV?d00001 diff --git a/docs/build-aea-programmatically.md b/docs/build-aea-programmatically.md index 4b9afdb69d..3e0599e53a 100644 --- a/docs/build-aea-programmatically.md +++ b/docs/build-aea-programmatically.md @@ -1,16 +1,18 @@ +# Build an AEA Programmatically These instructions detail the Python code you need for running an AEA outside the `cli` tool, using the code interface. ## Preparation -Get the packages directory from the AEA repository: +Get the `packages` directory from the AEA repository: ``` bash svn export https://github.com/fetchai/agents-aea.git/trunk/packages ``` Also, install `aea-ledger-fetchai` plug-in: -```bash + +``` bash pip install aea-ledger-fetchai ``` @@ -36,7 +38,8 @@ from aea.helpers.file_io import write_with_lock from aea.skills.base import Skill ``` -Set up a variable pointing to where the packages directory is located - this should be our current directory - and where the input and output files are located. +Set up a variable pointing to where the `packages` directory is located - this should be our current directory - and where the input and output files are located. + ``` python ROOT_DIR = "./" INPUT_FILE = "input_file" @@ -44,15 +47,19 @@ OUTPUT_FILE = "output_file" FETCHAI_PRIVATE_KEY_FILE = PRIVATE_KEY_PATH_SCHEMA.format(FetchAICrypto.identifier) ``` -## Create a private key +## Create a Private Key + We need a private key to populate the AEA's wallet. + ``` python # Create a private key create_private_key(FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE) ``` -## Clearing the input and output files +## Clearing the Input and Output Files + We will use the stub connection to pass envelopes in and out of the AEA. Ensure that any input and output text files are removed before we start. + ``` python # Ensure the input and output files do not exist initially if os.path.isfile(INPUT_FILE): @@ -62,7 +69,9 @@ We will use the stub connection to pass envelopes in and out of the AEA. Ensure ``` ## Initialise the AEA -We use the `AEABuilder` to readily build an AEA. By default, the `AEABuilder` adds the `fetchai/default:1.1.6`, `fetchai/state_update:1.1.6` and `fetchai/signing:1.1.6` protocols. + +We use the `AEABuilder` to readily build an AEA. By default, the `AEABuilder` adds the `fetchai/default:1.1.7`, `fetchai/state_update:1.1.7` and `fetchai/signing:1.1.7` protocols. + ``` python # Instantiate the builder and build the AEA # By default, the default protocol, error skill and stub connection are added @@ -70,6 +79,7 @@ We use the `AEABuilder` to r ``` We set the name, add the private key for the AEA to use and set the ledger configurations for the AEA to use. + ``` python builder.set_name("my_aea") @@ -77,18 +87,21 @@ We set the name, add the private key for the AEA to use and set the ledger confi ``` Next, we add the `fetchai/stub:0.15.0` connection which will read/write messages from file: + ``` python # Add the stub connection (assuming it is present in the local directory 'packages') builder.add_connection("./packages/fetchai/connections/stub") ``` Next, we add the echo skill which will bounce our messages back to us. We first need to place the echo skill into a relevant directory (see path), either by downloading the `packages` directory from the AEA repo or by getting the package from the registry. + ``` python # Add the echo skill (assuming it is present in the local directory 'packages') builder.add_skill("./packages/fetchai/skills/echo") ``` Also, we can add a component that was instantiated programmatically. : + ``` python # create skill and handler manually from aea.protocols.base import Message @@ -121,13 +134,16 @@ Also, we can add a component that was instantiated programmatically. : ``` Finally, we can build our AEA: + ``` python # Create our AEA my_aea = builder.build() ``` ## Start the AEA + We run the AEA from a different thread so that we can still use the main thread to pass it messages. + ``` python # Set the AEA running in a different thread try: @@ -138,8 +154,10 @@ We run the AEA from a different thread so that we can still use the main thread time.sleep(4) ``` -## Send and receive an envelope +## Send and Receive an Envelope + We use the input and output text files to send an envelope to our AEA and receive a response (from the echo skill) + ``` python # Create a message inside an envelope and get the stub connection to pass it on to the echo skill message_text = b"my_aea,other_agent,fetchai/default:1.0.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello," @@ -156,7 +174,9 @@ We use the input and output text files to send an envelope to our AEA and receiv ``` ## Shutdown -Finally stop our AEA and wait for it to finish + +Finally, stop our AEA and wait for it to finish + ``` python finally: # Shut down the AEA @@ -166,127 +186,125 @@ Finally stop our AEA and wait for it to finish ``` ## Running the AEA + If you now run this python script file, you should see this output: - input message: my_aea,other_agent,fetchai/default:1.0.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello, - output message: other_agent,my_aea,fetchai/default:1.0.0,...\x05hello +``` text +input message: my_aea,other_agent,fetchai/default:1.0.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello, +output message: other_agent,my_aea,fetchai/default:1.0.0,...\x05hello +``` +## Entire Code Listing -## Entire code listing If you just want to copy and past the entire script in you can find it here: -
Click here to see full listing -

- -``` python -import os -import time -from threading import Thread - -from aea_ledger_fetchai import FetchAICrypto - -from aea.aea_builder import AEABuilder -from aea.configurations.base import SkillConfig -from aea.crypto.helpers import PRIVATE_KEY_PATH_SCHEMA, create_private_key -from aea.helpers.file_io import write_with_lock -from aea.skills.base import Skill - - -ROOT_DIR = "./" -INPUT_FILE = "input_file" -OUTPUT_FILE = "output_file" -FETCHAI_PRIVATE_KEY_FILE = PRIVATE_KEY_PATH_SCHEMA.format(FetchAICrypto.identifier) - - -def run(): - """Run demo.""" - - # Create a private key - create_private_key(FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE) - - # Ensure the input and output files do not exist initially - if os.path.isfile(INPUT_FILE): - os.remove(INPUT_FILE) - if os.path.isfile(OUTPUT_FILE): - os.remove(OUTPUT_FILE) - - # Instantiate the builder and build the AEA - # By default, the default protocol, error skill and stub connection are added - builder = AEABuilder() - - builder.set_name("my_aea") - - builder.add_private_key(FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE) - - # Add the stub connection (assuming it is present in the local directory 'packages') - builder.add_connection("./packages/fetchai/connections/stub") - - # Add the echo skill (assuming it is present in the local directory 'packages') - builder.add_skill("./packages/fetchai/skills/echo") - - # create skill and handler manually - from aea.protocols.base import Message - from aea.skills.base import Handler - - from packages.fetchai.protocols.default.message import DefaultMessage - - class DummyHandler(Handler): - """Dummy handler to handle messages.""" - - SUPPORTED_PROTOCOL = DefaultMessage.protocol_id - - def setup(self) -> None: - """Noop setup.""" - - def teardown(self) -> None: - """Noop teardown.""" - - def handle(self, message: Message) -> None: - """Handle incoming message.""" - self.context.logger.info("You got a message: {}".format(str(message))) - - config = SkillConfig(name="test_skill", author="fetchai") - skill = Skill(configuration=config) - dummy_handler = DummyHandler( - name="dummy_handler", skill_context=skill.skill_context - ) - skill.handlers.update({dummy_handler.name: dummy_handler}) - builder.add_component_instance(skill) - - # Create our AEA - my_aea = builder.build() - - # Set the AEA running in a different thread - try: - t = Thread(target=my_aea.start) - t.start() - - # Wait for everything to start up - time.sleep(4) - - # Create a message inside an envelope and get the stub connection to pass it on to the echo skill - message_text = b"my_aea,other_agent,fetchai/default:1.0.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello," - with open(INPUT_FILE, "wb") as f: - write_with_lock(f, message_text) - print(b"input message: " + message_text) - - # Wait for the envelope to get processed - time.sleep(4) - - # Read the output envelope generated by the echo skill - with open(OUTPUT_FILE, "rb") as f: - print(b"output message: " + f.readline()) - finally: - # Shut down the AEA - my_aea.stop() - t.join() - t = None - - -if __name__ == "__main__": - run() -``` -

-
- -
+??? note "Click here to see full listing:" + + ``` python + import os + import time + from threading import Thread + + from aea_ledger_fetchai import FetchAICrypto + + from aea.aea_builder import AEABuilder + from aea.configurations.base import SkillConfig + from aea.crypto.helpers import PRIVATE_KEY_PATH_SCHEMA, create_private_key + from aea.helpers.file_io import write_with_lock + from aea.skills.base import Skill + + + ROOT_DIR = "./" + INPUT_FILE = "input_file" + OUTPUT_FILE = "output_file" + FETCHAI_PRIVATE_KEY_FILE = PRIVATE_KEY_PATH_SCHEMA.format(FetchAICrypto.identifier) + + + def run(): + """Run demo.""" + + # Create a private key + create_private_key(FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE) + + # Ensure the input and output files do not exist initially + if os.path.isfile(INPUT_FILE): + os.remove(INPUT_FILE) + if os.path.isfile(OUTPUT_FILE): + os.remove(OUTPUT_FILE) + + # Instantiate the builder and build the AEA + # By default, the default protocol, error skill and stub connection are added + builder = AEABuilder() + + builder.set_name("my_aea") + + builder.add_private_key(FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE) + + # Add the stub connection (assuming it is present in the local directory 'packages') + builder.add_connection("./packages/fetchai/connections/stub") + + # Add the echo skill (assuming it is present in the local directory 'packages') + builder.add_skill("./packages/fetchai/skills/echo") + + # create skill and handler manually + from aea.protocols.base import Message + from aea.skills.base import Handler + + from packages.fetchai.protocols.default.message import DefaultMessage + + class DummyHandler(Handler): + """Dummy handler to handle messages.""" + + SUPPORTED_PROTOCOL = DefaultMessage.protocol_id + + def setup(self) -> None: + """Noop setup.""" + + def teardown(self) -> None: + """Noop teardown.""" + + def handle(self, message: Message) -> None: + """Handle incoming message.""" + self.context.logger.info("You got a message: {}".format(str(message))) + + config = SkillConfig(name="test_skill", author="fetchai") + skill = Skill(configuration=config) + dummy_handler = DummyHandler( + name="dummy_handler", skill_context=skill.skill_context + ) + skill.handlers.update({dummy_handler.name: dummy_handler}) + builder.add_component_instance(skill) + + # Create our AEA + my_aea = builder.build() + + # Set the AEA running in a different thread + try: + t = Thread(target=my_aea.start) + t.start() + + # Wait for everything to start up + time.sleep(4) + + # Create a message inside an envelope and get the stub connection to pass it on to the echo skill + message_text = b"my_aea,other_agent,fetchai/default:1.0.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello," + with open(INPUT_FILE, "wb") as f: + write_with_lock(f, message_text) + print(b"input message: " + message_text) + + # Wait for the envelope to get processed + time.sleep(4) + + # Read the output envelope generated by the echo skill + with open(OUTPUT_FILE, "rb") as f: + print(b"output message: " + f.readline()) + finally: + # Shut down the AEA + my_aea.stop() + t.join() + t = None + + + if __name__ == "__main__": + run() + ``` diff --git a/docs/build-aea-step-by-step.md b/docs/build-aea-step-by-step.md index 52c18d83b2..d7adfe851a 100644 --- a/docs/build-aea-step-by-step.md +++ b/docs/build-aea-step-by-step.md @@ -1,14 +1,13 @@ +# Build an AEA with the CLI Building an AEA step by step (ensure you have followed the Preliminaries and Installation sections from the AEA quick start first): -
    -
  1. Set up your AEA project with the CLI: `aea create my_aea && cd my_aea`
  2. -
  3. Look at, then add the right connections for your use case: - `aea search connections`, then `aea add connection [public_id]` -
  4. -
  5. Look for, then add or generate the protocols you require: `aea search protocols`, then `aea add protocol [public_id]` or `aea generate protocol [path_to_specification]`
  6. -
  7. Look for, then add or code the skills you need: `aea search skills`, then `aea add skill [public_id]`. This guide shows you step by step how to develop a skill.
  8. -
  9. Where required, scaffold any of the above resources with the scaffolding tool or generate a protocol with the protocol generator.
  10. -
  11. Now, run your AEA: `aea run --connections [public_id]`
  12. -
-See information on the CLI tool here for all the available commands. +1. Set up your AEA project with the CLI: `aea create my_aea && cd my_aea` +1. Look at, then add the right connections for your use case: + `aea search connections`, then `aea add connection [public_id]` +1. Look for, then add or generate the protocols you require: `aea search protocols`, then `aea add protocol [public_id]` or `aea generate protocol [path_to_specification]` +1. Look for, then add or code the skills you need: `aea search skills`, then `aea add skill [public_id]`. This guide shows you step by step how to develop a skill. +1. Where required, scaffold any of the above resources with the scaffolding tool or generate a protocol with the protocol generator. +1. Now, run your AEA: `aea run --connections [public_id]` + +See information on the CLI tool here for all the available commands. diff --git a/docs/car-park-skills.md b/docs/car-park-skills.md index 7fffa1bb1f..6da28400e7 100644 --- a/docs/car-park-skills.md +++ b/docs/car-park-skills.md @@ -1,8 +1,9 @@ +# Car park skills The AEA car-park skills demonstrate an interaction between two AEAs. -* The `carpark_detection` AEA provides information on the number of car parking spaces available in a given vicinity. -* The `carpark_client` AEA is interested in purchasing information on available car parking spaces in the same vicinity. +- The `carpark_detection` AEA provides information on the number of car parking spaces available in a given vicinity. +- The `carpark_client` AEA is interested in purchasing information on available car parking spaces in the same vicinity. ## Discussion @@ -12,9 +13,10 @@ This demo allows you to test the AEA functionality of the car park AEA demo with It demonstrates how the AEAs trade car park information. ## Communication -This diagram shows the communication between the various entities as data is successfully sold by the car park AEA to the client. -
+This diagram shows the communication between the various entities as data is successfully sold by the car park AEA to the client. + +``` mermaid sequenceDiagram participant Search participant Car_Data_Buyer_AEA @@ -42,175 +44,175 @@ This diagram shows the communication between the various entities as data is suc deactivate Car_Data_Buyer_AEA deactivate Car_Park_AEA deactivate Blockchain -
-
+``` -## Option 1: AEA Manager approach +## Option 1: AEA Manager Approach -Follow this approach when using the AEA Manager Desktop app. Otherwise, skip and follow the CLI approach below. +Follow this approach when using the AEA Manager Desktop app. Otherwise, skip and follow the CLI approach below. -### Preparation instructions +### Preparation Instructions Install the AEA Manager. -### Demo instructions +### Demo Instructions The following steps assume you have launched the AEA Manager Desktop app. -1. Add a new AEA called `car_detector` with public id `fetchai/car_detector:0.32.4`. +1. Add a new AEA called `car_detector` with public id `fetchai/car_detector:0.32.5`. -2. Add another new AEA called `car_data_buyer` with public id `fetchai/car_data_buyer:0.33.4`. +2. Add another new AEA called `car_data_buyer` with public id `fetchai/car_data_buyer:0.33.5`. 3. Copy the address from the `car_data_buyer` into your clip board. Then go to the Dorado block explorer and request some test tokens via `Get Funds`. 4. Run the `car_detector` AEA. Navigate to its logs and copy the multiaddress displayed. 5. Navigate to the settings of the `car_data_buyer` and under `components > connection >` `fetchai/p2p_libp2p:0.22.0` update as follows (make sure to replace the placeholder with the multiaddress): -``` bash -{ - "delegate_uri": "127.0.0.1:11001", - "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], - "local_uri": "127.0.0.1:9001", - "log_file": "libp2p_node.log", - "public_uri": "127.0.0.1:9001" -} -``` + + ``` bash + { + "delegate_uri": "127.0.0.1:11001", + "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], + "local_uri": "127.0.0.1:9001", + "log_file": "libp2p_node.log", + "public_uri": "127.0.0.1:9001" + } + ``` 6. Run the `car_data_buyer`. In the AEA's logs, you should see the agent trading successfully. -
-## Option 2: CLI approach +## Option 2: CLI Approach Follow this approach when using the `aea` CLI. -### Preparation instructions +### Preparation Instructions #### Dependencies Follow the Preliminaries and Installation sections from the AEA quick start. -### Demo instructions +### Demo Instructions -#### Create car detector AEA +#### Create Car Detector AEA First, fetch the car detector AEA: -``` bash -aea fetch fetchai/car_detector:0.32.4 -cd car_detector -aea install -aea build -``` -
Alternatively, create from scratch. -

- -The following steps create the car detector from scratch: ``` bash -aea create car_detector +aea fetch fetchai/car_detector:0.32.5 cd car_detector -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/carpark_detection:0.27.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' aea install aea build ``` -

-
- -#### Create car data buyer AEA +??? note "Alternatively, create from scratch:" + + The following steps create the car detector from scratch: + + ``` bash + aea create car_detector + cd car_detector + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/carpark_detection:0.27.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea install + aea build + ``` + +#### Create Car Data Buyer AEA Then, fetch the car data client AEA: -``` bash -aea fetch fetchai/car_data_buyer:0.33.4 -cd car_data_buyer -aea install -aea build -``` -
Alternatively, create from scratch. -

- -The following steps create the car data client from scratch: ``` bash -aea create car_data_buyer +aea fetch fetchai/car_data_buyer:0.33.5 cd car_data_buyer -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/carpark_client:0.27.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' aea install aea build ``` - -

-
- -#### Add keys for the car data seller AEA +??? note "Alternatively, create from scratch:" + The following steps create the car data client from scratch: + + ``` bash + aea create car_data_buyer + cd car_data_buyer + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/carpark_client:0.27.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea install + aea build + ``` + +#### Add Keys for the Car Data Seller AEA First, create the private key for the car data seller AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -#### Add keys and generate wealth for the car data buyer AEA +#### Add Keys and Generate Wealth for the Car Data Buyer AEA The buyer needs to have some wealth to purchase the service from the seller. First, create the private key for the car data buyer AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Then, create some wealth for your car data buyer based on the network you want to transact with. On the Fetch.ai `Dorado` network: + ``` bash aea generate-wealth fetchai ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` @@ -225,10 +227,11 @@ First, run the car data seller AEA: aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` to retrieve the address.) +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the car data seller. Then, in the car data buyer, run this command (replace `SOME_ADDRESS` with the correct value as described above): + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -239,9 +242,11 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + This allows the car data buyer to connect to the same local agent communication network as the car data seller. Then run the buyer AEA: + ``` bash aea run ``` @@ -251,10 +256,9 @@ You will see that the AEAs negotiate and then transact using the Fetch.ai testne #### Cleaning up When you're finished, delete your AEAs: + ``` bash cd .. aea delete car_detector aea delete car_data_buyer ``` - -
\ No newline at end of file diff --git a/docs/cli-commands.md b/docs/cli-commands.md index 7a698bb936..900968d891 100644 --- a/docs/cli-commands.md +++ b/docs/cli-commands.md @@ -1,47 +1,47 @@ -# CLI commands +# CLI Commands -| Command | Description | -| ------------------------------------------- | ---------------------------------------------------------------------------- | -| `add [package_type] [public_id]` | Add a `package_type` connection, contract, protocol, or skill, with `[public_id]`, to the AEA. `add --local` to add from local `packages` directory. | -| `add-key [ledger_id] file [--connection]` | Add a private key from a file for `ledger_id`. | -| `build` | Build the agent and its components. | -| `config get [path]` | Reads the configuration specified in `path` and prints its target. | -| `config set [path] [--type TYPE]` | Sets a new value for the target of the `path`. Optionally cast to type. | -| `create [name]` | Create a new AEA project called `name`. | -| `delete [name]` | Delete an AEA project. See below for disabling a resource. | -| `eject [package_type] [public_id]` | Move a package of `package_type` and `package_id` from vendor to project working directory. | -| `fetch [public_id]` | Fetch an AEA project with `public_id`. `fetch --local` to fetch from local `packages` directory. | -| `fingerprint [package_type] [public_id]` | Fingerprint connection, contract, protocol, or skill, with `public_id`. | -| `freeze` | Get all the dependencies needed for the AEA project and its components. | -| `generate protocol [protocol_spec_path]` | Generate a protocol from the specification. | -| `generate-key [ledger_id]` | Generate private keys. The AEA uses a private key to derive the associated public key and address. | -| `generate-wealth [ledger_id]` | Generate wealth for address on test network. | -| `get-address [ledger_id]` | Get the address associated with the private key. | -| `get-multiaddress [ledger_id]...` | Get the multiaddress associated with a private key or connection. | -| `get-public-key [ledger_id]...` | Get the public key associated with a private key of the agent. | -| `get-wealth [ledger_id]` | Get the wealth associated with the private key. | -| `init` | Initialize your AEA configurations. (With `--author` to define author.) | -| `install [-r ]` | Install the dependencies. (With `--install-deps` to install dependencies.) | -| `interact` | Interact with a running AEA via the stub connection. | -| `ipfs` | IPFS Commands | -| `issue-certificates` | Issue the connection certificates. | -| `launch [path_to_agent_project]...` | Launch many agents at the same time. | -| `list [package_type]` | List the installed resources. | -| `local-registry-sync` | Upgrade the local package registry. | -| `login USERNAME [--password password]` | Login to a registry account with credentials. | -| `logout` | Logout from registry account. | -| `publish` | Publish the AEA to registry. Needs to be executed from an AEA project.`publish --local` to publish to local `packages` directory. | -| `push [package_type] [public_id]` | Push connection, protocol, or skill with `public_id` to registry. `push --local` to push to local `packages` directory. | -| `register` | Create a new registry account. -| `remove [package_type] [name]` | Remove connection, protocol, or skill, called `name`, from AEA. | -| `remove-key [ledger_id] [name]` | Remove a private key registered with id `ledger_id`. | -| `reset_password EMAIL` | Reset the password of the registry account. | -| `run {using [connections, ...]}` | Run the AEA on the Fetch.ai network with default or specified connections. | -| `scaffold [package_type] [name]` | Scaffold a new connection, protocol, or skill called `name`. | -| `search [package_type]` | Search for components in the registry. `search --local [package_type] [--query searching_query]` to search in local `packages` directory. | -| `transfer [type] [address] [amount]` | Transfer wealth associated with a private key of the agent to another account. | -| `upgrade [package_type] [public_id]` | Upgrade the packages of the agent. | -| `-v DEBUG run` | Run with debugging. | +| Command | Description | +|-------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------| +| `add [package_type] [public_id]` | Add a `package_type` connection, contract, protocol, or skill, with `[public_id]`, to the AEA. `add --local` to add from local `packages` directory. | +| `add-key [ledger_id] file [--connection]` | Add a private key from a file for `ledger_id`. | +| `build` | Build the agent and its components. | +| `config get [path]` | Reads the configuration specified in `path` and prints its target. | +| `config set [path] [--type TYPE]` | Sets a new value for the target of the `path`. Optionally cast to type. | +| `create [name]` | Create a new AEA project called `name`. | +| `delete [name]` | Delete an AEA project. See below for disabling a resource. | +| `eject [package_type] [public_id]` | Move a package of `package_type` and `package_id` from vendor to project working directory. | +| `fetch [public_id]` | Fetch an AEA project with `public_id`. `fetch --local` to fetch from local `packages` directory. | +| `fingerprint [package_type] [public_id]` | Fingerprint connection, contract, protocol, or skill, with `public_id`. | +| `freeze` | Get all the dependencies needed for the AEA project and its components. | +| `generate protocol [protocol_spec_path]` | Generate a protocol from the specification. | +| `generate-key [ledger_id]` | Generate private keys. The AEA uses a private key to derive the associated public key and address. | +| `generate-wealth [ledger_id]` | Generate wealth for address on test network. | +| `get-address [ledger_id]` | Get the address associated with the private key. | +| `get-multiaddress [ledger_id]...` | Get the multiaddress associated with a private key or connection. | +| `get-public-key [ledger_id]...` | Get the public key associated with a private key of the agent. | +| `get-wealth [ledger_id]` | Get the wealth associated with the private key. | +| `init` | Initialize your AEA configurations. (With `--author` to define author.) | +| `install [-r ]` | Install the dependencies. (With `--install-deps` to install dependencies.) | +| `interact` | Interact with a running AEA via the stub connection. | +| `ipfs` | IPFS Commands | +| `issue-certificates` | Issue the connection certificates. | +| `launch [path_to_agent_project]...` | Launch many agents at the same time. | +| `list [package_type]` | List the installed resources. | +| `local-registry-sync` | Upgrade the local package registry. | +| `login USERNAME [--password password]` | Login to a registry account with credentials. | +| `logout` | Logout from registry account. | +| `publish` | Publish the AEA to registry. Needs to be executed from an AEA project.`publish --local` to publish to local `packages` directory. | +| `push [package_type] [public_id]` | Push connection, protocol, or skill with `public_id` to registry. `push --local` to push to local `packages` directory. | +| `register` | Create a new registry account. | +| `remove [package_type] [name]` | Remove connection, protocol, or skill, called `name`, from AEA. | +| `remove-key [ledger_id] [name]` | Remove a private key registered with id `ledger_id`. | +| `reset_password EMAIL` | Reset the password of the registry account. | +| `run {using [connections, ...]}` | Run the AEA on the Fetch.ai network with default or specified connections. | +| `scaffold [package_type] [name]` | Scaffold a new connection, protocol, or skill called `name`. | +| `search [package_type]` | Search for components in the registry. `search --local [package_type] [--query searching_query]` to search in local `packages` directory. | +| `transfer [type] [address] [amount]` | Transfer wealth associated with a private key of the agent to another account. | +| `upgrade [package_type] [public_id]` | Upgrade the packages of the agent. | +| `-v DEBUG run` | Run with debugging. | -
-

Tip

-

You can also disable a resource without deleting it by removing the entry from the configuration but leaving the package in the skills namespace.

-
+!!! tip + You can also disable a resource without deleting it by removing the entry from the configuration but leaving the package in the `skills` namespace. -
-

Tip

-

You can skip the consistency checks on the AEA project by using the flag --skip-consistency-check. E.g. aea --skip-consistency-check run will bypass the fingerprint checks.

-
- -
+!!! tip + You can skip the consistency checks on the AEA project by using the flag `--skip-consistency-check`. E.g. `aea --skip-consistency-check run` will bypass the fingerprint checks. diff --git a/docs/cli-how-to.md b/docs/cli-how-to.md index ea990b74ac..5d19bcd798 100644 --- a/docs/cli-how-to.md +++ b/docs/cli-how-to.md @@ -1,3 +1,5 @@ +# How to Use the Command Line Interface + The command line interface is the easiest way to build an AEA. ## Installation @@ -14,28 +16,35 @@ The following installs the entire AEA package including the CLI. pip install aea[all] ``` -If you are using `zsh` rather than `bash` type +If you are using `zsh` rather than `bash` type + ``` zsh pip install 'aea[cli]' ``` + and + ``` zsh pip install 'aea[all]' ``` + respectively. Be sure that the `bin` folder of your Python environment is in the `PATH` variable. If so, you can execute the CLI tool as: + ``` bash aea ``` You might find useful the execution of the `aea.cli` package as a script: + ``` bash python -m aea.cli ``` -which is just an alternative entry-point to the CLI tool. + +which is just an alternative entry-point to the CLI tool. ## Troubleshooting @@ -46,8 +55,7 @@ pip install aea[all] --force --no-cache-dir ``` And for `zsh` run: + ``` zsh pip install 'aea[all]' --force --no-cache-dir ``` - -
diff --git a/docs/cli-vs-programmatic-aeas.md b/docs/cli-vs-programmatic-aeas.md index 1779944f73..f3f3c5edfa 100644 --- a/docs/cli-vs-programmatic-aeas.md +++ b/docs/cli-vs-programmatic-aeas.md @@ -1,3 +1,5 @@ +# CLI vs Programmatic AEAs + The AEA framework enables us to create agents either from the CLI tool or programmatically. The following demo demonstrates an interaction between two AEAs. @@ -11,313 +13,320 @@ The scope of the specific demo is to demonstrate how a CLI based AEA can interac to achieve this we are going to use the weather station skills. This demo does not utilize a smart contract or a ledger interaction. -## Get required packages +## Get Required Packages -Copy the packages directory into your local working directory: +Copy the `packages` directory into your local working directory: ``` bash svn export https://github.com/fetchai/agents-aea.git/trunk/packages ``` Also, install `aea-ledger-fetchai` plug-in: -```bash + +``` bash pip install aea-ledger-fetchai ``` -## Demo instructions +## Demo Instructions If you want to create the weather station AEA step by step you can follow this guide here -### Create the weather station AEA +### Create the Weather Station AEA Fetch the weather station AEA with the following command : ``` bash -aea fetch fetchai/weather_station:0.32.4 +aea fetch fetchai/weather_station:0.32.5 cd weather_station aea install aea build ``` -### Update the AEA configurations +### Update the AEA Configurations In the terminal change the configuration: + ``` bash aea config set vendor.fetchai.skills.weather_station.models.strategy.args.is_ledger_tx False --type bool ``` + The `is_ledger_tx` will prevent the AEA to communicate with a ledger. -### Add keys +### Add Keys Add a private key for the weather station. + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -### Run the weather station AEA +### Run the Weather Station AEA + ``` bash aea run ``` Once you see a message of the form `To join its network use multiaddr: ['SOME_ADDRESS']` take note of the address. -### Create the weather client AEA +### Create the Weather Client AEA Since we want to show the interaction between a programmatically created AEA with a CLI based AEA we are going to write some code for the client. Create a new python file and name it `weather_client.py` and add the following code -
Weather client full code. - -``` python -import logging -import os -import sys -from typing import cast - -from aea_ledger_fetchai import FetchAICrypto - -from aea.aea import AEA -from aea.aea_builder import AEABuilder -from aea.configurations.base import ConnectionConfig -from aea.crypto.helpers import ( - PRIVATE_KEY_PATH_SCHEMA, - create_private_key, - make_certificate, -) -from aea.crypto.wallet import Wallet -from aea.helpers.base import CertRequest -from aea.identity.base import Identity -from aea.protocols.base import Protocol -from aea.registries.resources import Resources -from aea.skills.base import Skill - -import packages.fetchai.connections.p2p_libp2p.connection -from packages.fetchai.connections.ledger.connection import LedgerConnection -from packages.fetchai.connections.p2p_libp2p.connection import P2PLibp2pConnection -from packages.fetchai.connections.soef.connection import SOEFConnection -from packages.fetchai.protocols.ledger_api.message import LedgerApiMessage -from packages.fetchai.protocols.oef_search.message import OefSearchMessage -from packages.fetchai.skills.weather_client.strategy import Strategy - - -API_KEY = "TwiCIriSl0mLahw17pyqoA" -SOEF_ADDR = "s-oef.fetch.ai" -SOEF_PORT = 443 -ENTRY_PEER_ADDRESS = ( - "/dns4/127.0.0.1/tcp/9000/p2p/16Uiu2HAmLBCAqHL8SuFosyDhAKYsLKXBZBWXBsB9oFw2qU4Kckun" -) -FETCHAI_PRIVATE_KEY_FILE = PRIVATE_KEY_PATH_SCHEMA.format(FetchAICrypto.identifier) -FETCHAI_PRIVATE_KEY_FILE_CONNECTION = PRIVATE_KEY_PATH_SCHEMA.format( - "fetchai_connection" -) -ROOT_DIR = os.getcwd() - -logger = logging.getLogger("aea") -logging.basicConfig(stream=sys.stdout, level=logging.INFO) - - -def run(): - """Run demo.""" - - # Create a private key - create_private_key(FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE) - create_private_key(FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE_CONNECTION) - - # Set up the wallet, identity and (empty) resources - wallet = Wallet( - private_key_paths={FetchAICrypto.identifier: FETCHAI_PRIVATE_KEY_FILE}, - connection_private_key_paths={ - FetchAICrypto.identifier: FETCHAI_PRIVATE_KEY_FILE_CONNECTION - }, +??? note "Weather client full code:" + + ``` python + import logging + import os + import sys + from typing import cast + + from aea_ledger_fetchai import FetchAICrypto + + from aea.aea import AEA + from aea.aea_builder import AEABuilder + from aea.configurations.base import ConnectionConfig + from aea.crypto.helpers import ( + PRIVATE_KEY_PATH_SCHEMA, + create_private_key, + make_certificate, ) - identity = Identity( - "my_aea", - address=wallet.addresses.get(FetchAICrypto.identifier), - public_key=wallet.public_keys.get(FetchAICrypto.identifier), + from aea.crypto.wallet import Wallet + from aea.helpers.base import CertRequest + from aea.identity.base import Identity + from aea.protocols.base import Protocol + from aea.registries.resources import Resources + from aea.skills.base import Skill + + import packages.fetchai.connections.p2p_libp2p.connection + from packages.fetchai.connections.ledger.connection import LedgerConnection + from packages.fetchai.connections.p2p_libp2p.connection import P2PLibp2pConnection + from packages.fetchai.connections.soef.connection import SOEFConnection + from packages.fetchai.protocols.ledger_api.message import LedgerApiMessage + from packages.fetchai.protocols.oef_search.message import OefSearchMessage + from packages.fetchai.skills.weather_client.strategy import Strategy + + + API_KEY = "TwiCIriSl0mLahw17pyqoA" + SOEF_ADDR = "s-oef.fetch.ai" + SOEF_PORT = 443 + ENTRY_PEER_ADDRESS = ( + "/dns4/127.0.0.1/tcp/9000/p2p/16Uiu2HAmLBCAqHL8SuFosyDhAKYsLKXBZBWXBsB9oFw2qU4Kckun" ) - resources = Resources() - data_dir = os.getcwd() - - # specify the default routing for some protocols - default_routing = { - LedgerApiMessage.protocol_id: LedgerConnection.connection_id, - OefSearchMessage.protocol_id: SOEFConnection.connection_id, - } - default_connection = P2PLibp2pConnection.connection_id - - state_update_protocol = Protocol.from_dir( - os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "state_update") - ) - resources.add_protocol(state_update_protocol) - - # Add the default protocol (which is part of the AEA distribution) - default_protocol = Protocol.from_dir( - os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "default") + FETCHAI_PRIVATE_KEY_FILE = PRIVATE_KEY_PATH_SCHEMA.format(FetchAICrypto.identifier) + FETCHAI_PRIVATE_KEY_FILE_CONNECTION = PRIVATE_KEY_PATH_SCHEMA.format( + "fetchai_connection" ) - resources.add_protocol(default_protocol) - - # Add the signing protocol (which is part of the AEA distribution) - signing_protocol = Protocol.from_dir( - os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "signing") - ) - resources.add_protocol(signing_protocol) - - # Add the ledger_api protocol - ledger_api_protocol = Protocol.from_dir( - os.path.join( - os.getcwd(), - "packages", - "fetchai", - "protocols", - "ledger_api", + ROOT_DIR = os.getcwd() + + logger = logging.getLogger("aea") + logging.basicConfig(stream=sys.stdout, level=logging.INFO) + + + def run(): + """Run demo.""" + + # Create a private key + create_private_key(FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE) + create_private_key(FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE_CONNECTION) + + # Set up the wallet, identity and (empty) resources + wallet = Wallet( + private_key_paths={FetchAICrypto.identifier: FETCHAI_PRIVATE_KEY_FILE}, + connection_private_key_paths={ + FetchAICrypto.identifier: FETCHAI_PRIVATE_KEY_FILE_CONNECTION + }, ) - ) - resources.add_protocol(ledger_api_protocol) - - # Add the oef_search protocol - oef_protocol = Protocol.from_dir( - os.path.join( - os.getcwd(), - "packages", - "fetchai", - "protocols", - "oef_search", + identity = Identity( + "my_aea", + address=wallet.addresses.get(FetchAICrypto.identifier), + public_key=wallet.public_keys.get(FetchAICrypto.identifier), ) - ) - resources.add_protocol(oef_protocol) - - # Add the fipa protocol - fipa_protocol = Protocol.from_dir( - os.path.join( - os.getcwd(), - "packages", - "fetchai", - "protocols", - "fipa", + resources = Resources() + data_dir = os.getcwd() + + # specify the default routing for some protocols + default_routing = { + LedgerApiMessage.protocol_id: LedgerConnection.connection_id, + OefSearchMessage.protocol_id: SOEFConnection.connection_id, + } + default_connection = P2PLibp2pConnection.connection_id + + state_update_protocol = Protocol.from_dir( + os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "state_update") ) - ) - resources.add_protocol(fipa_protocol) - - # Add the LedgerAPI connection - configuration = ConnectionConfig(connection_id=LedgerConnection.connection_id) - ledger_api_connection = LedgerConnection( - configuration=configuration, data_dir=data_dir, identity=identity - ) - resources.add_connection(ledger_api_connection) - - # Add the P2P connection - cert_path = ".certs/conn_cert.txt" - cert_request = CertRequest( - identifier="acn", - ledger_id=FetchAICrypto.identifier, - not_after="2022-01-01", - not_before="2021-01-01", - public_key="fetchai", - message_format="{public_key}", - save_path=cert_path, - ) - public_key = wallet.connection_cryptos.public_keys.get(FetchAICrypto.identifier) - message = cert_request.get_message(public_key) - make_certificate( - FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE, message, cert_path - ) - configuration = ConnectionConfig( - connection_id=P2PLibp2pConnection.connection_id, - delegate_uri="127.0.0.1:11001", - entry_peers=[ENTRY_PEER_ADDRESS], - local_uri="127.0.0.1:9001", - log_file="libp2p_node.log", - public_uri="127.0.0.1:9001", - build_directory=os.getcwd(), - build_entrypoint="check_dependencies.py", - cert_requests=[cert_request], - ) - configuration.directory = os.path.dirname( - packages.fetchai.connections.p2p_libp2p.connection.__file__ - ) - - AEABuilder.run_build_for_component_configuration(configuration) - - p2p_connection = P2PLibp2pConnection( - configuration=configuration, - data_dir=data_dir, - identity=identity, - crypto_store=wallet.connection_cryptos, - ) - resources.add_connection(p2p_connection) - - # Add the SOEF connection - configuration = ConnectionConfig( - api_key=API_KEY, - soef_addr=SOEF_ADDR, - soef_port=SOEF_PORT, - restricted_to_protocols={OefSearchMessage.protocol_id}, - connection_id=SOEFConnection.connection_id, - ) - soef_connection = SOEFConnection( - configuration=configuration, data_dir=data_dir, identity=identity - ) - resources.add_connection(soef_connection) - - # create the AEA - my_aea = AEA( - identity, - wallet, - resources, - data_dir, - default_connection=default_connection, - default_routing=default_routing, - ) - # Add the error and weather_client skills - error_skill = Skill.from_dir( - os.path.join(ROOT_DIR, "packages", "fetchai", "skills", "error"), - agent_context=my_aea.context, - ) - weather_skill = Skill.from_dir( - os.path.join(ROOT_DIR, "packages", "fetchai", "skills", "weather_client"), - agent_context=my_aea.context, - ) - - strategy = cast(Strategy, weather_skill.models.get("strategy")) - strategy._is_ledger_tx = False - - for skill in [error_skill, weather_skill]: - resources.add_skill(skill) - - # Run the AEA - try: - logger.info("STARTING AEA NOW!") - my_aea.start() - except KeyboardInterrupt: - logger.info("STOPPING AEA NOW!") - my_aea.stop() - - -if __name__ == "__main__": - run() -``` -
+ resources.add_protocol(state_update_protocol) + + # Add the default protocol (which is part of the AEA distribution) + default_protocol = Protocol.from_dir( + os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "default") + ) + resources.add_protocol(default_protocol) + + # Add the signing protocol (which is part of the AEA distribution) + signing_protocol = Protocol.from_dir( + os.path.join(os.getcwd(), "packages", "fetchai", "protocols", "signing") + ) + resources.add_protocol(signing_protocol) + + # Add the ledger_api protocol + ledger_api_protocol = Protocol.from_dir( + os.path.join( + os.getcwd(), + "packages", + "fetchai", + "protocols", + "ledger_api", + ) + ) + resources.add_protocol(ledger_api_protocol) + + # Add the oef_search protocol + oef_protocol = Protocol.from_dir( + os.path.join( + os.getcwd(), + "packages", + "fetchai", + "protocols", + "oef_search", + ) + ) + resources.add_protocol(oef_protocol) + + # Add the fipa protocol + fipa_protocol = Protocol.from_dir( + os.path.join( + os.getcwd(), + "packages", + "fetchai", + "protocols", + "fipa", + ) + ) + resources.add_protocol(fipa_protocol) + + # Add the LedgerAPI connection + configuration = ConnectionConfig(connection_id=LedgerConnection.connection_id) + ledger_api_connection = LedgerConnection( + configuration=configuration, data_dir=data_dir, identity=identity + ) + resources.add_connection(ledger_api_connection) + + # Add the P2P connection + cert_path = ".certs/conn_cert.txt" + cert_request = CertRequest( + identifier="acn", + ledger_id=FetchAICrypto.identifier, + not_after="2022-01-01", + not_before="2021-01-01", + public_key="fetchai", + message_format="{public_key}", + save_path=cert_path, + ) + public_key = wallet.connection_cryptos.public_keys.get(FetchAICrypto.identifier) + message = cert_request.get_message(public_key) + make_certificate( + FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE, message, cert_path + ) + configuration = ConnectionConfig( + connection_id=P2PLibp2pConnection.connection_id, + delegate_uri="127.0.0.1:11001", + entry_peers=[ENTRY_PEER_ADDRESS], + local_uri="127.0.0.1:9001", + log_file="libp2p_node.log", + public_uri="127.0.0.1:9001", + build_directory=os.getcwd(), + build_entrypoint="check_dependencies.py", + cert_requests=[cert_request], + ) + configuration.directory = os.path.dirname( + packages.fetchai.connections.p2p_libp2p.connection.__file__ + ) + + AEABuilder.run_build_for_component_configuration(configuration) + + p2p_connection = P2PLibp2pConnection( + configuration=configuration, + data_dir=data_dir, + identity=identity, + crypto_store=wallet.connection_cryptos, + ) + resources.add_connection(p2p_connection) + + # Add the SOEF connection + configuration = ConnectionConfig( + api_key=API_KEY, + soef_addr=SOEF_ADDR, + soef_port=SOEF_PORT, + restricted_to_protocols={OefSearchMessage.protocol_id}, + connection_id=SOEFConnection.connection_id, + ) + soef_connection = SOEFConnection( + configuration=configuration, data_dir=data_dir, identity=identity + ) + resources.add_connection(soef_connection) + + # create the AEA + my_aea = AEA( + identity, + wallet, + resources, + data_dir, + default_connection=default_connection, + default_routing=default_routing, + ) + # Add the error and weather_client skills + error_skill = Skill.from_dir( + os.path.join(ROOT_DIR, "packages", "fetchai", "skills", "error"), + agent_context=my_aea.context, + ) + weather_skill = Skill.from_dir( + os.path.join(ROOT_DIR, "packages", "fetchai", "skills", "weather_client"), + agent_context=my_aea.context, + ) + + strategy = cast(Strategy, weather_skill.models.get("strategy")) + strategy._is_ledger_tx = False + + for skill in [error_skill, weather_skill]: + resources.add_skill(skill) + + # Run the AEA + try: + logger.info("STARTING AEA NOW!") + my_aea.start() + except KeyboardInterrupt: + logger.info("STOPPING AEA NOW!") + my_aea.stop() + + + if __name__ == "__main__": + run() + ``` Now replace `ENTRY_PEER_ADDRESS` with the peer address (`SOME_ADDRESS`) noted above. For more details on how to create an agent programmatically follow this guide here. -### Run the weather station AEA +### Run the Weather Client AEA In a new terminal window, navigate to the folder that you created the script and run: + ``` bash python weather_client.py ``` diff --git a/docs/config.md b/docs/config.md index 6b53437969..9fc283d5d0 100644 --- a/docs/config.md +++ b/docs/config.md @@ -1,8 +1,11 @@ +# Configurations + This document describes the configuration files of the different packages. -## AEA configuration YAML +## AEA Configuration YAML The following provides a list of the relevant regex used: + ``` yaml PACKAGE_REGEX: "[a-zA-Z_][a-zA-Z0-9_]*" AUTHOR_REGEX: "[a-zA-Z_][a-zA-Z0-9_]*" @@ -11,6 +14,7 @@ LEDGER_ID_REGEX: "^[^\\d\\W]\\w*\\Z" ``` The `aea-config.yaml` defines the AEA project. The compulsory components are listed below: + ``` yaml agent_name: my_agent # Name of the AEA project (must satisfy PACKAGE_REGEX) author: fetchai # Author handle of the project's author (must satisfy AUTHOR_REGEX) @@ -21,13 +25,13 @@ aea_version: '>=1.0.0, <2.0.0' # AEA framework version(s) compatib fingerprint: {} # Fingerprint of AEA project components. fingerprint_ignore_patterns: [] # Ignore pattern for the fingerprinting tool. connections: # The list of connection public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX) -- fetchai/stub:0.21.2 +- fetchai/stub:0.21.3 contracts: [] # The list of contract public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX). protocols: # The list of protocol public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX). -- fetchai/default:1.1.6 +- fetchai/default:1.1.7 skills: # The list of skill public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX). -- fetchai/error:0.18.5 -default_connection: fetchai/p2p_libp2p:0.27.4 # The default connection used for envelopes sent by the AEA (must satisfy PUBLIC_ID_REGEX). +- fetchai/error:0.18.6 +default_connection: fetchai/p2p_libp2p:0.27.5 # The default connection used for envelopes sent by the AEA (must satisfy PUBLIC_ID_REGEX). default_ledger: fetchai # The default ledger identifier the AEA project uses (must satisfy LEDGER_ID_REGEX) required_ledgers: [fetchai] # the list of identifiers of ledgers that the AEA project requires key pairs for (each item must satisfy LEDGER_ID_REGEX) default_routing: {} # The default routing scheme applied to envelopes sent by the AEA, it maps from protocol public ids to connection public ids (both keys and values must satisfy PUBLIC_ID_REGEX) @@ -42,6 +46,7 @@ dependencies: {} # The python dependencies the AE ``` The `aea-config.yaml` can be extended with a number of optional fields: + ``` yaml period: 0.05 # The period to call agent's act execution_timeout: 0 # The execution time limit on each call to `react` and `act` (0 disables the feature) @@ -60,6 +65,7 @@ data_dir: None # The path to the directory for The `aea-config.yaml` can further be extended with component configuration overrides. For custom connection configurations: + ``` yaml public_id: some_author/some_package:0.1.0 # The public id of the connection (must satisfy PUBLIC_ID_REGEX). type: connection # for connections, this must be "connection". @@ -67,6 +73,7 @@ config: ... # a dictionary to overwrite the ``` For custom skill configurations: + ``` yaml public_id: some_author/some_package:0.1.0 # The public id of the connection (must satisfy PUBLIC_ID_REGEX). type: skill # for skills, this must be "skill". @@ -84,10 +91,10 @@ models: # override configurations for mo foo: bar ``` - -## Connection configuration YAML +## Connection Configuration YAML The `connection.yaml`, which is present in each connection package, has the following required fields: + ``` yaml name: scaffold # Name of the package (must satisfy PACKAGE_REGEX) author: fetchai # Author handle of the package's author (must satisfy AUTHOR_REGEX) @@ -111,9 +118,10 @@ dependencies: {} # The python dependencies the pa is_abstract: false # An optional boolean that if `true` makes the connection ``` -## Contract configuration YAML +## Contract Configuration YAML The `contract.yaml`, which is present in each contract package, has the following required fields: + ``` yaml name: scaffold # Name of the package (must satisfy PACKAGE_REGEX) author: fetchai # Author handle of the package's author (must satisfy AUTHOR_REGEX) @@ -133,9 +141,10 @@ config: # A dictionary containing the kw dependencies: {} # The python dependencies the package relies on. They will be installed when `aea install` is run. ``` -## Protocol configuration YAML +## Protocol Configuration YAML The `protocol.yaml`, which is present in each protocol package, has the following required fields: + ``` yaml name: scaffold # Name of the package (must satisfy PACKAGE_REGEX) author: fetchai # Author handle of the package's author (must satisfy AUTHOR_REGEX) @@ -152,9 +161,10 @@ fingerprint_ignore_patterns: [] # Ignore pattern for the fingerp dependencies: {} # The python dependencies the package relies on. They will be installed when `aea install` is run. ``` -## Skill configuration YAML +## Skill Configuration YAML The `skill.yaml`, which is present in each protocol package, has the following required fields: + ``` yaml name: scaffold # Name of the package (must satisfy PACKAGE_REGEX) author: fetchai # Author handle of the package's author (must satisfy AUTHOR_REGEX) diff --git a/docs/connect-a-frontend.md b/docs/connect-a-frontend.md index 8f151af39f..e17889b070 100644 --- a/docs/connect-a-frontend.md +++ b/docs/connect-a-frontend.md @@ -1,9 +1,13 @@ +# Front-End Integration + This page lays out two options for connecting a front-end to an AEA. The following diagram illustrates these two options. How to connect front-end to your AEA ## Case 1 -The first option is to create a `HTTP Server` connection that handles incoming requests from a REST API. In this scenario, the REST API communicates with the AEA and requests are handled by the `HTTP Server` connection package. The REST API should send CRUD requests to the `HTTP Server` connection (`fetchai/http_server:0.23.5`) which translates these into Envelopes to be consumed by the correct skill. + +The first option is to create a `HTTP Server` connection that handles incoming requests from a REST API. In this scenario, the REST API communicates with the AEA and requests are handled by the `HTTP Server` connection package. The REST API should send CRUD requests to the `HTTP Server` connection (`fetchai/http_server:0.23.6`) which translates these into Envelopes to be consumed by the correct skill. ## Case 2 -The second option is to create a front-end comprising a stand-alone `Multiplexer` with a `P2P` connection (`fetchai/p2p_libp2p:0.27.4`). In this scenario the Agent Communication Network can be used to send Envelopes from the AEA to the front-end. \ No newline at end of file + +The second option is to create a front-end comprising a stand-alone `Multiplexer` with a `P2P` connection (`fetchai/p2p_libp2p:0.27.5`). In this scenario the Agent Communication Network can be used to send Envelopes from the AEA to the front-end. diff --git a/docs/connection.md b/docs/connection.md index 3d612afacb..eca40e4bc0 100644 --- a/docs/connection.md +++ b/docs/connection.md @@ -1,3 +1,5 @@ +# Connections + A `Connection` provides an interface for the agent to connect with entities in the outside world. Connections wrap SDKs or APIs and provide interfaces to networks, ledgers and other services. As such, a connection is concerned with I/O bound and continuously connected operations. Where necessary, a connection is responsible for translating between the framework specific protocol (an `Envelope` with its contained `Message`) and the external service or third-party protocol (e.g. `HTTP`). Hence, there are two roles for connections: wrapper and transport connection. The transport connection is responsible to delivering AEA envelopes. The messages constructed or received by a connection are eventually processed by one or several skills which deal with handling and generating messages related to a specific business objective. @@ -8,7 +10,7 @@ An `AEA` can interact with multiple connections at the same time via the `InBox` and `OutBox`, which are, respectively, queues for incoming and outgoing envelopes and their contained messages. -## Developing your connection +## Developing your Connection The easiest way to get started developing your own connection is by using the scaffold command: @@ -18,13 +20,13 @@ aea scaffold connection my_new_connection This will scaffold a connection package called `my_new_connection` with three files: -* `__init__.py` -* `connection.py` containing the scaffolded connection class -* `connection.yaml` containing the scaffolded configuration file +- `__init__.py` +- `connection.py` containing the scaffolded connection class +- `connection.yaml` containing the scaffolded configuration file As a developer you have the choice between implementing a sync or asynchronous interface. The scaffolded `connection.py` file contains two classes: the `MyScaffoldAsyncConnection` inherited from the `Connection` base class and the `MyScaffoldSyncConnection` inherited from the `BaseSyncConnection`. Remove the unused class. -### Primary methods to develop - asynchronous connection interface +### Primary Methods to Develop - Asynchronous Connection Interface The developer needs to implement four public coroutines: @@ -36,16 +38,17 @@ The developer needs to implement four public coroutines: - The `receive` coroutine is continuously called by the AEA framework. It either returns `None` or an envelope. The `receive` coroutine must implement the logic of data being received by the agent, and if necessary, its translation into a relevant protocol. -The framework provides a demo `stub` connection which implements an I/O reader and writer to send and receive messages between the agent and a local file. To gain inspiration and become familiar with the structure of connection packages, you may find it useful to check out `fetchai/stub:0.21.2`, `fetchai/http_server:0.23.5` or `fetchai/http_client:0.24.5` connections. The latter two connections are for external clients to connect with an agent, and for the agent to connect with external servers, respectively. +The framework provides a demo `stub` connection which implements an I/O reader and writer to send and receive messages between the agent and a local file. To gain inspiration and become familiar with the structure of connection packages, you may find it useful to check out `fetchai/stub:0.21.3`, `fetchai/http_server:0.23.6` or `fetchai/http_client:0.24.6` connections. The latter two connections are for external clients to connect with an agent, and for the agent to connect with external servers, respectively. -### Primary methods to develop - sync connection interface +### Primary Methods to Develop - Sync Connection Interface The `BaseSyncConnection` uses executors to execute synchronous code from the asynchronous context of the `Multiplexer` in executors/threads, which are limited by the amount of configured workers. The asynchronous methods `connect`, `disconnect` and `send` are converted to callbacks which the developer implements: -* `on_connect` -* `on_disconnect` -* `on_send` + +- `on_connect` +- `on_disconnect` +- `on_send` All of these methods will be executed in the executor pool. @@ -57,7 +60,7 @@ The `receive` coroutine has no direct equivalent. Instead, the developer impleme Every connection must have a configuration file in `connection.yaml`, containing meta-information about the connection as well as all the required configuration details. For more details, have a look here. -### Configuration options +### Configuration Options The `connection.yaml` file contains a number of fields that must be edited by the developer of the connection: @@ -83,5 +86,3 @@ cert_requests: [] - `dependencies` lists any Python dependencies of the connection package - `is_abstract` specifies whether this connection is only used as an abstract base class - `cert_requests` lists certification requests of the connection (see proof of representation for details) - -
diff --git a/docs/contract.md b/docs/contract.md index 327941a55d..e352672e53 100644 --- a/docs/contract.md +++ b/docs/contract.md @@ -1,3 +1,5 @@ +# Contracts + `Contracts` wrap smart contracts for Fetch.ai and third-party decentralized ledgers. In particular, they provide wrappers around the API or ABI of a smart contract and its byte code. They implement a translation between framework messages (in the `fetchai/contract_api:1.0.0` protocol) and the implementation specifics of the ABI. Contracts usually implement four types of methods: @@ -9,25 +11,24 @@ Contracts usually implement four types of methods: Contracts can be added as packages which means they become reusable across AEA projects. -The smart contract wrapped in a AEA contract package might be a third-party smart contract or your own smart contract potentially interacting with a third-party contract on-chain. - +The smart contract wrapped in an AEA contract package might be a third-party smart contract or your own smart contract potentially interacting with a third-party contract on-chain. -## Interacting with contracts from skills +## Interacting with Contracts from Skills Interacting with contracts in almost all cases requires network access. Therefore, the framework executes contract related logic in a Connection. Message flow for contract and ledger interactions -In particular, the `fetchai/ledger:0.21.4` connection can be used to execute contract related logic. The skills communicate with the `fetchai/ledger:0.21.4` connection via the `fetchai/contract_api:1.0.0` protocol. This protocol implements a request-response pattern to serve the four types of methods listed above: +In particular, the `fetchai/ledger:0.21.5` connection can be used to execute contract related logic. The skills communicate with the `fetchai/ledger:0.21.5` connection via the `fetchai/contract_api:1.0.0` protocol. This protocol implements a request-response pattern to serve the four types of methods listed above: -- the `get_deploy_transaction` message is used to request a deploy transaction for a specific contract. For instance, to request a deploy transaction for the deployment of the smart contract wrapped in the `fetchai/erc1155:0.23.2` package, we send the following message to the `fetchai/ledger:0.21.4`: +- the `get_deploy_transaction` message is used to request a `deploy` transaction for a specific contract. For instance, to request a `deploy` transaction for the deployment of the smart contract wrapped in the `fetchai/erc1155:0.23.3` package, we send the following message to the `fetchai/ledger:0.21.5`: ``` python contract_api_msg = ContractApiMessage( performative=ContractApiMessage.Performative.GET_DEPLOY_TRANSACTION, dialogue_reference=contract_api_dialogues.new_self_initiated_dialogue_reference(), ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.23.2", + contract_id="fetchai/erc1155:0.23.3", callable="get_deploy_transaction", kwargs=ContractApiMessage.Kwargs( {"deployer_address": self.context.agent_address} @@ -37,22 +38,24 @@ contract_api_msg = ContractApiMessage( Any additional arguments needed by the contract's constructor method should be added to `kwargs`. -This message will be handled by the `fetchai/ledger:0.21.4` connection and then a `raw_transaction` message will be returned with the matching raw transaction. To send this transaction to the ledger for processing, we first sign the message with the decision maker and then send the signed transaction to the `fetchai/ledger:0.21.4` connection using the `fetchai/ledger_api:1.0.0` protocol. For details on how to implement the message handling, see the handlers in the `erc1155_deploy` skill. +This message will be handled by the `fetchai/ledger:0.21.5` connection and then a `raw_transaction` message will be returned with the matching raw transaction. To send this transaction to the ledger for processing, we first sign the message with the decision maker and then send the signed transaction to the `fetchai/ledger:0.21.5` connection using the `fetchai/ledger_api:1.0.0` protocol. For details on how to implement the message handling, see the handlers in the `erc1155_deploy` skill. + +!!! note "CosmWasm based smart contract deployments" + + When using CosmWasm based smart contracts two types of deployment transactions exist. The first transaction stores the code on the chain. The second transaction initialises the code. This way, the same contract code can be initialised many times. -
-

CosmWasm based smart contract deployments

-

When using CosmWasm based smart contracts two types of deployment transactions exist. The first transaction stores the code on the chain. The second transaction initialises the code. This way, the same contract code can be initialised many times.
Both the store and init messages use the ContractApiMessage.Performative.GET_DEPLOY_TRANSACTION performative. The ledger API automatically detects the type of transactions based on the provided keyword arguments. In particular, an init transaction requires the keyword arguments code_id (integer), label (string), amount (integer) and init_msg (JSON).
For an example look at the fetchai/erc1155:0.23.2 package. -

-
+ Both the store and init messages use the ContractApiMessage.Performative.GET_DEPLOY_TRANSACTION performative. The ledger API automatically detects the type of transactions based on the provided keyword arguments. In particular, an init transaction requires the keyword arguments code_id (integer), label (string), amount (integer) and init_msg (JSON). + + For an example look at the fetchai/erc1155:0.23.3 package. -- the `get_raw_transaction` message is used to request any transaction for a specific contract which changes state in the contract. For instance, to request a transaction for the creation of token in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.2` package, we send the following message to the `fetchai/ledger:0.21.4`: +- the `get_raw_transaction` message is used to request any transaction for a specific contract which changes state in the contract. For instance, to request a transaction for the creation of token in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.3` package, we send the following message to the `fetchai/ledger:0.21.5`: ``` python contract_api_msg = ContractApiMessage( performative=ContractApiMessage.Performative.GET_RAW_TRANSACTION, dialogue_reference=contract_api_dialogues.new_self_initiated_dialogue_reference(), ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.23.2", + contract_id="fetchai/erc1155:0.23.3", contract_address=strategy.contract_address, callable="get_create_batch_transaction", kwargs=ContractApiMessage.Kwargs( @@ -64,16 +67,16 @@ contract_api_msg = ContractApiMessage( ) ``` -This message will be handled by the `fetchai/ledger:0.21.4` connection and then a `raw_transaction` message will be returned with the matching raw transaction. For this to be executed correctly, the `fetchai/erc1155:0.23.2` contract package needs to implement the `get_create_batch_transaction` method with the specified key word arguments (see example in *Deploy your own*, below). Similarly to above, to send this transaction to the ledger for processing, we first sign the message with the decision maker and then send the signed transaction to the `fetchai/ledger:0.21.4` connection using the `fetchai/ledger_api:1.0.0` protocol. +This message will be handled by the `fetchai/ledger:0.21.5` connection and then a `raw_transaction` message will be returned with the matching raw transaction. For this to be executed correctly, the `fetchai/erc1155:0.23.3` contract package needs to implement the `get_create_batch_transaction` method with the specified key word arguments (see example in *Deploy your own*, below). Similar to the above, to send this transaction to the ledger for processing, we first sign the message with the decision maker and then send the signed transaction to the `fetchai/ledger:0.21.5` connection using the `fetchai/ledger_api:1.0.0` protocol. -- the `get_raw_message` message is used to request any contract method call for a specific contract which does not change state in the contract. For instance, to request a call to get a hash from some input data in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.2` package, we send the following message to the `fetchai/ledger:0.21.4`: +- the `get_raw_message` message is used to request any contract method call for a specific contract which does not change state in the contract. For instance, to request a call to get a hash from some input data in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.3` package, we send the following message to the `fetchai/ledger:0.21.5`: ``` python contract_api_msg = ContractApiMessage( performative=ContractApiMessage.Performative.GET_RAW_MESSAGE, dialogue_reference=contract_api_dialogues.new_self_initiated_dialogue_reference(), ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.23.2", + contract_id="fetchai/erc1155:0.23.3", contract_address=strategy.contract_address, callable="get_hash_single", kwargs=ContractApiMessage.Kwargs( @@ -89,17 +92,17 @@ contract_api_msg = ContractApiMessage( ), ) ``` -This message will be handled by the `fetchai/ledger:0.21.4` connection and then a `raw_message` message will be returned with the matching raw message. For this to be executed correctly, the `fetchai/erc1155:0.23.2` contract package needs to implement the `get_hash_single` method with the specified key word arguments. We can then send the raw message to the `fetchai/ledger:0.21.4` connection using the `fetchai/ledger_api:1.0.0` protocol. In this case, signing is not required. +This message will be handled by the `fetchai/ledger:0.21.5` connection and then a `raw_message` message will be returned with the matching raw message. For this to be executed correctly, the `fetchai/erc1155:0.23.3` contract package needs to implement the `get_hash_single` method with the specified key word arguments. We can then send the raw message to the `fetchai/ledger:0.21.5` connection using the `fetchai/ledger_api:1.0.0` protocol. In this case, signing is not required. -- the `get_state` message is used to request any contract method call to query state in the deployed contract. For instance, to request a call to get the balances in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.2` package, we send the following message to the `fetchai/ledger:0.21.4`: +- the `get_state` message is used to request any contract method call to query state in the deployed contract. For instance, to request a call to get the balances in the deployed `erc1155` smart contract wrapped in the `fetchai/erc1155:0.23.3` package, we send the following message to the `fetchai/ledger:0.21.5`: ``` python contract_api_msg = ContractApiMessage( performative=ContractApiMessage.Performative.GET_STATE, dialogue_reference=contract_api_dialogues.new_self_initiated_dialogue_reference(), ledger_id=strategy.ledger_id, - contract_id="fetchai/erc1155:0.23.2", + contract_id="fetchai/erc1155:0.23.3", contract_address=strategy.contract_address, callable="get_balance", kwargs=ContractApiMessage.Kwargs( @@ -107,8 +110,8 @@ contract_api_msg = ContractApiMessage( ), ) ``` -This message will be handled by the `fetchai/ledger:0.21.4` connection and then a `state` message will be returned with the matching state. For this to be executed correctly, the `fetchai/erc1155:0.23.2` contract package needs to implement the `get_balance` method with the specified key word arguments. We can then send the raw message to the `fetchai/ledger:0.21.4` connection using the `fetchai/ledger_api:1.0.0` protocol. In this case, signing is not required. +This message will be handled by the `fetchai/ledger:0.21.5` connection and then a `state` message will be returned with the matching state. For this to be executed correctly, the `fetchai/erc1155:0.23.3` contract package needs to implement the `get_balance` method with the specified key word arguments. We can then send the raw message to the `fetchai/ledger:0.21.5` connection using the `fetchai/ledger_api:1.0.0` protocol. In this case, signing is not required. ## Developing your own @@ -120,10 +123,9 @@ aea scaffold contract my_new_contract This will scaffold a contract package called `my_new_contract` with three files: -* `__init__.py` -* `contract.py`, containing the scaffolded contract class -* `contract.yaml` containing the scaffolded configuration file - +- `__init__.py` +- `contract.py`, containing the scaffolded contract class +- `contract.yaml` containing the scaffolded configuration file Once your scaffold is in place, you can create a `build` folder in the package and copy the smart contract interface (e.g. bytes code and ABI) to it. Then, specify the path to the interfaces in the `contract.yaml`. For instance, if you use Ethereum, then you might specify the following: @@ -131,8 +133,8 @@ Once your scaffold is in place, you can create a `build` folder in the package a contract_interface_paths: ethereum: build/my_contract.json ``` -where `ethereum` is the ledger id and `my_contract.json` is the file containing the byte code and ABI. +where `ethereum` is the ledger id and `my_contract.json` is the file containing the byte code and ABI. Finally, you will want to implement the part of the contract interface you need in `contract.py`: @@ -180,6 +182,7 @@ class MyContract(Contract): tx = cls._try_estimate_gas(ledger_api, tx) return tx ``` -Above, we implement a method to create a transaction, in this case a transaction to create a batch of tokens. The method will be called by the framework, specifically the `fetchai/ledger:0.21.4` connection once it receives a message (see bullet point 2 above). The method first gets the latest transaction nonce of the `deployer_address`, then constructs the contract instance, then uses the instance to build the transaction and finally updates the gas on the transaction. -It helps to look at existing contract packages, like `fetchai/erc1155:0.23.2`, and skills using them, like `fetchai/erc1155_client:0.11.0` and `fetchai/erc1155_deploy:0.31.5`, for inspiration and guidance. +Above, we implement a method to create a transaction, in this case a transaction to create a batch of tokens. The method will be called by the framework, specifically the `fetchai/ledger:0.21.5` connection once it receives a message (see bullet point 2 above). The method first gets the latest transaction nonce of the `deployer_address`, then constructs the contract instance, then uses the instance to build the transaction and finally updates the gas on the transaction. + +It helps to look at existing contract packages, like `fetchai/erc1155:0.23.3`, and skills using them, like `fetchai/erc1155_client:0.11.0` and `fetchai/erc1155_deploy:0.31.6`, for inspiration and guidance. diff --git a/docs/core-components-1.md b/docs/core-components-1.md index 2ded1b513d..46cc231c63 100644 --- a/docs/core-components-1.md +++ b/docs/core-components-1.md @@ -1,8 +1,10 @@ +# Core Components - Part 1 + The AEA framework consists of several core components, some required to run an AEA and others optional. The following sections discuss the inner workings of the AEA framework and how it calls the code in custom packages (see inversion of control and a helpful comparison here). Whilst it is in principle possible to use parts of the framework as a library, we do not recommend it. -## The elements each AEA uses +## The Elements Each AEA Uses ### Envelope @@ -12,15 +14,11 @@ The following sections discuss the inner workings of the AEA framework and how i An `Envelope` is the core object with which agents communicate. It is a vehicle for `Messages` with five attributes: -* `to`: defines the destination address. - -* `sender`: defines the sender address. - -* `protocol_id`: defines the id of the `Protocol`. - -* `message`: is a bytes field which holds the `Message` in serialized form. - -* `Optional[context]`: an optional field to specify routing information in a URI. +- `to`: defines the destination address. +- `sender`: defines the sender address. +- `protocol_id`: defines the id of the `Protocol`. +- `message`: is a bytes field which holds the `Message` in serialized form. +- `Optional[context]`: an optional field to specify routing information in a URI. `Messages` must adhere to a `Protocol`. @@ -28,13 +26,11 @@ An `Envelope` is the core object `Protocols` define agent-to-agent as well as component-to-component interactions within AEAs. As such, they include: -* `Messages` defining the syntax of messages; +- `Messages` defining the syntax of messages; +- `Serialization` defining how a `Message` is encoded for transport; and, optionally +- `Dialogues`, which define rules over `Message` sequences. -* `Serialization` defining how a `Message` is encoded for transport; and, optionally - -* `Dialogues`, which define rules over `Message` sequences. - -The framework provides one default `Protocol`, called `default` (current version `fetchai/default:1.1.6`). This `Protocol` provides a bare-bones implementation for an AEA `Protocol` which includes a `DefaultMessage` class and associated `DefaultSerializer` and `DefaultDialogue` classes. +The framework provides one default `Protocol`, called `default` (current version `fetchai/default:1.1.7`). This `Protocol` provides a bare-bones implementation for an AEA `Protocol` which includes a `DefaultMessage` class and associated `DefaultSerializer` and `DefaultDialogue` classes. Additional `Protocols`, for new types of interactions, can be added as packages. For more details on `Protocols` you can read the protocol guide. To learn how you can easily automate protocol definition, head to the guide for the protocol generator. @@ -44,7 +40,7 @@ Protocol specific `Messages`, wrapped in `Envelopes`, are sent and received to o A `Connection` wraps an SDK or API and provides an interface to networks, ledgers or other services. Where necessary, a `Connection` is responsible for translating between the framework specific `Envelope` with its contained `Message` and the external service or third-party protocol (e.g. `HTTP`). -The framework provides one default `Connection`, called `stub` (current version `fetchai/stub:0.21.2`). It implements an I/O reader and writer to send `Messages` to the agent from a local file. +The framework provides one default `Connection`, called `stub` (current version `fetchai/stub:0.21.3`). It implements an I/O reader and writer to send `Messages` to the agent from a local file. Additional `Connections` can be added as packages. For more details on `Connections` read the `Connection` guide . @@ -66,12 +62,12 @@ It maintains an `InBox` and `Handler`: each `Skill` has zero, one or more `Handler` objects. There is a one-to-one correspondence between `Handlers` and the protocols in an AEA (also known as the _registered protocols_). Handlers implement AEAs' **reactive** behaviour. If an AEA understands a `Protocol` referenced in a received `Envelope` (i.e. the protocol is registered in this AEA), this envelope is sent to the corresponding `Handler` which executes the AEA's reaction to this `Message`. -* `Behaviour`: a `skill` can have zero, one or more `Behaviours`, each encapsulating actions which further the AEAs goal and are initiated by internals of the AEA rather than external events. Behaviours implement AEAs' **pro-activeness**. The framework provides a number of abstract base classes implementing different types of simple and composite behaviours (e.g. cyclic, one-shot, finite-state-machine, etc), and these define how often and in what order a behaviour and its sub-behaviours must be executed. -* `Model`: zero, one or more `Models` that inherit from the `Model` abstract base class and are accessible via the `SkillContext`. -* `Task`: zero, one or more `Tasks` encapsulate background work internal to the AEA. `Task` differs from the other three in that it is not a part of `Skills`, but `Tasks` are declared in or from `Skills` if a packaging approach for AEA creation is used. +- `Handler`: each `Skill` has zero, one or more `Handler` objects. There is a one-to-one correspondence between `Handlers` and the protocols in an AEA (also known as the _registered protocols_). Handlers implement AEAs' **reactive** behaviour. If an AEA understands a `Protocol` referenced in a received `Envelope` (i.e. the protocol is registered in this AEA), this envelope is sent to the corresponding `Handler` which executes the AEA's reaction to this `Message`. +- `Behaviour`: a `skill` can have zero, one or more `Behaviours`, each encapsulating actions which further the AEAs goal and are initiated by internals of the AEA rather than external events. Behaviours implement AEAs' **pro-activeness**. The framework provides a number of abstract base classes implementing different types of simple and composite behaviours (e.g. cyclic, one-shot, finite-state-machine, etc), and these define how often and in what order a behaviour and its sub-behaviours must be executed. +- `Model`: zero, one or more `Models` that inherit from the `Model` abstract base class and are accessible via the `SkillContext`. +- `Task`: zero, one or more `Tasks` encapsulate background work internal to the AEA. `Task` differs from the other three in that it is not a part of `Skills`, but `Tasks` are declared in or from `Skills` if a packaging approach for AEA creation is used. -A `Skill` can read (parts of) an AEA's state (as summarised in the `AgentContext`), and suggests actions to the AEA according to its specific logic. As such, more than one `Skill` could exist per `Protocol`, competing with each other in suggesting to the AEA the best course of actions to take. In technical terms, this means `Skills` are horizontally arranged. +A `Skill` can read (parts of) an AEA's state (as summarised in the `AgentContext`), and propose actions to the AEA according to its specific logic. As such, more than one `Skill` could exist per `Protocol`, competing with each other in suggesting to the AEA the best course of actions to take. In technical terms, this means `Skills` are horizontally arranged. For instance, an AEA which is trading goods, could subscribe to more than one `Skill`, where each corresponds to a different trading strategy. @@ -79,25 +75,25 @@ The framework places no limits on the complexity of `Skills`. They can implement The framework provides one default `Skill`, called `error`. Additional `Skills` can be added as packages. For more details on `Skills` head over to the `Skill` guide . -### Agent loop +### Agent Loop The `AgentLoop` performs a series of activities while the `AEA` state is not `stopped`. -* it calls the `act()` function of all active registered `Behaviours` at their respective tick rate. -* it grabs all Envelopes waiting in the `InBox` queue and calls the `handle()` function for the `Handlers` currently registered against the `Protocol` of the `Envelope`. -* it dispatches the internal `Messages` from the decision maker (described below) to the handler in the relevant `Skill`. +- it calls the `act()` function of all active registered `Behaviours` at their respective tick rate. +- it grabs all Envelopes waiting in the `InBox` queue and calls the `handle()` function for the `Handlers` currently registered against the `Protocol` of the `Envelope`. +- it dispatches the internal `Messages` from the decision maker (described below) to the handler in the relevant `Skill`. The `AgentLoop` and `Multiplexer` are decoupled via the `InBox` and `OutBox`, and both are maintained by the `Runtime`. -## Next steps +## Next Steps -### Recommended +### Recommended We recommend you continue with the next step in the 'Getting Started' series: - AEA and web frameworks -### Relevant deep-dives +### Relevant Deep-Dives Most AEA development focuses on developing the `Skills` and `Protocols` necessary for an AEA to deliver against its economic objectives. @@ -112,6 +108,3 @@ Most of an AEA developer's time is spent on `Skill` development. `Skills` are th In most cases, one of the available `Connection` packages can be used. Occasionally, you might develop your own `Connection`: - Connections - -
- diff --git a/docs/core-components-2.md b/docs/core-components-2.md index 2c63f56977..00700bfcb0 100644 --- a/docs/core-components-2.md +++ b/docs/core-components-2.md @@ -1,8 +1,10 @@ +# Core components - Part 2 + The AEA framework consists of several core components, some required to run an AEA and others optional. -In Core Components - Part 1 we described the common components each AEA uses. In this page, we will look at more advanced components. +In Core Components - Part 1 we described the common components each AEA uses. In this page, we will look at more advanced components. -## Required components used by AEAs +## Required Components Used by AEAs ### Decision Maker @@ -10,7 +12,7 @@ In Core Components - Part 1 we described the The `DecisionMaker` can be thought of as a `Wallet` manager plus "economic brain" of the AEA. It is responsible for the AEA's crypto-economic security and goal management, and it contains the preference and ownership representation of the AEA. The decision maker is the only component with access to the `Wallet`'s private keys. -You can learn more about the decision maker here. In its simplest form, the decision maker acts like a `Wallet` with `Handler` to react to messages it receives from the skills. +You can learn more about the decision maker here. In its simplest form, the decision maker acts like a `Wallet` with `Handler` that reacts to the messages it receives from the skills. ### Wallet @@ -21,9 +23,9 @@ The agent has two sets of private keys, as configured in the `aea-config.yaml`: - `private_key_paths`: This is a dictionary mapping identifiers to the file paths of private keys used in the AEA. For each identifier, e.g. `fetchai`, the AEA can have one private key. The private keys listed here are available in the `Decision Maker` and the associated public keys and addresses are available in all skills. The AEA uses these keys to sign transactions and messages. These keys usually hold the AEAs funds. - `connection_private_key_paths`: This is a dictionary mapping identifiers to the file paths of private keys used in connections. For each identifier, e.g. `fetchai`, the `Multiplexer` can have one private key. The private keys listed here are available in the connections. The connections use these keys to secure message transport, for instance. -It is the responsibility of the AEA's user to safe-guard the keys used and ensure that keys are only used in a single AEA. Using the same key across different AEAs will lead to various failure modes. +It is the responsibility of the AEA's user to safeguard the keys used and ensure that keys are only used in a single AEA. Using the same key across different AEAs will lead to various failure modes. -Private keys can be encrypted at rest. The CLI commands used for interacting with the wallet allow specifying a password for encryption/decryption. +Private keys can be encrypted at rest. The CLI commands used for interacting with the wallet allow specifying a password for encryption/decryption. ### Identity @@ -31,7 +33,7 @@ The `Identity` is an abstrac The identity can be accessed in a `Skill` via the `AgentContext`. -## Optional components used by AEAs +## Optional Components Used by AEAs ### Contracts @@ -43,30 +45,26 @@ The identity can be accessed in a `Skill` via the here. -## Putting it together +## Putting it Together Taken together, the core components from this section and the first part provide the following simplified illustration of an AEA: Simplified illustration of an AEA -## Next steps +## Next Steps -### Recommended +### Recommended We recommend you continue with the next step in the 'Getting Started' series: - How AEAs talk to each other - Interaction protocols -### Relevant deep-dives +### Relevant Deep-Dives Understanding the decision maker is vital to developing a goal oriented and crypto-economically safe AEA. You can learn more about the `DecisionMaker` in the following section: - Decision Maker - Understanding `Contracts` is important when developing AEAs that make commitments or use smart contracts for other purposes. You can learn more about the `Contracts` agents use in the following section: - Contracts - - -
diff --git a/docs/css/my-styles.css b/docs/css/my-styles.css index 0799b02f96..92508981d5 100644 --- a/docs/css/my-styles.css +++ b/docs/css/my-styles.css @@ -1,37 +1,75 @@ -pre { - background-color: #f8f8f7; +/* overriding colours */ +[data-md-color-scheme="default"] { + --md-primary-fg-color: #4051b5; + --md-typeset-color: #525252; + --md-a-color:#1d6ff5; +} +[data-md-color-scheme="slate"] { + --md-primary-fg-color: #fff; + --md-typeset-color: #d0d6fc; + --md-a-color:#5997fd; +} + +/*overriding the header*/ +.md-header-nav__button.md-logo img { + width: auto!important; } -code { - background-color: #0083fb; +.md-nav__button .md-logo{ + width: auto!important; } -/* this doesn't work now -.md-nav__link { - text-transform: uppercase; - color: #0083fb; +.md-header__button.md-logo img { + width: auto !important; } -*/ -/* Katharine's css additions */ -.md-header, -.md-tabs, -.md-footer-meta, -.md-footer-nav, -.md-footer-nav__inner { - background-color: #172b6e; + +@media screen and (max-width: 76.1875em) { + .md-nav--primary .md-nav__title[for="__drawer"] { + background-color: #202943 !important; + } + + .md-nav--primary .md-nav__title[for=__drawer] img{ + width: 180px; + height: auto; + } } -.md-nav__title { - color: #172b6e; +.md-header{ + background-color:#202943!important; + padding: 10px; + height: auto; } -.md-icon { - ./assets/images/favicon.ico; +/* Overriding font header, link, paragraph styling */ +.md-typeset h3, +.md-typeset h1, +.md-typeset h2 { + margin-bottom: 0.4em; + color: var(--md-primary-fg-color); + font-weight: 400; } -/* Needed so that Mermaid UML diagrams don't end up being massively tall */ -svg{ - height: auto; +.md-typeset a { + color: var(--md-a-color); +} -} \ No newline at end of file +.black-link{ + color: black!important; +} + +.md-nav__item .md-nav__link--active { + padding: 4px 8px; + position: relative; + left: -8px; + background: #E9EBFC; + border-radius: 16px; + width: fit-content; + color: rgb(64, 81, 181) +} + +@media screen and (max-width: 76.1875em) { + .md-nav__item .md-nav__link--active { + left: 0; + } +} diff --git a/docs/debug.md b/docs/debug.md index 1a75cb0271..4917568702 100644 --- a/docs/debug.md +++ b/docs/debug.md @@ -1,3 +1,5 @@ +# Debugging + There are multiple ways in which to configure your AEA for debugging during development. We focus on the standard Python approach here. ## Using `pdb` stdlib @@ -16,7 +18,7 @@ aea -s run For more guidance on how to use `pdb` check out the documentation. -## Using an IDE: +## Using an IDE - For VSCode modify the `launch.json` to include the following information: @@ -36,4 +38,5 @@ For more guidance on how to use `pdb` check out the stand-alone transaction demo. The main difference is that now we are going to use the decision-maker to sign the transaction. -First, import the libraries and the set the constant values. (Get the packages directory from the AEA repository `svn export https://github.com/fetchai/agents-aea.git/trunk/packages`.) +First, import the libraries and the set the constant values. (Get the `packages` directory from the AEA repository `svn export https://github.com/fetchai/agents-aea.git/trunk/packages`.) ``` python import logging @@ -37,9 +39,9 @@ FETCHAI_PRIVATE_KEY_FILE_1 = "fetchai_private_key_1.txt" FETCHAI_PRIVATE_KEY_FILE_2 = "fetchai_private_key_2.txt" ``` -## Create a private key and an AEA +## Create a Private Key and an AEA -To have access to the decision-maker, which is responsible for signing transactions, we need to create an AEA. We can create a an AEA with the builder, providing it with a private key we generate first. +To have access to the decision-maker, which is responsible for signing transactions, we need to create an AEA. We can create an AEA with the builder, providing it with a private key we generate first. ``` python # Create a private key @@ -59,7 +61,7 @@ To have access to the decision-maker, which is responsible for signing transacti my_aea = builder.build() ``` -## Add a simple skill +## Add a Simple Skill Add a simple skill with a signing handler and the signing dialogues. @@ -85,7 +87,8 @@ Add a simple skill with a signing handler and the signing dialogues. my_aea.resources.add_skill(simple_skill) ``` -## Create a second identity +## Create a Second Identity + ``` python # create a second identity create_private_key( @@ -103,9 +106,10 @@ Add a simple skill with a signing handler and the signing dialogues. ) ``` -## Create the signing message +## Create the Signing Message + +Next, we are creating the signing message and sending it to the decision-maker. -Next, we are creating the signing message and we send it to the decision-maker. ``` python # create signing message for decision maker to sign terms = Terms( @@ -143,9 +147,10 @@ Next, we are creating the signing message and we send it to the decision-maker. ``` -## Run the agent +## Run the Agent + +Finally, we are running the agent and expect the signed transaction to be printed in the terminal. -Finally, we are running the agent and we expect the signed transaction to be printed in the terminal. ``` python # Set the AEA running in a different thread try: @@ -164,9 +169,10 @@ Finally, we are running the agent and we expect the signed transaction to be pri After the completion of the signing, we get the signed transaction. -## More details +## More Details To be able to register a handler that reads the internal messages, we have to create a class at the end of the file which processes the signing messages. + ``` python class SigningDialogues(Model, BaseSigningDialogues): """Signing dialogues model.""" @@ -298,275 +304,274 @@ class SigningHandler(Handler): You can find the full code for this example below: -
Transaction via decision-maker full code - -``` python -import logging -import time -from threading import Thread -from typing import Optional, cast - -from aea_ledger_fetchai import FetchAICrypto - -from aea.aea_builder import AEABuilder -from aea.configurations.base import PublicId, SkillConfig -from aea.crypto.helpers import create_private_key -from aea.crypto.ledger_apis import LedgerApis -from aea.crypto.wallet import Wallet -from aea.helpers.transaction.base import RawTransaction, Terms -from aea.identity.base import Identity -from aea.protocols.base import Address, Message -from aea.protocols.dialogue.base import Dialogue -from aea.skills.base import Handler, Model, Skill, SkillContext - -from packages.fetchai.protocols.signing.dialogues import SigningDialogue -from packages.fetchai.protocols.signing.dialogues import ( - SigningDialogues as BaseSigningDialogues, -) -from packages.fetchai.protocols.signing.message import SigningMessage - -from tests.conftest import get_wealth_if_needed - - -logger = logging.getLogger("aea") -logging.basicConfig(level=logging.INFO) - -FETCHAI_PRIVATE_KEY_FILE_1 = "fetchai_private_key_1.txt" -FETCHAI_PRIVATE_KEY_FILE_2 = "fetchai_private_key_2.txt" - - -def run(): - """Run demo.""" - - # Create a private key - create_private_key( - FetchAICrypto.identifier, private_key_file=FETCHAI_PRIVATE_KEY_FILE_1 - ) - - # Instantiate the builder and build the AEA - # By default, the default protocol, error skill and stub connection are added - builder = AEABuilder() - - builder.set_name("my_aea") - - builder.add_private_key(FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE_1) - - # Create our AEA - my_aea = builder.build() - - # add a simple skill with handler - skill_context = SkillContext(my_aea.context) - skill_config = SkillConfig(name="simple_skill", author="fetchai", version="0.1.0") - signing_handler = SigningHandler( - skill_context=skill_context, name="signing_handler" - ) - signing_dialogues_model = SigningDialogues( - skill_context=skill_context, - name="signing_dialogues", - self_address=str(skill_config.public_id), - ) - - simple_skill = Skill( - skill_config, - skill_context, - handlers={signing_handler.name: signing_handler}, - models={signing_dialogues_model.name: signing_dialogues_model}, - ) - my_aea.resources.add_skill(simple_skill) - - # create a second identity - create_private_key( - FetchAICrypto.identifier, private_key_file=FETCHAI_PRIVATE_KEY_FILE_2 - ) - - counterparty_wallet = Wallet({FetchAICrypto.identifier: FETCHAI_PRIVATE_KEY_FILE_2}) - get_wealth_if_needed(counterparty_wallet.addresses["fetchai"]) - - counterparty_identity = Identity( - name="counterparty_aea", - addresses=counterparty_wallet.addresses, - public_keys=counterparty_wallet.public_keys, - default_address_key=FetchAICrypto.identifier, - ) - - # create signing message for decision maker to sign - terms = Terms( - ledger_id=FetchAICrypto.identifier, - sender_address=my_aea.identity.address, - counterparty_address=counterparty_identity.address, - amount_by_currency_id={"FET": -1}, - quantities_by_good_id={"some_service": 1}, - nonce="some_nonce", - fee_by_currency_id={"FET": 0}, - ) - get_wealth_if_needed(terms.sender_address) - - signing_dialogues = cast(SigningDialogues, skill_context.signing_dialogues) - stub_transaction = LedgerApis.get_transfer_transaction( - terms.ledger_id, - terms.sender_address, - terms.counterparty_address, - terms.sender_payable_amount, - terms.sender_fee, - terms.nonce, - ) - signing_msg = SigningMessage( - performative=SigningMessage.Performative.SIGN_TRANSACTION, - dialogue_reference=signing_dialogues.new_self_initiated_dialogue_reference(), - raw_transaction=RawTransaction(FetchAICrypto.identifier, stub_transaction), - terms=terms, +??? note "Transaction via decision-maker full code:" + + ``` python + import logging + import time + from threading import Thread + from typing import Optional, cast + + from aea_ledger_fetchai import FetchAICrypto + + from aea.aea_builder import AEABuilder + from aea.configurations.base import PublicId, SkillConfig + from aea.crypto.helpers import create_private_key + from aea.crypto.ledger_apis import LedgerApis + from aea.crypto.wallet import Wallet + from aea.helpers.transaction.base import RawTransaction, Terms + from aea.identity.base import Identity + from aea.protocols.base import Address, Message + from aea.protocols.dialogue.base import Dialogue + from aea.skills.base import Handler, Model, Skill, SkillContext + + from packages.fetchai.protocols.signing.dialogues import SigningDialogue + from packages.fetchai.protocols.signing.dialogues import ( + SigningDialogues as BaseSigningDialogues, ) - signing_dialogue = cast( - Optional[SigningDialogue], - signing_dialogues.create_with_message("decision_maker", signing_msg), - ) - assert signing_dialogue is not None - my_aea.context.decision_maker_message_queue.put_nowait(signing_msg) - - # Set the AEA running in a different thread - try: - logger.info("STARTING AEA NOW!") - t = Thread(target=my_aea.start) - t.start() - - # Let it run long enough to interact with the decision maker - time.sleep(1) - finally: - # Shut down the AEA - logger.info("STOPPING AEA NOW!") - my_aea.stop() - t.join() - - -class SigningDialogues(Model, BaseSigningDialogues): - """Signing dialogues model.""" - - def __init__(self, self_address: Address, **kwargs) -> None: - """ - Initialize dialogues. - - :return: None - """ - Model.__init__(self, **kwargs) - - def role_from_first_message( # pylint: disable=unused-argument - message: Message, receiver_address: Address - ) -> Dialogue.Role: - """Infer the role of the agent from an incoming/outgoing first message - - :param message: an incoming/outgoing first message - :param receiver_address: the address of the receiving agent - :return: The role of the agent - """ - return SigningDialogue.Role.SKILL - - BaseSigningDialogues.__init__( - self, - self_address=self_address, - role_from_first_message=role_from_first_message, + from packages.fetchai.protocols.signing.message import SigningMessage + + from tests.conftest import get_wealth_if_needed + + + logger = logging.getLogger("aea") + logging.basicConfig(level=logging.INFO) + + FETCHAI_PRIVATE_KEY_FILE_1 = "fetchai_private_key_1.txt" + FETCHAI_PRIVATE_KEY_FILE_2 = "fetchai_private_key_2.txt" + + + def run(): + """Run demo.""" + + # Create a private key + create_private_key( + FetchAICrypto.identifier, private_key_file=FETCHAI_PRIVATE_KEY_FILE_1 + ) + + # Instantiate the builder and build the AEA + # By default, the default protocol, error skill and stub connection are added + builder = AEABuilder() + + builder.set_name("my_aea") + + builder.add_private_key(FetchAICrypto.identifier, FETCHAI_PRIVATE_KEY_FILE_1) + + # Create our AEA + my_aea = builder.build() + + # add a simple skill with handler + skill_context = SkillContext(my_aea.context) + skill_config = SkillConfig(name="simple_skill", author="fetchai", version="0.1.0") + signing_handler = SigningHandler( + skill_context=skill_context, name="signing_handler" + ) + signing_dialogues_model = SigningDialogues( + skill_context=skill_context, + name="signing_dialogues", + self_address=str(skill_config.public_id), + ) + + simple_skill = Skill( + skill_config, + skill_context, + handlers={signing_handler.name: signing_handler}, + models={signing_dialogues_model.name: signing_dialogues_model}, + ) + my_aea.resources.add_skill(simple_skill) + + # create a second identity + create_private_key( + FetchAICrypto.identifier, private_key_file=FETCHAI_PRIVATE_KEY_FILE_2 + ) + + counterparty_wallet = Wallet({FetchAICrypto.identifier: FETCHAI_PRIVATE_KEY_FILE_2}) + get_wealth_if_needed(counterparty_wallet.addresses["fetchai"]) + + counterparty_identity = Identity( + name="counterparty_aea", + addresses=counterparty_wallet.addresses, + public_keys=counterparty_wallet.public_keys, + default_address_key=FetchAICrypto.identifier, + ) + + # create signing message for decision maker to sign + terms = Terms( + ledger_id=FetchAICrypto.identifier, + sender_address=my_aea.identity.address, + counterparty_address=counterparty_identity.address, + amount_by_currency_id={"FET": -1}, + quantities_by_good_id={"some_service": 1}, + nonce="some_nonce", + fee_by_currency_id={"FET": 0}, + ) + get_wealth_if_needed(terms.sender_address) + + signing_dialogues = cast(SigningDialogues, skill_context.signing_dialogues) + stub_transaction = LedgerApis.get_transfer_transaction( + terms.ledger_id, + terms.sender_address, + terms.counterparty_address, + terms.sender_payable_amount, + terms.sender_fee, + terms.nonce, + ) + signing_msg = SigningMessage( + performative=SigningMessage.Performative.SIGN_TRANSACTION, + dialogue_reference=signing_dialogues.new_self_initiated_dialogue_reference(), + raw_transaction=RawTransaction(FetchAICrypto.identifier, stub_transaction), + terms=terms, ) - - -class SigningHandler(Handler): - """Implement the signing handler.""" - - SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] - - def setup(self) -> None: - """Implement the setup for the handler.""" - - def handle(self, message: Message) -> None: - """ - Implement the reaction to a message. - - :param message: the message - :return: None - """ - signing_msg = cast(SigningMessage, message) - - # recover dialogue - signing_dialogues = cast(SigningDialogues, self.context.signing_dialogues) signing_dialogue = cast( - Optional[SigningDialogue], signing_dialogues.update(signing_msg) + Optional[SigningDialogue], + signing_dialogues.create_with_message("decision_maker", signing_msg), ) - if signing_dialogue is None: - self._handle_unidentified_dialogue(signing_msg) - return - - # handle message - if signing_msg.performative is SigningMessage.Performative.SIGNED_TRANSACTION: - self._handle_signed_transaction(signing_msg, signing_dialogue) - elif signing_msg.performative is SigningMessage.Performative.ERROR: - self._handle_error(signing_msg, signing_dialogue) - else: - self._handle_invalid(signing_msg, signing_dialogue) - - def teardown(self) -> None: - """ - Implement the handler teardown. - - :return: None - """ - - def _handle_unidentified_dialogue(self, signing_msg: SigningMessage) -> None: - """ - Handle an unidentified dialogue. - - :param msg: the message - """ - self.context.logger.info( - "received invalid signing message={}, unidentified dialogue.".format( - signing_msg + assert signing_dialogue is not None + my_aea.context.decision_maker_message_queue.put_nowait(signing_msg) + + # Set the AEA running in a different thread + try: + logger.info("STARTING AEA NOW!") + t = Thread(target=my_aea.start) + t.start() + + # Let it run long enough to interact with the decision maker + time.sleep(1) + finally: + # Shut down the AEA + logger.info("STOPPING AEA NOW!") + my_aea.stop() + t.join() + + + class SigningDialogues(Model, BaseSigningDialogues): + """Signing dialogues model.""" + + def __init__(self, self_address: Address, **kwargs) -> None: + """ + Initialize dialogues. + + :return: None + """ + Model.__init__(self, **kwargs) + + def role_from_first_message( # pylint: disable=unused-argument + message: Message, receiver_address: Address + ) -> Dialogue.Role: + """Infer the role of the agent from an incoming/outgoing first message + + :param message: an incoming/outgoing first message + :param receiver_address: the address of the receiving agent + :return: The role of the agent + """ + return SigningDialogue.Role.SKILL + + BaseSigningDialogues.__init__( + self, + self_address=self_address, + role_from_first_message=role_from_first_message, ) - ) - - def _handle_signed_transaction( - self, signing_msg: SigningMessage, signing_dialogue: SigningDialogue - ) -> None: - """ - Handle a signing message. - - :param signing_msg: the signing message - :param signing_dialogue: the dialogue - :return: None - """ - self.context.logger.info("transaction signing was successful.") - logger.info(signing_msg.signed_transaction) - - def _handle_error( - self, signing_msg: SigningMessage, signing_dialogue: SigningDialogue - ) -> None: - """ - Handle an oef search message. - - :param signing_msg: the signing message - :param signing_dialogue: the dialogue - :return: None - """ - self.context.logger.info( - "transaction signing was not successful. Error_code={} in dialogue={}".format( - signing_msg.error_code, signing_dialogue + + + class SigningHandler(Handler): + """Implement the signing handler.""" + + SUPPORTED_PROTOCOL = SigningMessage.protocol_id # type: Optional[PublicId] + + def setup(self) -> None: + """Implement the setup for the handler.""" + + def handle(self, message: Message) -> None: + """ + Implement the reaction to a message. + + :param message: the message + :return: None + """ + signing_msg = cast(SigningMessage, message) + + # recover dialogue + signing_dialogues = cast(SigningDialogues, self.context.signing_dialogues) + signing_dialogue = cast( + Optional[SigningDialogue], signing_dialogues.update(signing_msg) ) - ) - - def _handle_invalid( - self, signing_msg: SigningMessage, signing_dialogue: SigningDialogue - ) -> None: - """ - Handle an oef search message. - - :param signing_msg: the signing message - :param signing_dialogue: the dialogue - :return: None - """ - self.context.logger.warning( - "cannot handle signing message of performative={} in dialogue={}.".format( - signing_msg.performative, signing_dialogue + if signing_dialogue is None: + self._handle_unidentified_dialogue(signing_msg) + return + + # handle message + if signing_msg.performative is SigningMessage.Performative.SIGNED_TRANSACTION: + self._handle_signed_transaction(signing_msg, signing_dialogue) + elif signing_msg.performative is SigningMessage.Performative.ERROR: + self._handle_error(signing_msg, signing_dialogue) + else: + self._handle_invalid(signing_msg, signing_dialogue) + + def teardown(self) -> None: + """ + Implement the handler teardown. + + :return: None + """ + + def _handle_unidentified_dialogue(self, signing_msg: SigningMessage) -> None: + """ + Handle an unidentified dialogue. + + :param msg: the message + """ + self.context.logger.info( + "received invalid signing message={}, unidentified dialogue.".format( + signing_msg + ) ) - ) - - -if __name__ == "__main__": - run() -``` -
\ No newline at end of file + + def _handle_signed_transaction( + self, signing_msg: SigningMessage, signing_dialogue: SigningDialogue + ) -> None: + """ + Handle a signing message. + + :param signing_msg: the signing message + :param signing_dialogue: the dialogue + :return: None + """ + self.context.logger.info("transaction signing was successful.") + logger.info(signing_msg.signed_transaction) + + def _handle_error( + self, signing_msg: SigningMessage, signing_dialogue: SigningDialogue + ) -> None: + """ + Handle an oef search message. + + :param signing_msg: the signing message + :param signing_dialogue: the dialogue + :return: None + """ + self.context.logger.info( + "transaction signing was not successful. Error_code={} in dialogue={}".format( + signing_msg.error_code, signing_dialogue + ) + ) + + def _handle_invalid( + self, signing_msg: SigningMessage, signing_dialogue: SigningDialogue + ) -> None: + """ + Handle an oef search message. + + :param signing_msg: the signing message + :param signing_dialogue: the dialogue + :return: None + """ + self.context.logger.warning( + "cannot handle signing message of performative={} in dialogue={}.".format( + signing_msg.performative, signing_dialogue + ) + ) + + + if __name__ == "__main__": + run() + ``` diff --git a/docs/decision-maker.md b/docs/decision-maker.md index 2e5bfab0d7..db196496ab 100644 --- a/docs/decision-maker.md +++ b/docs/decision-maker.md @@ -1,6 +1,8 @@ +# Decision Maker + The `DecisionMaker` can be thought of like a wallet manager plus "economic brain" of the AEA. It is responsible for the AEA's crypto-economic security and goal management, and it contains the preference and ownership representation of the AEA. The decision maker is the only component which has access to the wallet's private keys. -## Interaction with skills +## Interaction with Skills Skills communicate with the decision maker via `Messages`. At present, the decision maker processes messages of two protocols: @@ -9,7 +11,8 @@ Skills communicate with the decision maker via `StateUpdateMessage`: it is used to initialize the decision maker with preferences and ownership states. It can also be used to update the ownership states in the decision maker if the settlement of transaction takes place. A message, say `msg`, is sent to the decision maker like so from any skill: -``` + +``` python self.context.decision_maker_message_queue.put_nowait(msg) ``` @@ -20,15 +23,15 @@ To process `Messages` from the decision maker in a given skill you need to creat ``` python class SigningHandler(Handler): - protocol_id = SigningMessage.protocol_id + protocol_id = SigningMessage.protocol_id - def handle(self, message: Message): - """ - Handle a signing message. + def handle(self, message: Message): + """ + Handle a signing message. - :param message: the signing message from the decision maker. - """ - # code to handle the message + :param message: the signing message from the decision maker. + """ + # code to handle the message ``` ## Custom `DecisionMaker` @@ -50,10 +53,7 @@ The easiest way to add a custom decision maker handler is to run the following c aea scaffold decision-maker-handler ``` -You can then implement your own custom logic to process messages and interact with the `Wallet`. +You can then implement your own custom logic to process messages and interact with the `Wallet`. -
-

Note

-

For examples how to use these concepts have a look at the tac_ skills. These functionalities are experimental and subject to change. -

-
\ No newline at end of file +!!! note + For examples how to use these concepts have a look at the `tac_` skills. These functionalities are experimental and subject to change. diff --git a/docs/defining-data-models.md b/docs/defining-data-models.md index 26542c183d..b51b9afdc8 100644 --- a/docs/defining-data-models.md +++ b/docs/defining-data-models.md @@ -1,10 +1,11 @@ +# Defining Data Models + In this section, we explain how to define _data models_, an important component of the OEF Search & Discovery. It allows agents to describe themselves and to discover the services/resources they are interested in. In a sentence, a `DataModel` is a set of `attributes`, and a `Description` of a service/resource is an assignment of those attributes. All you need to specify data models and descriptions (that is, instances of the data model) can be found in the `aea.helpers.search` module. - ## Attributes At the lowest level of our data model language, we have the `Attribute`. @@ -14,11 +15,11 @@ It is identified by a `name`, that must be unique in a given data model (that is Every attribute has a `type`, that specifies the domain of the property, that is, the possible values that the attribute can assume. At the moment, we support five types of attributes: -* strings -* integers -* booleans -* floats -* locations, i.e. instances of `Location` (pairs of (latitude, longitude)) +- strings +- integers +- booleans +- floats +- locations, i.e. instances of `Location` (pairs of (latitude, longitude)) An attribute can be `optional`, in the sense that instantiation of the attribute is not mandatory by the instances of the data model. @@ -26,15 +27,15 @@ Finally, every attribute might have a `description` that explains the purpose of **Example**: suppose we have a bookshop, and we want to describe the books we sell. Presumably, we would like to include: the following properties of our books: -* The `title` -* The `author` -* The `genre` (e.g. science fiction, horror) -* The `year of publication` -* The `average rating` (average of the ratings between 0 and 5) -* The `ISBN` code -* If it can be sold as an e-book. +- The `title` +- The `author` +- The `genre` (e.g. science fiction, horror) +- The `year of publication` +- The `average rating` (average of the ratings between 0 and 5) +- The `ISBN` code +- If it can be sold as an e-book. -For each of this fields, we can define an attribute by using `Attribute`: +For each of these fields, we can define an attribute by using `Attribute`: ``` python from aea.helpers.search.models import Attribute, Location @@ -47,6 +48,7 @@ attr_isbn = Attribute("ISBN", str, True, "The ISBN.") attr_ebook = Attribute("ebook_available", bool, False, "If the book can be sold as an e-book.") attr_bookshop = Attribute("bookshop_pos", Location, False, "The location of the bookshop where you can find the book") ``` + Let's focus on the parameters of the `Attribute` constructor: 1. the first one is the name of the attribute. It is needed to instantiate a data model and to define queries over it. @@ -56,7 +58,7 @@ Let's focus on the parameters of the `Attribute` constructor: 3. the third one is a boolean that specifies whether the attribute is _always required_ or it _can be omitted_. For example, we might not be able to specify the `ebook_available` attribute, maybe because it's not applicable to some kind of books. 4. the fourth parameter is the description, that is a short description of the purpose of the attribute. -## Data models +## Data Models A _data model_ is just a set of _attributes_. The class that implements the data model is `DataModel`. @@ -120,7 +122,7 @@ We defined the descriptions for two books, namely `It` and `_1984`, that refers The attributes are instantiated with a dictionary that has: -* as keys, the name of the attributes. -* as values, the values associated with the attributes. +- as keys, the name of the attributes. +- as values, the values associated with the attributes. Notice that in the latter book we omitted the `average_rating` field. We are allowed to do that because of the `average_rating` attribute is not mandatory. diff --git a/docs/demos.md b/docs/demos.md index 0c9d0bd737..ea2211f0cc 100644 --- a/docs/demos.md +++ b/docs/demos.md @@ -1,5 +1,7 @@ +# Demos + We provide demo guides for multiple use-cases, each one involving several AEAs interacting in a different scenario. These demos serve to highlight the concept of AEAs as well as provide inspiration for developers. Demos should not be taken as production ready software, although every care is taken to fix bugs when reported. -Demos are alphabetically sorted, we recommend you start with the weather skills demo. \ No newline at end of file +Demos are alphabetically sorted, we recommend you start with the weather skills demo. diff --git a/docs/deployment.md b/docs/deployment.md index 5817fef348..b73888a7b3 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -1,3 +1,4 @@ +# Deployment The easiest way to run an AEA is using your development environment. @@ -8,6 +9,7 @@ For deployment, we recommend you use Kubernetes navigate to our TAC deployment example. diff --git a/docs/design-principles.md b/docs/design-principles.md index 052fc3132e..7f5c2c8672 100644 --- a/docs/design-principles.md +++ b/docs/design-principles.md @@ -1,12 +1,12 @@ -The AEA framework development is guided by the following 8 principles: +# Design Principles -* **Accessibility**: ease of use. -* **Modularity**: encourages module creation, sharing and reuse. -* **Openness**: easily extensible with third-party libraries. -* **Conciseness**: conceptually simple. -* **Value-driven**: drives immediate value. -* **Low entry barriers**: leverages existing programming languages and web protocols. -* **Safety**: safe for the user (economically speaking). -* **Goal-alignment**: seamless facilitation of users' preferences and goals. +The AEA framework development is guided by the following 8 principles: -
\ No newline at end of file +- **Accessibility**: ease of use. +- **Modularity**: encourages module creation, sharing and reuse. +- **Openness**: easily extensible with third-party libraries. +- **Conciseness**: conceptually simple. +- **Value-driven**: drives immediate value. +- **Low entry barriers**: leverages existing programming languages and web protocols. +- **Safety**: safe for the user (economically speaking). +- **Goal-alignment**: seamless facilitation of users' preferences and goals. diff --git a/docs/development-setup.md b/docs/development-setup.md index b9175eaa41..e63f4c7e22 100644 --- a/docs/development-setup.md +++ b/docs/development-setup.md @@ -1,4 +1,4 @@ - +# Development Setup An AEA consists of packages . When developing, it helps to be able to save packages in a local package registry, rather than pushing them to remote registry. This guide helps you set up a local package registry and configure the working directory for development. @@ -13,20 +13,13 @@ There are two ways to write code for an AEA: To prepare a directory (henceforth working directory) for development with the AEA framework you can take a few steps: - Either, manually: - - - Ensure you start with an empty working directory to avoid any unnecessary side effects. - - - In your working directory, create an empty folder called `packages`. This folder will act as the local registry for packages. - - - In your working directory, create a `.env` file with the constant `PYTHONPATH=$PYTHONPATH:path_to_packages_dir` where `path_to_packages_dir` is the path to the packages folder in your working directory. - + - Ensure you start with an empty working directory to avoid any unnecessary side effects. + - In your working directory, create an empty folder called `packages`. This folder will act as the local registry for packages. + - In your working directory, create a `.env` file with the constant `PYTHONPATH=$PYTHONPATH:path_to_packages_dir` where `path_to_packages_dir` is the path to the `packages` folder in your working directory. - Or, automated: - - - Fork our template repo for AEA development. Then clone it to your machine. - + - Fork our template repo for AEA development. Then clone it to your machine. - Depending on your editor, you might take further steps: - - - VS Code: The Python Extension in VS Code can be configured to include additional paths in the Python path. The extension has a setting for `python.envFile` which specifies the path to a file containing environment variable definitions. The default is set to `"python.envFile": "${workspaceFolder}/.env"`. Provide the path to the `.env` file in the above settings. In the `.env` file, add the `PYTHONPATH` constant defined above. Then close VS Code and re-open it for the settings to take effect. + - VS Code: The Python Extension in VS Code can be configured to include additional paths in the Python path. The extension has a setting for `python.envFile` which specifies the path to a file containing environment variable definitions. The default is set to `"python.envFile": "${workspaceFolder}/.env"`. Provide the path to the `.env` file in the above settings. In the `.env` file, add the `PYTHONPATH` constant defined above. Then close VS Code and re-open it for the settings to take effect. After developing a package, you can add it to an AEA project in the working directory (e.g. `aea create AGENT_NAME && cd AGENT_NAME && aea add --local PACKAGE_TYPE PUBLIC_ID` will create a new AEA project `AGENT_NAME` and add the package of type `PACKAGE_TYPE` with public id `PUBLIC_ID` to it.) @@ -35,23 +28,16 @@ After developing a package, you can add it to an AEA project in the working dire It is also possible to develop directly in an AEA project: - Prepare a directory (henceforth working directory) for development. - - Create a new project `aea create AGENT_NAME && cd AGENT_NAME` - - Scaffold a new package `aea scaffold --with-symlinks PACKAGE_TYPE PACKAGE_NAME`. This will create the package scaffold under the directory `{PACKAGE_TYPE}s` and create symlinks to ensure package import paths line up with the folder structure. The symlinks are not needed to run the AEA. They are purely for your IDE. - - In your working directory, create a `.env` file with the constant `PYTHONPATH=$PYTHONPATH:path_to_project_dir` where `path_to_project_dir` is the path to the AEA project contained in your working directory. - - Depending on your editor, you might take further steps: + - VS Code: The Python Extension in VS Code can be configured to include additional paths in the Python path. The extension has a setting for `python.envFile` which specifies the path to a file containing environment variable definitions. The default is set to `"python.envFile": "${workspaceFolder}/.env"`. Provide the path to the `.env` file in the above settings. In the `.env` file, add the `PYTHONPATH` constant defined above. Then close VS Code and re-open it for the settings to take effect. - - VS Code: The Python Extension in VS Code can be configured to include additional paths in the Python path. The extension has a setting for `python.envFile` which specifies the path to a file containing environment variable definitions. The default is set to `"python.envFile": "${workspaceFolder}/.env"`. Provide the path to the `.env` file in the above settings. In the `.env` file, add the `PYTHONPATH` constant defined above. Then close VS Code and re-open it for the settings to take effect. - -## General advice +## General Advice This advice partially overlaps with the previous two sections: - When developing a specific AEA, it might be helpful to publish/push or fetch/add from local registry. From your working directory/AEA project, simply execute the usual AEA CLI commands. The CLI will first search in the `packages` directory, then in the remote AEA registry. You can explicitly point to local registry by providing flag `--local` or `--remote` to only point to remote registry (see here for more details on CLI commands). - -- When working on an AEA, it may help to provide a symbolic link to the packages directory, so that the import paths are detected by your editor. Simply create an empty file with `touch packages` in your AEA project, then create a symbolic link to the `packages` directory with `ln -s ../packages packages`. - +- When working on an AEA, it may help to provide a symbolic link to the `packages` directory, so that the import paths are detected by your editor. Simply create an empty file with `touch packages` in your AEA project, then create a symbolic link to the `packages` directory with `ln -s ../packages packages`. - Alternatively, it can help to provide symbolic links within an AEA to align import paths with folder structure. Simply create an empty file with `touch packages` in your AEA project, then create a symbolic link to `ln -s vendor packages`. diff --git a/docs/diagram.md b/docs/diagram.md index 6c3c166aba..bf27cdd5de 100644 --- a/docs/diagram.md +++ b/docs/diagram.md @@ -1,3 +1,5 @@ +# Architectural Diagram + The framework has two distinctive parts. - A **core** that is developed by the Fetch.ai team as well as external contributors. @@ -5,7 +7,7 @@ The framework has two distinctive parts. Currently, the framework supports four types of packages which can be added to the core as modules: -- Skills encapsulate logic that deliver economic value to the AEA. Skills are the main focus of the framework's extensibility. +- Skills encapsulate logic that deliver economic value to the AEA. Skills are the main focus of the framework's extensibility. - Protocols define the structure of agent-to-agent and component-to-component interactions (messages and dialogues) for agents. - Connections provide interfaces for the agent to connect with the outside world. They wrap SDKs or APIs and provide interfaces to networks, ledgers and other services. - Contracts wrap smart contracts for Fetch.ai and third-party decentralized ledgers. @@ -14,30 +16,25 @@ The following figure illustrates the framework's architecture: Simplified illustration of an AEA - The execution is broken down in more detail below: Execution of an AEA The agent operation breaks down into three parts: -* **Setup**: calls the `setup()` method of all registered resources -* **Operation**: - * Agent loop (Thread 1 - Asynchronous agent loop): - * `react()`: this function grabs all Envelopes waiting in the `InBox` queue and calls the `handle()` method on the Handler(s) responsible for them. - * `act()`: this function calls the `act()` method of all registered Behaviours. - * `update()`: this function enqueues scheduled tasks for execution with the `TaskManager` and executes the decision maker. - * Task loop (Thread 2- Synchronous): executes available tasks - * Decision maker loop (Thread 3- Synchronous): processes internal messages - * Multiplexer (Thread 4 - Asynchronous event loop): processes incoming and outgoing messages across several connections asynchronously. -* **Teardown**: calls the `teardown()` method of all registered resources - +- **Setup**: calls the `setup()` method of all registered resources +- **Operation**: + - Agent loop (Thread 1 - Asynchronous agent loop): + - `react()`: this function grabs all Envelopes waiting in the `InBox` queue and calls the `handle()` method on the Handler(s) responsible for them. + - `act()`: this function calls the `act()` method of all registered Behaviours. + - `update()`: this function enqueues scheduled tasks for execution with the `TaskManager` and executes the decision maker. + - Task loop (Thread 2- Synchronous): executes available tasks + - Decision maker loop (Thread 3- Synchronous): processes internal messages + - Multiplexer (Thread 4 - Asynchronous event loop): processes incoming and outgoing messages across several connections asynchronously. +- **Teardown**: calls the `teardown()` method of all registered resources To prevent a developer from blocking the main loop with custom skill code, an execution time limit is applied to every `Behaviour.act` and `Handler.handle` call. By default, the execution limit is set to `0` seconds, which disables the feature. You can set the limit to a strictly positive value (e.g. `0.1` seconds) to test your AEA for production readiness. If the `act` or `handle` time exceed this limit, the call will be terminated. An appropriate message is added to the logs in the case of some code execution being terminated. - - -
diff --git a/docs/erc1155-skills.md b/docs/erc1155-skills.md index 2ccb214906..74b81d165b 100644 --- a/docs/erc1155-skills.md +++ b/docs/erc1155-skills.md @@ -1,10 +1,12 @@ +# Contract Deploy and Interact + The AEA `erc1155_deploy` and `erc1155_client` skills demonstrate an interaction between two AEAs which use a smart contract. -* The `erc1155_deploy` skill deploys the smart contract, creates and mints items. -* The `erc1155_client` skill signs a transaction to complete a trustless trade with its counterparty. +- The `erc1155_deploy` skill deploys the smart contract, creates and mints items. +- The `erc1155_client` skill signs a transaction to complete a trustless trade with its counterparty. + +## Preparation Instructions -## Preparation instructions - ### Dependencies Follow the Preliminaries and Installation sections from the AEA quick start. @@ -13,62 +15,56 @@ Follow the Preliminaries and -

Note

-

This is only for demonstrative purposes since the AEA deploying the contract also has the ability to mint tokens. In reality, the transfer of tokens from the AEA signing the transaction is worthless.

- +!!! note + This is only for demonstrative purposes since the AEA deploying the contract also has the ability to mint tokens. In reality, the transfer of tokens from the AEA signing the transaction is worthless. ## Demo -### Create the deployer AEA +### Create the Deployer AEA Fetch the AEA that will deploy the contract: ``` bash -aea fetch fetchai/erc1155_deployer:0.34.4 +aea fetch fetchai/erc1155_deployer:0.34.5 cd erc1155_deployer aea install aea build ``` -
Alternatively, create from scratch. -

- -Create the AEA that will deploy the contract. - -``` bash -aea create erc1155_deployer -cd erc1155_deployer -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/erc1155_deploy:0.31.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-cosmos": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' -aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ -'[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' -aea install -aea build -``` - -And change the default ledger: -``` bash -aea config set agent.default_ledger ethereum -``` - -

-
+??? note "Alternatively, create from scratch:" + Create the AEA that will deploy the contract. + + ``` bash + aea create erc1155_deployer + cd erc1155_deployer + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/erc1155_deploy:0.31.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-cosmos": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ + '[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' + aea install + aea build + ``` + + And change the default ledger: + + ``` bash + aea config set agent.default_ledger ethereum + ``` Create a private key for the deployer AEA and add it for Ethereum use: @@ -90,55 +86,51 @@ Finally, certify the key for use by the connections that request that: aea issue-certificates ``` -### Create the client AEA +### Create the Client AEA In another terminal, fetch the client AEA which will receive some tokens from the deployer. ``` bash -aea fetch fetchai/erc1155_client:0.34.4 +aea fetch fetchai/erc1155_client:0.34.5 cd erc1155_client aea install aea build ``` -
Alternatively, create from scratch. -

- -Create the AEA that will get some tokens from the deployer. - -``` bash -aea create erc1155_client -cd erc1155_client -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/erc1155_client:0.29.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-cosmos": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' -aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ -'[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' -aea install -aea build -``` - -And change the default ledger: -``` bash -aea config set agent.default_ledger ethereum -``` - -

-
+??? note "Alternatively, create from scratch:" + Create the AEA that will get some tokens from the deployer. + + ``` bash + aea create erc1155_client + cd erc1155_client + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/erc1155_client:0.29.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-cosmos": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ + '[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' + aea install + aea build + ``` + + And change the default ledger: + + ``` bash + aea config set agent.default_ledger ethereum + ``` Create a private key for the client AEA and add it for Ethereum use: @@ -155,6 +147,7 @@ aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` @@ -162,6 +155,7 @@ aea issue-certificates ## Run Ganache Execute the following command to run Ganache: + ``` bash docker run -p 8545:8545 trufflesuite/ganache-cli:latest --verbose --gasPrice=0 --gasLimit=0x1fffffffffffff --account="$(cat erc1155_deployer/ethereum_private_key.txt),1000000000000000000000" --account="$(cat erc1155_client/ethereum_private_key.txt),1000000000000000000000" ``` @@ -176,15 +170,13 @@ aea get-wealth ethereum You should get `1000000000000000000000`. -
-

Note

-

If no wealth appears after a while, then try funding the private key directly using a web faucet.

-
- +!!! note + If no wealth appears after a while, then try funding the private key directly using a web faucet. -## Update SOEF configurations for both AEAs +## Update SOEF Configurations for both AEAs Update the SOEF configuration in both AEA projects: + ``` bash aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum ``` @@ -193,28 +185,30 @@ aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum First, run the deployer AEA: -``` bash +``` bash aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of this address. +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of this address. -Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` to retrieve the address. The output will be something like `/dns4/127.0.0.1/tcp/9000/p2p/16Uiu2HAm2JPsUX1Su59YVDXJQizYkNSe8JCusqRpLeeTbvY76fE5`. +Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` to retrieve the address. The output will be something like `/dns4/127.0.0.1/tcp/9000/p2p/16Uiu2HAm2JPsUX1Su59YVDXJQizYkNSe8JCusqRpLeeTbvY76fE5`. This is the entry peer address for the local
agent communication network created by the deployer. This AEA then performs the following steps: - * deploys the smart contract - * creates a batch of items in the smart contract - * mints a batch of items in the smart contract +- deploys the smart contract +- creates a batch of items in the smart contract +- mints a batch of items in the smart contract At some point you should see the log output: + ``` bash registering service on SOEF. ``` At this point, configure the client AEA to connect to the same local ACN created by the deployer by running the following command in the client's terminal, replacing `SOME_ADDRESS` with the value you noted above: + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -228,25 +222,21 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ Then, run the client AEA: -``` bash +``` bash aea run ``` You will see that after discovery, the two AEAs exchange information about the transaction and the client at the end signs and sends the signature to the deployer AEA to send it to the network. -
-

Note

-

Transactions on Ropsten can take a significant amount of time! If you run the example a second time, and the previous transaction is still pending, it can lead to a failure. - - The warning message `Cannot verify whether transaction improves utility. Assuming it does!` can be ignored. -

-
+!!! note + Transactions on Ropsten can take a significant amount of time! If you run the example a second time, and the previous transaction is still pending, it can lead to a failure. + The warning message `Cannot verify whether transaction improves utility. Assuming it does!` can be ignored. ## Delete the AEAs When you're done, stop the agents (`CTRL+C`), go up a level and delete the AEAs. -``` bash +``` bash cd .. aea delete erc1155_deployer aea delete erc1155_client @@ -256,7 +246,7 @@ aea delete erc1155_client This diagram shows the communication between the various entities in this interaction: -
+``` mermaid sequenceDiagram participant Search participant Erc1155_contract @@ -287,5 +277,4 @@ This diagram shows the communication between the various entities in this intera deactivate Client_AEA deactivate Deployer_AEA deactivate Blockchain - -
\ No newline at end of file +``` diff --git a/docs/generic-skills-step-by-step.md b/docs/generic-skills-step-by-step.md index 0e2eea4fe6..62954d6068 100644 --- a/docs/generic-skills-step-by-step.md +++ b/docs/generic-skills-step-by-step.md @@ -1,3 +1,5 @@ +# Trade between Two AEAs + This guide is a step-by-step introduction to building AEAs that advertise their static and dynamic data, find other AEAs with required data, negotiate terms of trade, and carry out trades via ledger transactions. If you simply want to run the resulting AEAs go here. @@ -6,25 +8,25 @@ If you simply want to run the resulting AEAs go here Follow the Preliminaries and Installation sections from the AEA quick start. -## Reference code (Optional) +## Reference Code (Optional) This step-by-step guide goes through the creation of two AEAs which are already developed by Fetch.ai. You can get the finished AEAs, and compare your code against them, by following the next steps: ``` bash -aea fetch fetchai/generic_seller:0.29.4 +aea fetch fetchai/generic_seller:0.29.5 cd generic_seller -aea eject skill fetchai/generic_seller:0.28.5 +aea eject skill fetchai/generic_seller:0.28.6 cd .. ``` ``` bash -aea fetch fetchai/generic_buyer:0.30.4 +aea fetch fetchai/generic_buyer:0.30.5 cd generic_buyer -aea eject skill fetchai/generic_buyer:0.27.5 +aea eject skill fetchai/generic_buyer:0.27.6 cd .. ``` -## Simplification step +## Simplification Step To keep file paths consistent with the reference code, we suggest you initialize your local author as `fetchai` for the purpose of this demo only: @@ -37,12 +39,15 @@ aea init --reset --author fetchai ### Step 1: Create the AEA Create a new AEA by typing the following command in the terminal: + ``` bash aea create my_generic_seller cd my_generic_seller aea install ``` + Our newly created AEA is inside the current working directory. Let’s create our new skill that will handle the sale of data. Type the following command: + ``` bash aea scaffold skill generic_seller ``` @@ -55,7 +60,7 @@ The `scaffold skill` command creates the correct structure for a new skill insid - `my_model.py` - `skills.yaml` -### Step 2: Create the behaviour +### Step 2: Create the Behaviour A `Behaviour` class contains the business logic specific to actions initiated by the AEA, rather than reactions to other events. @@ -225,17 +230,17 @@ class GenericServiceRegistrationBehaviour(TickerBehaviour): self.context.logger.info("unregistering agent from SOEF.") ``` -This `TickerBehaviour` registers (see `setup` method) and deregisters (see `teardown` method) our AEA’s service on the SOEF search node at regular tick intervals (here 60 seconds). By registering, the AEA becomes discoverable to other AEAs. +This `TickerBehaviour` registers (see `setup` method) and de-registers (see `teardown` method) our AEA’s service on the SOEF search node at regular tick intervals (here 60 seconds). By registering, the AEA becomes discoverable to other AEAs. In `setup`, prior to registrations, we send a message to the ledger connection to check the account balance for the AEA's address on the configured ledger. -### Step 3: Create the handler +### Step 3: Create the Handler So far, we have tasked the AEA with sending register/unregister requests to the SOEF search node. However at present, the AEA has no way of handling the responses it receives from the search node, or in fact messages sent by any other AEA. We have to specify the logic to negotiate with another AEA based on the strategy we want our AEA to follow. The following diagram illustrates the negotiation flow that we want this AEA to use, as well as interactions with a search node and the blockchain between a `seller_AEA` and a `buyer_AEA`. -
+``` mermaid sequenceDiagram participant Search participant Buyer_AEA @@ -272,8 +277,7 @@ We have to specify the logic to negotiate with another AEA based on the strategy deactivate Search deactivate Seller_AEA deactivate Blockchain - -
+``` In our case, `my_generic_seller` is the `Seller_AEA` in the above figure. @@ -351,6 +355,7 @@ class GenericFipaHandler(Handler): def teardown(self) -> None: """Implement the handler teardown.""" ``` + The code above contains the logic for handling `FipaMessages` received by the `my_generic_seller` AEA. We use `FipaDialogues` (more on this below) to keep track of the progress of the negotiation dialogue between the `my_generic_seller` AEA and the `my_generic_buyer` AEA. In the above `handle` method, we first check if a received message belongs to an existing dialogue or if we have to create a new dialogue (the `recover dialogue` part). Once this is done, we break down the AEA's response to each type of negotiation message, as indicated by the message's performative (the `handle message` part). Therefore, we implement the AEA's response to each negotiation message type in a different handler function. @@ -451,6 +456,7 @@ The next code-block handles the decline message we receive from the buyer. Add FipaDialogue.EndState.DECLINED_PROPOSE, fipa_dialogue.is_self_initiated ) ``` + If we receive a decline message from the buyer we close the dialogue and terminate this conversation with `my_generic_buyer`. Alternatively, we might receive an `ACCEPT` message. In order to handle this option add the following code below the `_handle_decline` function: @@ -485,7 +491,8 @@ Alternatively, we might receive an `ACCEPT` message. In order to handle this opt self.context.outbox.put_message(message=match_accept_msg) ``` -When `my_generic_buyer` accepts the `Proposal` we send it and sends an `ACCEPT` message, we have to respond with another message (`MATCH_ACCEPT_W_INFORM`) to match the acceptance of the terms of trade and to inform the buyer of the address we would like it to send the funds to. + +When `my_generic_buyer` accepts the `Proposal` we send it and sends an `ACCEPT` message, we have to respond with another message (`MATCH_ACCEPT_W_INFORM`) to match the acceptance of the terms of trade and to inform the buyer of the address we would like it to send the funds to. Lastly, we must handle an `INFORM` message, which the buyer uses to inform us that it has indeed sent the funds to the provided address. Add the following code at the end of the file: @@ -556,9 +563,11 @@ Lastly, we must handle an `INFORM` message, which the buyer uses to inform us th ) ) ``` -In the above code, we check the `INFORM` message. If it contains a transaction digest, then we verify that the transaction matches the proposal the buyer accepted. If the transaction is valid and we received the funds then we send the data to the buyer. Otherwise, we do not send the data. + +In the above code, we check the `INFORM` message. If it contains a transaction digest, then we verify that the transaction matches the proposal the buyer accepted. If the transaction is valid and we received the funds, then we send the data to the buyer. Otherwise, we do not send the data. The remaining handlers are as follows: + ``` python def _handle_invalid( self, fipa_msg: FipaMessage, fipa_dialogue: FipaDialogue @@ -876,7 +885,7 @@ class GenericOefSearchHandler(Handler): The `GenericLedgerApiHandler` deals with `LedgerApiMessages` from the ledger connection and the `GenericOefSearchHandler` handles `OefSearchMessages` from the SOEF connection. -### Step 4: Create the strategy +### Step 4: Create the Strategy Next, we are going to create the strategy that we want our `my_generic_seller` AEA to follow. Rename the `my_model.py` file (`my_generic_seller/skills/generic_seller/my_model.py`) to `strategy.py` and replace the stub code with the following: @@ -1143,7 +1152,7 @@ The following properties and methods deal with different aspects of the strategy The helper private function `collect_from_data_source` is where we read data from a sensor or if there are no sensor we use some default data provided (see the `data_for_sale` property). -### Step 5: Create the dialogues +### Step 5: Create the Dialogues To keep track of the structure and progress of interactions, including negotiations with a buyer AEA and interactions with search nodes and ledgers, we use dialogues. Create a new file in the skill folder (`my_generic_seller/skills/generic_seller/`) and name it `dialogues.py`. Inside this file add the following code: @@ -1397,7 +1406,7 @@ The `FipaDialogues` class contains negotiation dialogues with each `my_generic_b The `FipaDialogues` class extends `BaseFipaDialogues`, which itself derives from the base `Dialogues` class. Similarly, the `FipaDialogue` class extends `BaseFipaDialogue` which itself derives from the base `Dialogue` class. To learn more about dialogues have a look here. -### Step 6: Update the YAML files +### Step 6: Update the YAML Files Since we made so many changes to our AEA we have to update the `skill.yaml` (at `my_generic_seller/skills/generic_seller/skill.yaml`). Make sure you update your `skill.yaml` with the following configuration: @@ -1419,13 +1428,13 @@ fingerprint: strategy.py: QmYTUsfv64eRQDevCfMUDQPx2GCtiMLFdacN4sS1E4Fdfx fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 skills: [] behaviours: service_registration: @@ -1484,7 +1493,6 @@ aea fingerprint skill fetchai/generic_seller:0.1.0 This will hash each file and save the hash in the fingerprint. This way, in the future we can easily track if any of the files have changed. - ## Generic Buyer AEA ### Step 1: Create the AEA @@ -1511,7 +1519,7 @@ This command creates the correct structure for a new skill inside our AEA projec - `my_model.py` - `skills.yaml` -### Step 2: Create the behaviour +### Step 2: Create the Behaviour Open the `behaviours.py` file (`my_generic_buyer/skills/generic_buyer/behaviours.py`) and replace the stub code with the following: @@ -1700,7 +1708,7 @@ class GenericTransactionBehaviour(TickerBehaviour): This `TickerBehaviour` will send a search query to the SOEF search node at regular tick intervals. -### Step 3: Create the handler +### Step 3: Create the Handler So far, the AEA is tasked with sending search queries to the SOEF search node. However, currently the AEA has no way of handling the responses it receives from the SOEF or messages from other agents. @@ -1779,6 +1787,7 @@ class GenericFipaHandler(Handler): def teardown(self) -> None: """Implement the handler teardown.""" ``` + You will see that we are following similar logic to the `generic_seller` when we develop the `generic_buyer`’s side of the negotiation. First, we create a new dialogue and store it in the dialogues class. Then we are checking what kind of message we received by checking its performative. So lets start creating our handlers: ``` python @@ -1801,6 +1810,7 @@ You will see that we are following similar logic to the `generic_seller` when we ) self.context.outbox.put_message(message=default_msg) ``` + The above code handles messages referencing unidentified dialogues and responds with an error message to the sender. Next we will handle the `PROPOSE` message received from the `my_generic_seller` AEA: ``` python @@ -1843,6 +1853,7 @@ The above code handles messages referencing unidentified dialogues and responds ) self.context.outbox.put_message(message=decline_msg) ``` + When we receive a proposal, we have to check if we have the funds to complete the transaction and if the proposal is acceptable based on our strategy. If the proposal is not affordable or acceptable, we respond with a `DECLINE` message. Otherwise, we send an `ACCEPT` message to the seller. The next code-block handles the `DECLINE` message that we may receive from the seller as a response to our `CFP` or `ACCEPT` messages: @@ -1880,7 +1891,8 @@ The next code-block handles the `DECLINE` message that we may receive from the s FipaDialogue.EndState.DECLINED_ACCEPT, fipa_dialogue.is_self_initiated ) ``` -The above code terminates each dialogue with the specific AEA and stores the state of the terminated dialogue (whether it was terminated after a `CFP` or an `ACCEPT`). + +The above code terminates each dialogue with the specific AEA and stores the state of the terminated dialogue (whether it was terminated after a `CFP` or an `ACCEPT`). If `my_generic_seller` AEA wants to move on with the sale, it will send a `MATCH_ACCEPT` message. In order to handle this we add the following code: @@ -1922,7 +1934,8 @@ def _handle_match_accept( "informing counterparty={} of payment.".format(fipa_msg.sender[-5:]) ) ``` -The first thing we are checking is if we enabled our AEA to transact with a ledger. If so, we add this negotiation to the queue of transactions to be processed. If not, we simulate non-ledger payment by sending an inform to the seller that the payment is done (say via bank transfer). + +The first thing we are checking is if we enabled our AEA to transact with a ledger. If so, we add this negotiation to the queue of transactions to be processed. If not, we simulate non-ledger payment by sending an `inform` to the seller that the payment is done (say via bank transfer). Lastly, we need to handle `INFORM` messages. This is the message that will have our data: @@ -2101,7 +2114,8 @@ class GenericOefSearchHandler(Handler): ) ) ``` -When we receive a message from the SOEF search node of a type `OefSearchMessage.Performative.SEARCH_RESULT`, we are passing the details to the relevant handler method. In the `_handle_search` function we are checking that the response contains some agents and we stop the search if it does. We pick our first agent and we send a `CFP` message. + +When we receive a message from the SOEF search node of a type `OefSearchMessage.Performative.SEARCH_RESULT`, we are passing the details to the relevant handler method. In the `_handle_search` function, we are checking that the response contains some agents, and we stop the search if it does. We pick our first agent and send a `CFP` message. The last handlers we need are the `GenericSigningHandler` and the `GenericLedgerApiHandler`. These handlers are responsible for `SigningMessages` that we receive from the `DecisionMaker`, and `LedgerApiMessages` that we receive from the ledger connection, respectively. @@ -2443,7 +2457,7 @@ class GenericLedgerApiHandler(Handler): ) ``` -### Step 4: Create the strategy +### Step 4: Create the Strategy We are going to create the strategy that we want our AEA to follow. Rename the `my_model.py` file (in `my_generic_buyer/skills/generic_buyer/`) to `strategy.py` and replace the stub code with the following: @@ -2647,7 +2661,7 @@ The following code block checks if the proposal that we received is acceptable a return result ``` -The `is_affordable_proposal` method in the following code block checks if we can afford the transaction based on the funds we have in our wallet on the ledger. The rest of the methods are self-explanatory. +The `is_affordable_proposal` method in the following code block checks if we can afford the transaction based on the funds we have in our wallet on the ledger. The rest of the methods are self-explanatory. ``` python def is_affordable_proposal(self, proposal: Description) -> bool: @@ -2720,7 +2734,7 @@ The `is_affordable_proposal` method in the following code block checks if we can """Update agent location and query for search.""" ``` -### Step 5: Create the dialogues +### Step 5: Create the Dialogues As mentioned during the creation of the seller AEA, we should keep track of the various interactions an AEA has with others and this is done via dialogues. Create a new file and name it `dialogues.py` (in `my_generic_buyer/skills/generic_buyer/`). Inside this file add the following code: @@ -3059,7 +3073,7 @@ class SigningDialogues(Model, BaseSigningDialogues): The various dialogues classes in the above code snippet store dialogues with other AEAs, services and components, (e.g. SOEF search node via the `fetchai/soef` connection, ledgers via the `fetchai/ledger` connection and the decision maker). They expose useful methods to manipulate these interactions, access previous messages, and enable us to identify possible communications problems between `my_generic_seller` and `my_generic_buyer` AEAs. -### Step 6: Update the YAML files +### Step 6: Update the YAML Files After making so many changes to our skill, we have to update the `skill.yaml` configuration file so it reflects our newly created classes, and contains the values used by the strategy. Make sure `skill.yaml` contains the following configuration: @@ -3080,14 +3094,14 @@ fingerprint: strategy.py: QmcrwaEWvKHDCNti8QjRhB4utJBJn5L8GpD27Uy9zHwKhY fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: [] behaviours: search: @@ -3149,7 +3163,8 @@ models: is_abstract: false dependencies: {} ``` -We must pay attention to the models and the strategy’s variables. Here we can change the price we would like to buy each reading at, the maximum transaction fee we are prepared to pay, and so on. + +We must pay attention to the models and the strategy’s variables. Here we can change the price we would like to buy each reading at, the maximum transaction fee we are prepared to pay, and so on. Finally, we fingerprint our new skill: @@ -3161,37 +3176,41 @@ This will hash each file and save the hash in the fingerprint. This way, in the ## Run the AEAs -### Create private keys +### Create Private Keys For each AEA, create a private key: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Next, create a private key to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -### Update the AEA configurations +### Update the AEA Configurations In both AEAs run: + ``` bash aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' ``` -### Fund the buyer AEA +### Fund the Buyer AEA Create some wealth for your buyer on the Fetch.ai testnet (this operation might take a while). @@ -3199,36 +3218,36 @@ Create some wealth for your buyer on the Fetch.ai testnet (this operation might aea generate-wealth fetchai --sync ``` -### Run seller AEA +### Run Seller AEA Add the remaining packages for the seller AEA, then run it: ``` bash -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add protocol fetchai/fipa:1.1.6 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add protocol fetchai/fipa:1.1.7 aea install aea build -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea run ``` Once you see a message of the form `To join its network use multiaddr: ['SOME_ADDRESS']` take note of the address. -#### Run buyer AEA +#### Run Buyer AEA Add the remaining packages for the buyer AEA: ``` bash -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add protocol fetchai/fipa:1.1.6 -aea add protocol fetchai/signing:1.1.6 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add protocol fetchai/fipa:1.1.7 +aea add protocol fetchai/signing:1.1.7 aea install aea build -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 ``` Then, update the configuration of the buyer AEA's P2P connection: @@ -3247,6 +3266,7 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ where `SOME_ADDRESS` is replaced accordingly. Then run the buyer AEA: + ``` bash aea run ``` @@ -3256,20 +3276,19 @@ You will see that the AEAs negotiate and then transact using the Dorado testnet. ## Delete the AEAs When you are done, go up a level and delete the AEAs. + ``` bash cd .. aea delete my_generic_seller aea delete my_generic_buyer ``` -## Next steps +## Next Steps You have completed the "Getting Started" series. Congratulations! The following guide provides some hints on AEA development setup. -### Recommended +### Recommended We recommend you build your own AEA next. There are many helpful guides and demos in the documentation, and a developer community on Discord. Speak to you there! - -
diff --git a/docs/generic-skills.md b/docs/generic-skills.md index 3edd084053..856cd2ed84 100644 --- a/docs/generic-skills.md +++ b/docs/generic-skills.md @@ -1,11 +1,13 @@ +# Generic Skills + The AEA generic buyer and seller skills demonstrate an interaction between two AEAs: -* An AEA that provides a (data selling) service. -* An AEA that demands this service. +- An AEA that provides a (data selling) service. +- An AEA that demands this service. ## Discussion -The scope of this guide is demonstrating how to create easily configurable AEAs. The buyer AEA finds the seller, negotiates the terms of trade, and if successful purchases the data by sending payment. The seller AEA sells the service specified in its `skill.yaml` file, delivering it to the buyer upon receiving payment. +The scope of this guide is demonstrating how to create easily configurable AEAs. The buyer AEA finds the seller, negotiates the terms of trade, and if successful purchases the data by sending payment. The seller AEA sells the service specified in its `skill.yaml` file, delivering it to the buyer upon receiving payment. Note that these agents do not utilize a smart contract but interact with a ledger to complete a transaction. Moreover, in this setup, the buyer agent has to trust the seller to send the data upon successful payment. @@ -15,7 +17,7 @@ The corresponding packages can be customised to allow for a database or sensor t The following diagram shows the communication between various entities in this interaction. -
+``` mermaid sequenceDiagram participant Search participant Buyer_AEA @@ -42,147 +44,147 @@ The following diagram shows the communication between various entities in this i deactivate Buyer_AEA deactivate Search deactivate Seller_AEA - deactivate Blockchain - -
+ deactivate Blockchain +``` + +## Preparation Instructions -## Preparation instructions - ### Dependencies Follow the Preliminaries and Installation sections from the AEA quick start. -## Demo instructions +## Demo Instructions -### Create the seller AEA +### Create the Seller AEA First, fetch the seller AEA: -``` bash -aea fetch fetchai/generic_seller:0.29.4 --alias my_seller_aea -cd my_seller_aea -aea install -aea build -``` -
Alternatively, create from scratch. -

- -The following steps create the seller from scratch: ``` bash -aea create my_seller_aea +aea fetch fetchai/generic_seller:0.29.5 --alias my_seller_aea cd my_seller_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/generic_seller:0.28.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' aea install aea build ``` -

-
- -### Create the buyer AEA +??? note "Alternatively, create from scratch:" + The following steps create the seller from scratch: + + ``` bash + aea create my_seller_aea + cd my_seller_aea + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/generic_seller:0.28.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea install + aea build + ``` + +### Create the Buyer AEA Then, in another terminal fetch the buyer AEA: -``` bash -aea fetch fetchai/generic_buyer:0.30.4 --alias my_buyer_aea -cd my_buyer_aea -aea install -aea build -``` -
Alternatively, create from scratch. -

- -The following steps create the buyer from scratch: ``` bash -aea create my_buyer_aea +aea fetch fetchai/generic_buyer:0.30.5 --alias my_buyer_aea cd my_buyer_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/generic_buyer:0.27.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' aea install aea build ``` -

-
- - -### Add keys for the seller AEA +??? note "Alternatively, create from scratch:" + The following steps create the buyer from scratch: + + ``` bash + aea create my_buyer_aea + cd my_buyer_aea + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/generic_buyer:0.27.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea install + aea build + ``` + +### Add Keys for the Seller AEA Create the private key for the seller AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -### Add keys and generate wealth for the buyer AEA +### Add Keys and Generate Wealth for the Buyer AEA The buyer needs to have some wealth to purchase the data from the seller. First, create the private key for the buyer AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Then, create some wealth for your buyer based on the network you want to transact with. On the Fetch.ai `Dorado` network: + ``` bash aea generate-wealth fetchai ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -### Update the skill configurations +### Update the Skill Configurations The default skill configurations assume that the transaction is settled against the Fetch.ai ledger. In the generic seller's skill configuration file (`my_seller_aea/vendor/fetchai/skills/generi_seller/skill.yaml`) the `data_for_sale` is the data the seller AEA is offering for sale. In the following case, this is a one item dictionary where key is `generic` and value is `data`. -Furthermore, the `service_data` is used to register the seller's service in the SOEF search node and make your agent discoverable. +Furthermore, the `service_data` is used to register the seller's service in the SOEF search node and make your agent discoverable. + ``` yaml models: ... @@ -230,7 +232,7 @@ models: class_name: GenericStrategy ``` -### Update the skill configurations +### Update the Skill Configurations Both skills are abstract skills, make them instantiable: @@ -252,10 +254,11 @@ First, run the seller AEA: aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of this address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` to retrieve the address.) +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of this address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the seller. Then, configure the buyer to connect to this same local ACN by running the following command in the buyer terminal, replacing `SOME_ADDRESS` with the value you noted above: + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -279,8 +282,8 @@ You will see that the AEAs negotiate and then transact using the Fetch.ai testne When you're done, stop the agents (`CTRL+C`), go up a level and delete the AEAs. -``` bash +``` bash cd .. aea delete my_seller_aea aea delete my_buyer_aea -``` \ No newline at end of file +``` diff --git a/docs/generic-storage.md b/docs/generic-storage.md index cfd9640f5f..ecce155224 100644 --- a/docs/generic-storage.md +++ b/docs/generic-storage.md @@ -1,41 +1,45 @@ +# Generic Storage + The AEA generic storage: description and usage. ## AEA Generic Storage + AEA generic storage allows AEA skill's components to store data permanently and use it any time. The primary scenario: to save AEA data on shutdown and load back on startup. Generic storage provides an API for general data manipulation in key-object style. - ## Configuration + Storage is enabled by providing in the agent configuration (`aea-config.yaml`) an optional `storage_uri`. The storage URI consists of the backend name and string data provided to selected backend. The storage URI schema is `://[Optional string]` Example: `storage_uri: sqlite://./some_file.db` tells the AEA to use SQLite backend and store data in `./some_file.db`. Supported backends: -* SQLite - bundled with python simple SQL engine that uses file or in-memory storage. -## Dialogues and Storage integration +- SQLite - bundled with python simple SQL engine that uses file or in-memory storage. + +## Dialogues and Storage Integration One of the most useful cases is the integration of the dialogues subsystem and storage. It helps maintain dialogues state during agent restarts and reduced memory requirements due to the offloading feature. -### Keep terminal state dialogues +### Keep Terminal State Dialogues The Dialogues class has the optional boolean argument `keep_terminal_state_dialogues` -which specifies whether a dialogue which has reached its terminal state is kept in memory or not. If `keep_terminal_state_dialogues` is `False`, dialogues that reach a terminal state are removed from memory and can not be used any more. If `keep_terminal_state_dialogues` is `True`, dialogues that reach a terminal state are kept in memory or storage (if configured). If storage is configured, all dialogues in memory are stored on agent stop and restored on agent start. +which specifies whether a dialogue which has reached its terminal state is kept in memory or not. If `keep_terminal_state_dialogues` is `False`, dialogues that reach a terminal state are removed from memory and can not be used anymore. If `keep_terminal_state_dialogues` is `True`, dialogues that reach a terminal state are kept in memory or storage (if configured). If storage is configured, all dialogues in memory are stored on agent stop and restored on agent start. -It useful to save memory with dialogues that are in terminal state and probably will be never used again. +It is useful to save memory with terminated dialogues that will (possibly) be never used again. Default behaviour on keep terminals state dialogues is set according to the protocol specification but can be set explicitly with skill configuration section. - Skill configuration to keep terminated dialogues for `DefaultDialogues`. Example: -### Dialogues dump/restore on agent restart -If storage is enabled then all the dialogues present in memory will be stored on agent's teardown and loaded on agent's start. +### Dialogues Dump/Restore on Agent Restart -### Offload terminal state dialogues +If storage is enabled then all the dialogues present in memory will be stored on agent's teardown and loaded on agent's start. + +### Offload Terminal State Dialogues If keep options is set and storage is available dialogues in terminal state will be dumped to generic storage and removed from memory. This option helps to save memory and handle terminated dialogues with the same functionality as when they are kept in memory. @@ -43,8 +47,8 @@ All the active dialogues will be stored and loaded during agent restart. All the To enable dialogues offloading `keep_terminal_state_dialogues` has to be enabled and storage configured. +## Manual Usage with Skill Components -## Manual usage with skill components Handlers, Behaviours and Models are able to use storage if enabled. Storage is available with skill context: `self.context.storage` @@ -56,14 +60,15 @@ Objects consist of the `object_id` (unique string) and object body. The object b Collection is a group of the objects, objects data types can vary in the same collection. Collection name is name consists of letters, numbers and `_`. - To get/put specific object collection instance should be used. + ``` python my_collection = self.context.storage.get_sync_connection('my_collection') ``` Collection instance provide set of methods to handle data objects. List of collection methods: + ``` python def put(self, object_id: str, object_body: JSON_TYPES) -> None: """ @@ -110,11 +115,10 @@ List of collection methods: """ ``` - - Simple behaviour example: It saves the `datetime` string of the first act and print it to stdout. + ``` python class TestBehaviour(TickerBehaviour): """Simple behaviour to count how many acts were called.""" @@ -125,14 +129,14 @@ class TestBehaviour(TickerBehaviour): def act(self) -> None: """Make an action.""" if not (self.context.storage and self.context.storage.is_connected): - return + return collection = self.context.storage.get_sync_collection('my_collection') first_call_datetime = collection.get("first_call_ts") if not first_call_ts: # there is no object with "first_call_ts" id. first_call_datetime = str(datetime.datetime.now()) - col.put(first_call_ts, first_call_datetime) - print("Act was called for the first time on:", first_call_datetime) + col.put(first_call_ts, first_call_datetime) + print("Act was called for the first time on:", first_call_datetime) ``` Please, pay attention: `datetime` object is not JSON friendly and can not be stored directly. it should be transformed to `timestamp` or string before put into the storage. diff --git a/docs/glossary.md b/docs/glossary.md index 24b96a4f7b..7781323cea 100644 --- a/docs/glossary.md +++ b/docs/glossary.md @@ -1,9 +1,11 @@ +# Glossary + This glossary defines a number of terms commonly used across the documentation. For the definitions of framework components consult the API docs. -* **AEA (Autonomous Economic Agent)**: An AEA is "an intelligent agent acting on an owner's behalf, with limited or no interference, and whose goal is to generate economic value to its owner". AEAs are a special type of agent. [more] +- **AEA (Autonomous Economic Agent)**: An AEA is "an intelligent agent acting on an owner's behalf, with limited or no interference, and whose goal is to generate economic value to its owner". AEAs are a special type of agent. [more] -* **Software Agent**: a software agent is a computer program that acts on behalf of an entity (e.g. individual, organisation, business). [more] +- **Software Agent**: a software agent is a computer program that acts on behalf of an entity (e.g. individual, organisation, business). [more] -* **sOEF (Simple Open Economic Framework)**: The simple-OEF, or sOEF, is a search and discovery service for autonomous economic agents. [more] +- **sOEF (Simple Open Economic Framework)**: The simple-OEF, or sOEF, is a search and discovery service for autonomous economic agents. [more] -* **ACN (Agent Communication Network)**: The ACN is a peer-to-peer communication network for autonomous economic agents. [more] \ No newline at end of file +- **ACN (Agent Communication Network)**: The ACN is a peer-to-peer communication network for autonomous economic agents. [more] diff --git a/docs/gym-example.md b/docs/gym-example.md index 25b6516cbf..fab789cedc 100644 --- a/docs/gym-example.md +++ b/docs/gym-example.md @@ -1,18 +1,21 @@ +# Gym Example + The `gym` example demonstrates the AEA framework's flexibility with respect to Reinforcement Learning using OpenAI's `gym` framework. -### Discussion +## Discussion -There is no immediate use case for this example as you can train an RL agent without the AEA proxy layer just fine (and faster). +There is no immediate use case for this example as you can train an RL agent without the AEA proxy layer just fine (and faster). However, the example decouples the RL agent from the `gym.Env` allowing them to run in separate execution environments, potentially owned by different entities. -## Preparation instructions +## Preparation Instructions ### Dependencies Follow the Preliminaries and Installation sections from the AEA quick start. Download the necessary directories into your working directory: + ``` bash svn export https://github.com/fetchai/agents-aea.git/trunk/examples svn export https://github.com/fetchai/agents-aea.git/trunk/packages @@ -24,15 +27,15 @@ Install the `gym` and `numpy` library. pip install numpy gym ``` -## Demo instructions +## Demo Instructions -### Run the example +### Run the Example ``` bash python examples/gym_ex/train.py ``` -Notice the usual RL setup, i.e. the fit method of the RL agent has the typical signature and a familiar implementation. +Notice the usual RL setup, i.e. the fit method of the RL agent has the typical signature and a familiar implementation. Note how `train.py` demonstrates how easy it is to use an AEA agent as a proxy layer between an OpenAI `gym.Env` and a standard RL agent. @@ -59,5 +62,3 @@ if __name__ == "__main__": rl_agent = RLAgent(nb_goods=NB_GOODS) rl_agent.fit(env=proxy_env, nb_steps=NB_STEPS) ``` - -
diff --git a/docs/gym-skill.md b/docs/gym-skill.md index 882ef0a4c5..0f15f7635e 100644 --- a/docs/gym-skill.md +++ b/docs/gym-skill.md @@ -1,12 +1,13 @@ +# Gym Skill + The AEA gym skill demonstrates how a custom Reinforcement Learning agent, that uses OpenAI's gym library, may be embedded into an AEA skill and connection. -### Discussion +## Discussion The gym skills demonstrate how to wrap a Reinforcement Learning agent in a skill. The example decouples the RL agent from the `gym.Env` allowing them to run in separate execution environments, potentially owned by different entities. - -## Preparation instructions +## Preparation Instructions ### Dependencies @@ -25,69 +26,72 @@ Install the `gym` and `numpy` library. pip install numpy gym ``` -## Demo instructions - +## Demo Instructions ### Create the AEA First, fetch the gym AEA: + ``` bash -aea fetch fetchai/gym_aea:0.26.4 --alias my_gym_aea +aea fetch fetchai/gym_aea:0.26.5 --alias my_gym_aea cd my_gym_aea aea install ``` -
Alternatively, create from scratch. -

+??? note "Alternatively, create from scratch:" -### Create the AEA -In the root directory, create the gym AEA and enter the project. -``` bash -aea create my_gym_aea -cd my_gym_aea -``` + ### Create the AEA -### Add the gym skill -``` bash -aea add skill fetchai/gym:0.21.5 -``` + In the root directory, create the gym AEA and enter the project. -### Set gym connection as default -``` bash -aea config set agent.default_connection fetchai/gym:0.20.5 -``` + ``` bash + aea create my_gym_aea + cd my_gym_aea + ``` -### Install the skill dependencies + ### Add the gym skill -To install the `gym` package, a dependency of the gym skill, from PyPI run -``` bash -aea install -``` + ``` bash + aea add skill fetchai/gym:0.21.6 + ``` + + ### Set gym connection as default + + ``` bash + aea config set agent.default_connection fetchai/gym:0.20.6 + ``` + + ### Install the skill dependencies + + To install the `gym` package, a dependency of the gym skill, from PyPI run + + ``` bash + aea install + ``` -

-
+### Set up the Training Environment -### Set up the training environment +#### Copy the Gym Environment to the AEA Directory -#### Copy the gym environment to the AEA directory ``` bash mkdir gyms cp -a ../examples/gym_ex/gyms/. gyms/ ``` -#### Update the connection configuration +#### Update the Connection Configuration + ``` bash aea config set vendor.fetchai.connections.gym.config.env 'gyms.env.BanditNArmedRandom' ``` -#### Create and add a private key +#### Create and Add a Private Key ``` bash aea generate-key fetchai aea add-key fetchai ``` -### Run the AEA with the gym connection +### Run the AEA with the Gym Connection ``` bash aea run @@ -95,10 +99,8 @@ aea run You will see the gym training logs. - AEA gym training logs - ### Delete the AEA When you're done, you can go up a level and delete the AEA. @@ -109,9 +111,10 @@ aea delete my_gym_aea ``` ## Communication + This diagram shows the communication between the AEA and the gym environment -
+``` mermaid sequenceDiagram participant AEA participant Environment @@ -127,7 +130,7 @@ This diagram shows the communication between the AEA and the gym environment deactivate AEA deactivate Environment -
+``` ## Skill Architecture @@ -142,5 +145,3 @@ In this particular skill, which chiefly serves for demonstration purposes, we im Gym skill illustration The illustration shows how the RL agent only interacts with the proxy environment by sending it `action (A)` and receiving `observation (O)`, `reward (R)`, `done (D)` and `info (I)`. - -
diff --git a/docs/http-connection-and-skill.md b/docs/http-connection-and-skill.md index cd3ed4f14f..b00b5a1108 100644 --- a/docs/http-connection-and-skill.md +++ b/docs/http-connection-and-skill.md @@ -1,18 +1,20 @@ +# HTTP Connection + ## Description -The HTTP client and HTTP server connections enable an AEA to communicate with external servers, respectively clients, via HTTP. +The HTTP client and HTTP server connections enable an AEA to communicate with external servers, respectively clients, via HTTP. The HTTP client connection receives request envelops from an agent's skill, translates each into an HTTP request and sends it to a server external to the agent. If it receives an HTTP response from the server within a timeout window, it translates it into a response envelope, and sends this back to the relevant skill inside the agent. -The HTTP server connection allows you to run a server inside the connection itself which accepts requests from clients external to the agent. The HTTP server connection validates requests it receives against a provided OpenAPI file. It translates each valid request into an envelope and sends it to the skill specified in the connections configuration. If it receives a valid response envelope from the skill within a timeout window, the connection translates the response envelope into an HTTP response and serves it to the client. +The HTTP server connection allows you to run a server inside the connection itself which accepts requests from clients external to the agent. The HTTP server connection validates requests it receives against a provided OpenAPI file. It translates each valid request into an envelope and sends it to the skill specified in the `connections` configuration. If it receives a valid response envelope from the skill within a timeout window, the connection translates the response envelope into an HTTP response and serves it to the client. ## HTTP Client -The `fetchai/simple_data_request:0.14.5` skill demonstrates a simple use case of the HTTP Client connection. +The `fetchai/simple_data_request:0.14.6` skill demonstrates a simple use case of the HTTP Client connection. The `HttpRequestBehaviour` in `behaviours.py` periodically sends HTTP envelops to the HTTP client connection. Its `act()` method, periodically called, simply calls `_generate_http_request` which contains the logic for enqueueing an HTTP request envelop. -The `HttpHandler` in `handler.py` is a basic handler for dealing with HTTP response envelops received from the HTTP client connection. In the `handle()` method, the responses are dealt with by the private `_handle_response` method which essentially logs the response and adds the body of the response into the skill's shared state. +The `HttpHandler` in `handler.py` is a basic handler for dealing with HTTP response envelops received from the HTTP client connection. In the `handle()` method, the responses are dealt with by the private `_handle_response` method which essentially logs the response and adds the body of the response into the skill's shared state. ## HTTP Server @@ -26,13 +28,13 @@ cd my_aea Add the http server connection package: ``` bash -aea add connection fetchai/http_server:0.23.5 +aea add connection fetchai/http_server:0.23.6 ``` Update the default connection: ``` bash -aea config set agent.default_connection fetchai/http_server:0.23.5 +aea config set agent.default_connection fetchai/http_server:0.23.6 ``` Modify the `api_spec_path`: @@ -64,15 +66,11 @@ aea scaffold skill http_echo You can implement a simple http echo skill (modelled after the standard echo skill) which prints out the content of received messages and responds with success. - First, delete the `my_model.py` and `behaviour.py` files (in `my_aea/skills/http_echo/`). The server will be purely reactive, so you only need the `handlers.py` file, and the `dialogues.py` to record the state of the dialogues. Update `skill.yaml` accordingly, so set `models: {}` and `behaviours: {}`. Next implement a basic handler which prints the received envelopes and responds. - -Then, replace the content of `handlers.py` with the following code snippet, -after having replaced the placeholder `YOUR_USERNAME` with -the author username (i.e. the output of `aea config get agent.author`): +Then, replace the content of `handlers.py` with the following code snippet, after having replaced the placeholder `YOUR_USERNAME` with the author username (i.e. the output of `aea config get agent.author`): ``` python import json @@ -217,6 +215,7 @@ class HttpHandler(Handler): ``` Moreover, add a `dialogues.py` file with the following code: + ``` python from typing import Any @@ -314,13 +313,12 @@ models: class_name: HttpDialogues ``` - Run the fingerprinter (note, you will have to replace the author name with your author handle): + ``` bash -aea fingerprint skill fetchai/http_echo:0.21.5 +aea fingerprint skill fetchai/http_echo:0.21.6 ``` - Moreover, we need to tell to the `http_server` connection to what skill the HTTP requests should be forwarded. In our case, this is the `http_echo` that you have just scaffolded. @@ -331,11 +329,13 @@ aea config set vendor.fetchai.connections.http_server.config.target_skill_id "$( ``` You can now run the AEA: + ``` bash aea run ``` In a separate terminal, you can create a client and communicate with the server: + ``` python import requests diff --git a/docs/identity.md b/docs/identity.md index 82ff28c31d..1cd87f4c67 100644 --- a/docs/identity.md +++ b/docs/identity.md @@ -1,8 +1,7 @@ -
-

Note

-

This section is incomplete and will soon be updated. -

-
+# Identity + +!!! note + This section is incomplete and will soon be updated. The AEAs currently use the addresses associated with their private-public key pairs to identify themselves. diff --git a/docs/index.md b/docs/index.md index f852eab46f..ab90cd3825 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,27 +1,31 @@ +# AEA Framework Documentation The AEA framework provides the tools for creating Autonomous Economic Agents (AEA). -## What are AEAs? +## Autonomous Economic Agents (AEAs) -We define an autonomous economic agent or AEA as: + -> An intelligent agent acting on an owner's behalf, with limited or no interference, and whose goal is to generate economic value for its owner. +### What is an AEA? - +!!! info "Definition" + An Autonomous Economic Agent (AEA) is an intelligent agent that acts on its owner's behalf, with limited or no interference, and whose goal is to generate economic value for its owner. -An AEA represents an individual, organisation or object and looks after its interests. AEAs act independently of constant input from their owner and autonomously execute actions to achieve their prescribed goals. Their purpose is to create economic value for you, their owner, in clearly defined domains. AEAs have a wide range of application areas and we provide demo guides to highlight examples of their use cases. +- **Agent**: An AEA represents an individual, organisation or object and looks after their interests. +- **Autonomous**: AEAs act independently of constant input from their owner and autonomously execute actions to achieve their prescribed goals. +- **Economic**: Their purpose is to create economic value for their owner, in clearly defined domains. + +AEAs have a wide range of application areas and we provide demo guides to highlight examples of their use cases. ### What is not an AEA -* Any agent: AEAs' purpose is to generate economic value in a multi-stakeholder environment with competing incentives between agents. They represent humans, organisations or objects. -* APIs or sensors which do not have agency. -* Smart contracts which do not display any proactiveness and are purely reactive to external requests (=contract calls and transactions). -* Artificial General Intelligence (AGI). AEAs can have a very narrow, goal directed focus involving some economic gain and can have a very simple logic. +- Any agent: AEAs' purpose is to generate economic value in a multi-stakeholder environment with competing incentives between agents. They represent humans, organisations or objects. +- APIs or sensors which do not have agency. +- Smart contracts which do not display any proactivity and are purely reactive to external requests (=contract calls and transactions). +- Artificial General Intelligence (AGI). AEAs can have a very narrow, goal directed focus involving some economic gain and can have a very simple logic. -
-

Note

-

In the rest of the documentation, unless specified otherwise, we use the terms AEA and agent interchangeably to refer to AEA as defined above.

-
+!!! note + In the rest of the documentation, unless specified otherwise, we use the terms AEA and agent interchangeably to refer to AEA as defined above. ## What is the AEA Framework? @@ -29,19 +33,17 @@ The AEA framework is a development suite, currently implemented in Python, which AEAs achieve their goals with the help of a search & discovery service for AEAs -- the simple Open Economic Framework (sOEF) -- a decentralized agent communication system -- the Agent Communication Network (ACN) -- and using Fetch.ai's blockchain as a financial settlement and commitment layer. AEAs can also be integrated with third-party blockchains, such as Ethereum. - -## Why build with the AEA Framework? +## Why Build with the AEA Framework? The AEA framework provides the developer with a number of features, which combined cannot be found anywhere else: -* The peer-to-peer agent communication network (ACN) allows your AEAs to interact with all other AEAs over the public internet. -* The search and discovery system sOEF allows your AEAs to find other AEAs. -* The AEA registry enables code sharing and re-use by providing a space in which AEAs or their individual components may be shared. -* The framework's crypto and ledger APIs make it possible for AEAs to interact with blockchains. -* The contract packages enable AEAs to interact with smart contracts in Fetch.ai and other third-party decentralised ledgers. +- The peer-to-peer agent communication network (ACN) allows your AEAs to interact with all other AEAs over the public internet. +- The search and discovery system sOEF allows your AEAs to find other AEAs. +- The AEA registry enables code sharing and re-use by providing a space in which AEAs or their individual components may be shared. +- The framework's crypto and ledger APIs make it possible for AEAs to interact with blockchains. +- The contract packages enable AEAs to interact with smart contracts in Fetch.ai and other third-party decentralized ledgers. - -## Next steps +## Next Steps To get started developing your own AEA, check out the getting started section. @@ -51,12 +53,7 @@ If you would like to develop an AEA in a language different to Python then check If you want to run a demo, check out the demo guides. +## Help us Improve -## Help us improve - -
-

Note

-

This developer documentation is a work in progress. If you spot any errors please open an issue on Github or contact us in the developer Discord channel.

-
- -
+!!! note + This developer documentation is a work in progress. If you spot any errors please open an issue on Github or contact us in the developer Discord channel. diff --git a/docs/interaction-protocol.md b/docs/interaction-protocol.md index 0bc3b52293..aa0df4dd45 100644 --- a/docs/interaction-protocol.md +++ b/docs/interaction-protocol.md @@ -1,3 +1,5 @@ +# How AEAs Talk to Each Other - Interaction Protocols + Although one can imagine scenarios where single AEAs pursue their goals in isolation without interacting with other AEAs, there is no doubt that by working together, AEAs have the potential of achieving much more, especially when taking into account agents' heterogeneity, specialisations, and differing and often complimentary local views of the environment. Interactions in the AEA world are in the form of communication. This is influenced by established practices in the field of multi-agent systems and the prominent speech-act theory which suggests that a communicative expression is not only about transferring information from the speaker to the hearer, but that there may be meanings and commitments beyond the statement's appearance. Therefore, speech may more suitably be considered as action. For example, "I hereby appoint you as chairman" is not just a sequence of words, but an action done by the speaker with wide-ranging consequences for the hearer and any other audience to that sentence. @@ -10,36 +12,35 @@ There are multiple types of interactions an AEA can have: - Interactions between an AEA's internal components. - Interaction protocols - Usually, an interaction involves three types of framework packages: skills, protocols and connections. -### Example 1: negotiation +## Examples + +### Example 1: Negotiation The generic buyer/seller skills use the `fetchai/fipa` protocol which defines the negotiation dialogue between two AEAs. The `fetchai/generic_buyer` and `fetchai/generic_seller` skills implement specific strategies for engaging in such negotiations, by providing the logic for producing negotiation messages to be sent, handling negotiation messages received. The `fetchai/p2p_libp2p` connection is then used for connecting to the agent communication network enabling two AEAs with these skills to deliver negotiation messages to each other. -### Example 2: AEA <> web client +### Example 2: AEA <> Web Client -In the http connection guide we demonstrate how an AEA with an http server connection (e.g. `fetchai/http_server`) receives http payloads from web clients, translates them to messages conforming with the `fetchai/http` protocol and passes it to a skill (e.g. `fetchai/http_echo`) to process. The `fetchai/http` protocol in this case is used for communication between the connection and the skill. +In the http connection guide we demonstrate how an AEA with a http server connection (e.g. `fetchai/http_server`) receives http payloads from web clients, translates them to messages conforming with the `fetchai/http` protocol and passes it to a skill (e.g. `fetchai/http_echo`) to process. The `fetchai/http` protocol in this case is used for communication between the connection and the skill. -### Example 3 : AEA <> 3rd party server +### Example 3 : AEA <> 3rd Party Server -The `fetchai/http_client` connection can be used to make requests to third party servers. In this case, a skill containing the logic for the production of http requests would create messages conforming with the `fetchai/http` protocol and sends it to the `fetchai/http_client` connection which in turn translates it into http payload and sends it to the destination server. +The `fetchai/http_client` connection can be used to make requests to third party servers. In this case, a skill containing the logic for the production of http requests would create messages conforming with the `fetchai/http` protocol and sends it to the `fetchai/http_client` connection which in turn translates it into http payload and sends it to the destination server. Note that in general, third party SDKs can be wrapped in a connection and shared with other developers as a package. Often this also involves creating a custom protocol to enforce the type of interactions permitted between skills and the connection wrapping the SDK. +## Next Steps -## Next steps - -### Recommended +### Recommended We recommend you continue with the next step in the 'Getting Started' series: - Trade between two AEAs -### Relevant deep-dives +### Relevant Deep-Dives Most AEA development focuses on developing the `Skills` and `Protocols` necessary for an AEA to deliver against its economic objectives and implement interaction protocols. @@ -54,5 +55,3 @@ Most of an AEA developer's time is spent on `Skill` development. `Skills` are th In most cases, one of the available `Connection` packages can be used. Occasionally, you might develop your own `Connection`: - Connections - -
\ No newline at end of file diff --git a/docs/known-limits.md b/docs/known-limits.md index f5b6410338..1b15c78a34 100644 --- a/docs/known-limits.md +++ b/docs/known-limits.md @@ -1,3 +1,5 @@ +# Known Limitations + The AEA framework makes a multitude of tradeoffs. Here we present an incomplete list of known limitations: @@ -7,5 +9,3 @@ Here we present an incomplete list of known limitations: - The `AEABuilder` assumes that packages with public ids of identical author and package name have a matching version. As a result, if a developer uses a package with matching author and package name but different version in the public id, then the `AEABuilder` will not detect this and simply use the last loaded package. - The order in which `setup` and `teardown` are called on the skills, and `act` is called on the behaviours, is not guaranteed. Skills should be designed to work independently. Where skills use the `shared_context` to exchange information they must do so safely. - -
diff --git a/docs/language-agnostic-definition.md b/docs/language-agnostic-definition.md index 4ee4b6b428..cd41fac596 100644 --- a/docs/language-agnostic-definition.md +++ b/docs/language-agnostic-definition.md @@ -1,136 +1,126 @@ +# Language Agnostic Definition + Currently, there is an implementation of the AEA framework in Python which enables the development of AEAs in Python, and allows AEAs which are built with it to run. -However, AEAs can be developed in different programming languages. This is further backed by the idea that agent-based solutions are suited for multi-stakeholder environments where the different AEAs may be developed independently of one another, resulting in heterogeneous systems. +However, AEAs can be developed in different programming languages. This is further backed by the idea that agent-based solutions are suited for multi-stakeholder environments where the different AEAs may be developed independently of one another, resulting in heterogeneous systems. This means that in principle, there could be different implementations of the AEA framework, in various programming languages and for different platforms. However, to ensure that AEAs under any implementation are compatible with one another and able to interact, they must satisfy specific definitions. In this page, we compile a set of definitions which any AEA independent of its implementation must satisfy in order to be able to interact with other AEAs. An AEA, in technical terms, must satisfy the following requirements: -
    -
  • It MUST be capable of receiving and sending Envelopes which satisfy the following protobuf schema: - -``` proto -syntax = "proto3"; - -package aea.base.v0_1_0; - -message Envelope{ - string to = 1; - string sender = 2; - string protocol_id = 3; - bytes message = 4; - string uri = 5; -} -``` - -The format for the above fields are as follows: - -
      -
    • to and sender: an address derived from the private key of a secp256k1-compatible elliptic curve
    • -
    • protocol_id: this must match a defined regular expression (see below) -
    • message: a bytes string representing a serialized message in the specified protocol
    • -
    • URI: follows this syntax
    • -
    -
  • - -
  • It MUST implement each protocol's message with the required meta-fields: - -``` proto -syntax = "proto3"; - -package aea.base.v0_1_0; - -import "google/protobuf/struct.proto"; - - -message DialogueMessage { - int32 message_id = 1; - string dialogue_starter_reference = 2; - string dialogue_responder_reference = 3; - int32 target = 4; - bytes content = 5; -} - -message Message { - oneof message { - google.protobuf.Struct body = 1; - DialogueMessage dialogue_message = 2; - } -} - -message Envelope{ - string to = 1; - string sender = 2; - string protocol_id = 3; - bytes message = 4; - string uri = 5; -} -``` - where content is replaced with the protocol specific content (see here for details). -
  • - -
  • It MUST implement protocols according to their specification (see here for details). - -
  • It SHOULD implement the fetchai/default:1.1.6 protocol which satisfies the following protobuf schema: - -``` proto -syntax = "proto3"; - -package aea.fetchai.default.v1_0_0; - -message DefaultMessage{ - - // Custom Types - message ErrorCode{ - enum ErrorCodeEnum { - UNSUPPORTED_PROTOCOL = 0; - DECODING_ERROR = 1; - INVALID_MESSAGE = 2; - UNSUPPORTED_SKILL = 3; - INVALID_DIALOGUE = 4; +- It MUST be capable of receiving and sending `Envelopes` which satisfy the following protobuf schema: + + ``` proto + syntax = "proto3"; + + package aea.base.v0_1_0; + + message Envelope{ + string to = 1; + string sender = 2; + string protocol_id = 3; + bytes message = 4; + string uri = 5; + } + ``` + + The format for the above fields are as follows: + + - `to` and `sender`: an address derived from the private key of a secp256k1-compatible elliptic curve + - `protocol_id`: this must match a defined regular expression (see below) + - `message`: a bytes string representing a serialized message in the specified protocol + - `URI`: follows this syntax + +- It MUST implement each protocol's `message` with the required meta-fields: + + ``` proto + syntax = "proto3"; + + package aea.base.v0_1_0; + + import "google/protobuf/struct.proto"; + + + message DialogueMessage { + int32 message_id = 1; + string dialogue_starter_reference = 2; + string dialogue_responder_reference = 3; + int32 target = 4; + bytes content = 5; + } + + message Message { + oneof message { + google.protobuf.Struct body = 1; + DialogueMessage dialogue_message = 2; + } + } + + message Envelope{ + string to = 1; + string sender = 2; + string protocol_id = 3; + bytes message = 4; + string uri = 5; + } + ``` + + where `content` is replaced with the protocol specific content (see here for details). + +- It MUST implement protocols according to their specification (see here for details). + +- It SHOULD implement the `fetchai/default:1.1.7` protocol which satisfies the following protobuf schema: + + ``` proto + syntax = "proto3"; + + package aea.fetchai.default.v1_0_0; + + message DefaultMessage{ + + // Custom Types + message ErrorCode{ + enum ErrorCodeEnum { + UNSUPPORTED_PROTOCOL = 0; + DECODING_ERROR = 1; + INVALID_MESSAGE = 2; + UNSUPPORTED_SKILL = 3; + INVALID_DIALOGUE = 4; + } + ErrorCodeEnum error_code = 1; + } + + + // Performatives and contents + message Bytes_Performative{ + bytes content = 1; + } + + message Error_Performative{ + ErrorCode error_code = 1; + string error_msg = 2; + map error_data = 3; + } + + message End_Performative{ + } + + + oneof performative{ + Bytes_Performative bytes = 5; + End_Performative end = 6; + Error_Performative error = 7; + } } - ErrorCodeEnum error_code = 1; - } - - - // Performatives and contents - message Bytes_Performative{ - bytes content = 1; - } - - message Error_Performative{ - ErrorCode error_code = 1; - string error_msg = 2; - map error_data = 3; - } - - message End_Performative{ - } - - - oneof performative{ - Bytes_Performative bytes = 5; - End_Performative end = 6; - Error_Performative error = 7; - } -} -``` -
  • -
  • The protocol id MUST match the following regular expression: ^([a-zA-Z_][a-zA-Z0-9_]{0,127})/([a-zA-Z_][a-zA-Z0-9_]{0,127})(:((any|latest|((0|[1-9]\d*))\.((0|[1-9]\d*))\.((0|[1-9]\d*))(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)))?$
  • -
  • It is recommended that it processes Envelopes asynchronously. Note, the specification regarding the processing of messages does not impose any particular implementation, and the AEA can be designed to process envelopes either synchronously and asynchronously. However, asynchronous message handling enables the agent to be more responsive and scalable in maintaining many concurrent dialogues with its peers. -
  • -
  • It MUST have an identity in the form of, at a minimum, an address derived from a public key and its associated private key (where the elliptic curve must be of type SECP256k1). -
  • -
  • It SHOULD implement handling of errors using the fetchai/default:1.1.6 protocol. The protobuf schema is given above. -
  • -
  • It MUST implement the following principles when handling messages: -
      -
    • It MUST ALWAYS handle incoming envelopes/messages and NEVER raise an exception when decoding and validating the message. This ensures another AEA cannot cause the agent to fail by sending a malicious envelope/message.
    • -
    • It MUST NEVER handle outgoing messages and ALWAYS raise an exception when validating the message. An exception implies that the handler is resolving a bug in the implementation.
    • -
    -
  • -
-
-

Note

-

Additional constraints will be added soon!

-
+ ``` + +- The protocol id MUST match the following regular expression: `^([a-zA-Z_][a-zA-Z0-9_]{0,127})/([a-zA-Z_][a-zA-Z0-9_]{0,127})(:((any|latest|((0|[1-9]\d*))\.((0|[1-9]\d*))\.((0|[1-9]\d*))(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)))?$` +- It is recommended that it processes `Envelopes` asynchronously. Note, the specification regarding the processing of messages does not impose any particular implementation, and the AEA can be designed to process envelopes either synchronously and asynchronously. However, asynchronous message handling enables the agent to be more responsive and scalable in maintaining many concurrent dialogues with its peers. +- It MUST have an identity in the form of, at a minimum, an address derived from a public key and its associated private key (where the elliptic curve must be of type SECP256k1). +- It SHOULD implement handling of errors using the `fetchai/default:1.1.7` protocol. The protobuf schema is given above. +- It MUST implement the following principles when handling messages: + - It MUST ALWAYS handle incoming envelopes/messages and NEVER raise an exception when decoding and validating the message. This ensures another AEA cannot cause the agent to fail by sending a malicious envelope/message. + - It MUST NEVER handle outgoing messages and ALWAYS raise an exception when validating the message. An exception implies that the handler is resolving a bug in the implementation. + +!!! note + Additional constraints will be added soon! diff --git a/docs/ledger-integration.md b/docs/ledger-integration.md index 29f56b5270..0bc97eb3de 100644 --- a/docs/ledger-integration.md +++ b/docs/ledger-integration.md @@ -1,6 +1,8 @@ +# Ledger & Crypto APIs + In this section, we show you how to integrate the AEA with the Fetch.ai and third-party ledgers. -## Ledger support +## Ledger Support For a ledger to be considered _supported_ in the framework, three abstract base classes need to be implemented: @@ -10,10 +12,10 @@ For a ledger to be considered _supported_ in the framework, three abstract base These three classes have their own registries, which allow the developer to import the relevant object where needed. -## Ledger plug-in architecture +## Ledger Plug-in Architecture -The AEA framework provides a plug-in mechanism to support ledger functionalities in -an easily extendible way. At import time, the framework will load +The AEA framework provides a plug-in mechanism to support ledger functionalities in +an easily extendable way. At import time, the framework will load all the crypto plug-ins available in the current Python environment. A _crypto plug-in_ is a Python package which declares some specific @@ -27,7 +29,7 @@ In particular, there are three types of entry points the framework looks up: This is an example of `setup.py` script for a ledger plug-in `aea-ledger-myledger`: -```python +``` python # sample ./setup.py file from setuptools import setup @@ -55,7 +57,7 @@ and the importable package name is `aea_ledger_myledger`. You can search for AEA ledger plug-ins on PyPI: https://pypi.org/search/?q=aea-ledger -## Maintained plug-ins +## Maintained Plug-ins At the moment, the framework natively supports the following three ledgers: @@ -65,7 +67,6 @@ At the moment, the framework natively supports the following three ledgers: However, support for additional ledgers can be added to the framework at runtime. - ## Examples - Examples of how to interact with the crypto registry: @@ -128,27 +129,25 @@ The framework wraps all `LedgerApi` classes and exposes them in the https://explore-dorado.fetch.ai | -| Token Faucet | Use block explorer | +| Token Faucet | Use block explorer | You can access more details on docs section. -The configurations can be specified for the `fetchai/ledger:0.21.4` connection. +The configurations can be specified for the `fetchai/ledger:0.21.5` connection. -## CosmWasm supporting chains +## CosmWasm Supporting Chains The Fetch.ai networks use CosmWasm for smart contract support. - diff --git a/docs/limits.md b/docs/limits.md index 7321449281..b3efc7ee2c 100644 --- a/docs/limits.md +++ b/docs/limits.md @@ -1,8 +1,10 @@ +# Limitations of v1 + This document describes some of the limitations of `v1` of the AEA framework and tradeoffs made in its design. -### Rejected ideas: +## Rejected Ideas -#### Handlers implemented as behaviours: +### Handlers Implemented as Behaviours Handlers can be considered a special cases of a "behaviour that listens for specific events to happen". @@ -10,24 +12,21 @@ One could implement `Handler` classes in terms of `Behaviours`, after having imp This was rejected in favour of a clear separation of concerns, and to avoid purely reactive (handlers) and proactive (behaviours) components to be conflated into one concept. The proposal would also add complexity to behaviour development. - -#### Multiple versions of the same package +### Multiple Versions of the Same Package The framework does not allow for the usage of multiple versions of the same package in a given project. Although one could re-engineer the project to allow for this, it does introduce significant additional complexities. Furthermore, Python modules are by design only allowed to exist as one version in a given process. Hence, it seems sensible to maintain this approach in the AEA. +## Potential Extensions, Considered yet not Decided -### Potential extensions, considered yet not decided: - - -#### Alternative skill design +### Alternative Skill Design -For very simple skills, the splitting of skills into `Behaviour`, `Handler`, `Model` and `Task` classes can add unnecessary complexity to the framework and a counter-intuitive responsibility split. The splitting also implies the framework needs to introduce the `SkillContext` object to allow for access to data across the skill. Furthermore, the framework requires implementing all functionality in `SkillComponent` classes `Handler`, `Behaviour` or `Model`. This approach is consistent and transparent, however it creates a lot of boiler plate code for simple skills. +For very simple skills, the splitting of skills into `Behaviour`, `Handler`, `Model` and `Task` classes can add unnecessary complexity to the framework and a counter-intuitive responsibility split. The splitting also implies the framework needs to introduce the `SkillContext` object to allow for access to data across the skill. Furthermore, the framework requires implementing all functionality in `SkillComponent` classes `Handler`, `Behaviour` or `Model`. This approach is consistent and transparent, however it creates a lot of boilerplate code for simple skills. Hence, for some use cases it would be useful to have a single `Skill` class with abstract methods `setup`, `act`, `handle` and `teardown`. Then the developer can decide how to split up their code. -``` +``` python class SkillTemplate(SimpleSkill): protocol_ids: Optional[List[PublicId]] = None @@ -48,16 +47,15 @@ class SkillTemplate(SimpleSkill): Alternatively, we could use decorators to let a developer define whether a function is part of a handler or behaviour. That way, a single file with a number of functions could implement a skill. (Behind the scenes this would utilise a number of virtual `Behaviour` and `Handler` classes provided by the framework). -The downside of this approach is that it does not advocate for much modularity on the skill level. Part of the role of a framework is to propose a common way to do things. The above approach can cause for a larger degree of heterogeneity in the skill design which makes it harder for developers to understand each others' code. +The downside of this approach is that it does not advocate for much modularity on the skill level. Part of the role of a framework is to propose a common way to do things. The above approach can cause for a larger degree of heterogeneity in the skill design which makes it harder for developers to understand each other's code. The separation between all four base classes does exist both in convention *and* at the code level. Handlers deal with skill-external events (messages), behaviours deal with scheduled events (ticks), models represent data and tasks are used to manage long-running business logic. By adopting strong convention around skill development we allow for the framework to take a more active role in providing guarantees. E.g. handlers' and behaviours' execution can be limited to avoid them being blocking, models can be persisted and recreated, tasks can be executed with different task backends. The opinionated approach is thought to allow for better scaling. +### Further Modularity for Skill Level Code -#### Further modularity for skill level code - -Currently we have three levels of modularity: +Currently, we have three levels of modularity: - PyPI packages - framework packages: protocols, contracts, connections and skills @@ -65,11 +63,11 @@ Currently we have three levels of modularity: We could consider having a fourth level: common behaviours, handlers, models exposed as modules which can then speed up skill development. - -#### "promise" pattern: +### "promise" Pattern Given the asynchronous nature of the framework, it is often hard to implement reactions to specific messages, without making a "fat" handler. Take the example of a handler for a certain type of message `A` for a certain protocol `p`. The handler for protocol `p` would look something like this: -``` + +``` python class PHandler: ... def handle(msg): @@ -78,7 +76,8 @@ def handle(msg): ``` However, it could be helpful to overwrite this handler reaction with another callback (e.g. consider this in context): -``` + +``` python # callable that handles the reply def my_callback(msg): # handle reply @@ -88,15 +87,13 @@ self.context.outbox.put_message(message, handler_func=my_callback, failure_func= This feature would introduce additional complexity for the framework to correctly wire up the callbacks and messages with the dialogues. - -#### CLI using standard lib +### CLI using Standard Lib Removing the click dependency from the CLI would further reduce the dependencies in the AEA framework which is overall desirable. +### Metadata vs Configurations -#### Meta data vs configurations - -The current approach uses `yaml` files to specify both meta data and component configuration. It would be desirable to introduce the following separation: +The current approach uses `yaml` files to specify both metadata and component configuration. It would be desirable to introduce the following separation: - package metadata - package default developer configuration @@ -104,39 +101,35 @@ The current approach uses `yaml` files to specify both meta data and component c A user can only configure a subset of the configuration. The developer should be able to define these constraints for the user. Similarly, a developer cannot modify all fields in a package, some of them are determined by the framework. - -#### Configuring agent goal setup +### Configuring Agent Goal Setup By default, the agent's goals are implicitly defined by its skills and the configurations thereof. This is because the default decision maker signs every message and transaction presented to it. It is already possible to design a custom decision maker. However, more work needs to be done to understand how to improve the usability and configuration of the decision maker. In this context different types of decision makers can be implemented for the developer/user. - -#### Connection status monitoring +### Connection Status Monitoring Currently, connections are responsible for managing their own status after they have been "connected" by the `Multiplexer`. Developers writing connections must take care to properly set its connection status at all times and manage any disconnection. It would potentially be desirable to offer different policies to deal with connection problems on the multiplexer level: - disconnect one, keep others alive - disconnect all -- try reconnect indefinitely +- try to reconnect indefinitely - -#### Agent snapshots on teardown or error +### Agent Snapshots on Teardown or Error Currently, the developer must implement snapshots on the component level. It would be desirable if the framework offered more help to persist the agent state on teardown or error. - -#### Dialogues management +### Dialogues Management The current implementation of Dialogues is verbose. Developers often need to subclass `Dialogues` and `Dialogue` classes. More effort can be made to simplify and streamline dialogues management. -#### Instantiate multiple instances of the same class of `SkillComponent` +### Instantiate Multiple Instances of the Same Class of `SkillComponent` Currently, configuration and metadata of a package are conflated making it not straightforward to run one package component with multiple sets of configuration. It could be desirable to configure an agent to run a given package with multiple different configurations. -This feature could be problematic with respect to component to component messaging which currently relies on component ids, which are bound to the package and not its instance. +This feature could be problematic with respect to component-to-component messaging which currently relies on component ids, which are bound to the package and not its instance. -#### Containerized Agents +### Containerized Agents Agent management, especially when many of them live on the same host, can be cumbersome. The framework should provide more utilities for these large-scale use cases. But a proper isolation of the agent environment is something that helps also simple use cases. @@ -144,7 +137,7 @@ A new software architecture, somehow inspired to the Docker system. The CLI only Users and developers would potentially like to run many AEAs of different versions and with differences in the versions of their dependencies. It is not possible to import different versions of the same Python (PyPI) package in the same process in a clean way. However, in different processes this is trivial with virtual environments. It would be desirable to consider this in the context of a container solution for agents. -#### Dependency light version of the AEA framework +### Dependency Light Version of the AEA Framework The `v1` of the Python AEA implementation makes every effort to minimise the amount of third-party dependencies. However, some dependencies remain to lower development time. @@ -152,22 +145,22 @@ It would be desirable to further reduce the dependencies, and potentially have a This could be taken further, and a reduced spec version for micropython could be designed. -#### Compiled AEA +### Compiled AEA Python is not a compiled language. However, various projects attempt this, e.g. Nuitka and it would be desirable to explore how useful and practical this would be in the context of AEA. -#### DID integration +### DID Integration It would be great to integrate DID in the framework design, specifically identification of packages (most urgently protocols). Other projects and standards worth reviewing in the context (in particular with respect to identity): -- ERC 725: Ethereum Identity Standard and here. +- ERC 725: Ethereum Identity Standard and here. - ERC 735: Claim Holder -#### Optimise protocol schemas and messages +### Optimise Protocol Schemas and Messages The focus of protocol development was on extensibility and compatibility, not on optimisation. For instance, the dialogue references use inefficient string representations. -#### Constraints on primitive types in protocols +### Constraints on Primitive Types in Protocols The protocol generator currently does not support custom constraints. The framework could add support for custom constraints for the protocol generator and specification. @@ -192,8 +185,7 @@ This would automatically enable support for signed/unsigned `int` and `float`. T Currently, the developer has to specify a custom type to implement any constraints on primitive types. - -#### Subprotocols & multi-party interactions +### Sub-protocols & Multi-Party Interactions Protocols can be allowed to depend on each other. Similarly, protocols might have multiple parties. @@ -201,13 +193,11 @@ Furthermore, a turn-taking function that specifies who's turn it is at any given Then the current `fipa` setup is a specific case of turn-taking where the turn shifts after a player sends a single move (unique-reply). But generally, it does not have to be like this. Players could be allowed to send multiple messages until the turn shifts, or until they send specific speech-acts (multiple-replies). - -#### Timeouts in protocols +### Timeouts in Protocols Protocols currently do not implement the concept of timeouts. We leave it to the skill developer to implement any time-specific protocol rules. - -#### Framework internal messages +### Framework Internal Messages The activation/deactivation of skills and addition/removal of components is implemented in a "passive" way - the skill posts a request in its skill context queue (in the case of new behaviours), or it just sets a flag (in case of activation/deactivation of skills). @@ -215,11 +205,11 @@ One could consider that a skill can send requests to the framework, via the inte This is a further small but meaningful step toward an actor-based model for agent internals. -#### Ledger transaction management +### Ledger Transaction Management Currently, the framework does not manage any aspect of submitting multiple transactions to the ledgers. This responsibility is left to skills. Additionally, the ledger APIs/contract APIs take the ledger as a reference to determine the nonce for a transaction. If a new transaction is sent before a previous transaction has been processed then the nonce will not be incremented correctly for the second transaction. This can lead to submissions of multiple transactions with the same nonce, and therefore failure of subsequent transactions. -A naive approach would involve manually incrementing the nonce and then submitting transactions into the pool with the correct nonce for eventual inclusion. The problem with this approach is that any failure of a transaction will cause non of the subsequent transactions to be processed for some ledgers (https://ethereum.stackexchange.com/questions/2808/what-happens-when-a-transaction-nonce-is-too-high). To recover from a transaction failure not only the failed transaction would need to be handled, but potentially also all subsequent transactions. It is easy to see that logic required to recover from a transaction failure early in a sequence can be arbitrarily complex (involving potentially new negotiations between agents, new signatures having to be generated etc.). +A naive approach would involve manually incrementing the nonce and then submitting transactions into the pool with the correct nonce for eventual inclusion. The problem with this approach is that any failure of a transaction will cause none of the subsequent transactions to be processed for some ledgers (). To recover from a transaction failure not only the failed transaction would need to be handled, but potentially also all subsequent transactions. It is easy to see that logic required to recover from a transaction failure early in a sequence can be arbitrarily complex (involving potentially new negotiations between agents, new signatures having to be generated etc.). A further problem with the naive approach is that it (imperfectly) replicates the ledger state (with respect to (subset of state of) a specific account). @@ -229,32 +219,26 @@ This approach is currently used and implemented across all the reference skills. Related, the topic of latency in transactions. State channels provide a solution. E.g. Perun. There could also be an interesting overlap with our protocols here. - -#### Unsolved problems in `Multiplexer` - `AgentLoop` interplay +### Unsolved Problems in `Multiplexer` - `AgentLoop` Interplay Problem 1: connection generates too many messages in a short amount of time, that are not consumed by the multiplexer Solution: Can be solved by slowing down connections receive method called, controlled by the inbox messages amount Side effects: Most of the connections should have an internal queue because there is no synchronization between internal logic and multiplexer connection `receive` calls. - Problem 2: the send method can take a long time (because send retries logic in connection) -Solution: Currently, we apply timeouts on send. Other solutions could be considered, like parallelisation. - +Solution: Currently, we apply timeouts on send. Other solutions could be considered, like parallelization. Problem 3: too many messages are produced by a skill. Solution: Raise an exception on outbox is full or slow down agent loop? - ## ACN -### Agent mobility on ACN +### Agent Mobility on ACN If a peer-client or full client switches peer, then the DHT is not updated properly at the moment under certain conditions. -### Mailbox connection +### Mailbox Connection The two available connections `p2p_libp2p` and `p2p_libp2p_client` imply that the agent is continuously connected and therefore must have uninterrupted network access and the resources to maintain a connection. For more lightweight implementations, a mailbox connection is desirable, as outlined in the ACN documentation. - - diff --git a/docs/logging.md b/docs/logging.md index 660b8d21a6..f266349cbd 100644 --- a/docs/logging.md +++ b/docs/logging.md @@ -1,9 +1,10 @@ +# Logging + The AEA framework supports flexible logging capabilities with the standard Python logging library. In this tutorial, we configure logging for an AEA. -First of all, create your AEA. - +First, create your AEA. ``` bash aea create my_aea @@ -22,13 +23,13 @@ aea_version: 0.6.0 fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/stub:0.21.2 +- fetchai/stub:0.21.3 contracts: [] protocols: -- fetchai/default:1.1.6 +- fetchai/default:1.1.7 skills: -- fetchai/error:0.18.5 -default_connection: fetchai/stub:0.21.2 +- fetchai/error:0.18.6 +default_connection: fetchai/stub:0.21.3 default_ledger: fetchai required_ledgers: - fetchai @@ -75,8 +76,7 @@ logging_config: This configuration will set up a logger with name `aea`. It prints both on console and on file with a format specified by the `standard` formatter. - -## Streaming to browser +## Streaming to Browser It is possible to configure the AEA to stream logs to a browser. @@ -167,5 +167,3 @@ if __name__ == "__main__": Save the script in a file called `server.py`, install flask with `pip install flask` and run the server with `python server.py`. Third, run your AEA and visit `localhost:5000` in your browser. - -
diff --git a/docs/message-routing.md b/docs/message-routing.md index c32f886417..a77dcf45a7 100644 --- a/docs/message-routing.md +++ b/docs/message-routing.md @@ -1,3 +1,4 @@ +# Message Routing Message routing can be split up into the routing of incoming and outgoing `Messages`. @@ -11,14 +12,11 @@ It is important to keep in mind that interacti - the `AEA` tries to decode the message; errors are handled by the `ErrorHandler` - `Messages` are dispatched based on two rules: - 1. checks if `to` field can be interpreted as `skill_id`, if so uses that together with the `protocol_id` to dispatch to the protocol's `Handler` in the specified `Skill`, else - 2. uses the `protocol_id` to dispatch to the protocol's `Handler` in all skills supporting the protocol. + 1. checks if `to` field can be interpreted as `skill_id`, if so uses that together with the `protocol_id` to dispatch to the protocol's `Handler` in the specified `Skill`, else + 2. uses the `protocol_id` to dispatch to the protocol's `Handler` in all skills supporting the protocol. -
-

Note

-

For agent-to-agent communication it is advisable to have a single skill implement a given protocol. Skills can then forward the messages via skill-to-skill communication to other skills where required. Otherwise, received agent-to-agent messages will be forwarded to all skills implementing a handler for the specified protocol and the developer needs to take care to handle them appropriately (e.g. avoid multiple replies to a single message). -

-
+!!! note + For agent-to-agent communication it is advisable to have a single skill implement a given protocol. Skills can then forward the messages via skill-to-skill communication to other skills where required. Otherwise, received agent-to-agent messages will be forwarded to all skills implementing a handler for the specified protocol and the developer needs to take care to handle them appropriately (e.g. avoid multiple replies to a single message). ## Outgoing `Messages` @@ -26,12 +24,12 @@ It is important to keep in mind that
interacti - `OutBox` constructs an `Envelope` from the `Message` - `Multiplexer` assigns messages to relevant `Connection` based on the following rules: - 1. Component to component messages are routed by their `component_id` - 2. Agent to agent messages are routed following four rules: - 1. checks if `EnvelopeContext` exists and specifies a `Connection`, if so uses that else - 2. checks which connection handled the last message from `sender`, if present uses that else - 3. checks if default routing is specified for the `protocol_id` referenced in the `Envelope`, if so uses that else - 4. sends to default `Connection`. + 1. Component to component messages are routed by their `component_id` + 2. Agent to agent messages are routed following four rules: + 1. checks if `EnvelopeContext` exists and specifies a `Connection`, if so uses that else + 2. checks which connection handled the last message from `sender`, if present uses that else + 3. checks if default routing is specified for the `protocol_id` referenced in the `Envelope`, if so uses that else + 4. sends to default `Connection`. - `Connections` can process `Envelopes` directly or encode them for transport to another agent. diff --git a/docs/ml-skills.md b/docs/ml-skills.md index 43e7eec21a..1968c459a4 100644 --- a/docs/ml-skills.md +++ b/docs/ml-skills.md @@ -1,24 +1,26 @@ -The AEA ML (machine learning) skills demonstrate an interaction between two AEAs, one purchasing data from the other and training a machine learning model with it. +# ML Skills + +The AEA ML (machine learning) skills demonstrate an interaction between two AEAs, one purchasing data from the other and training a machine learning model with it. There are two types of AEAs: -* The `ml_data_provider` which sells training data. -* The `ml_model_trainer` which purchases data and trains a model +- The `ml_data_provider` which sells training data. +- The `ml_model_trainer` which purchases data and trains a model ## Discussion -This demo aims to demonstrate the integration of a simple AEA with machine learning using the AEA framework. The `ml_data_provider` AEA provides some sample data and delivers to the client upon payment. +This demo aims to demonstrate the integration of a simple AEA with machine learning using the AEA framework. The `ml_data_provider` AEA provides some sample data and delivers to the client upon payment. Once the client receives the data, it trains a model. This process can be found in `tasks.py`. This demo does not utilize a smart contract. As a result, the ledger interaction is only for completing a transaction. Since the AEA framework enables using third-party libraries from PyPI, we can directly reference any external dependencies. -The `aea install` command installs all dependencies an AEA needs that is listed in one of its skills' YAML file. +The `aea install` command installs all dependencies an AEA needs that is listed in one of its skills' YAML file. ## Communication This diagram shows the communication between the two AEAs. -
+``` mermaid sequenceDiagram participant ml_model_trainer participant ml_data_provider @@ -47,20 +49,18 @@ This diagram shows the communication between the two AEAs. deactivate ml_data_provider deactivate Search deactivate Ledger +``` -
-
- -## Option 1: AEA Manager approach +## Option 1: AEA Manager Approach -Follow this approach when using the AEA Manager Desktop app. Otherwise, skip and follow the CLI approach below. +Follow this approach when using the AEA Manager Desktop app. Otherwise, skip and follow the CLI approach below. -### Preparation instructions +### Preparation Instructions -* Install the
AEA Manager. -* Install Tensorflow +- Install the AEA Manager. +- Install Tensorflow -### Demo instructions +### Demo Instructions The following steps assume you have launched the AEA Manager Desktop app. @@ -73,153 +73,153 @@ The following steps assume you have launched the AEA Manager Desktop app. 4. Run the `ml_data_provider` AEA. Navigate to its logs and copy the multiaddress displayed. 5. Navigate to the settings of the `ml_model_trainer` and under `components > connection >` `fetchai/p2p_libp2p:0.22.0` update as follows (make sure to replace the placeholder with the multiaddress): -``` bash -{ - "delegate_uri": "127.0.0.1:11001", - "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], - "local_uri": "127.0.0.1:9001", - "log_file": "libp2p_node.log", - "public_uri": "127.0.0.1:9001" -} -``` + + ``` bash + { + "delegate_uri": "127.0.0.1:11001", + "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], + "local_uri": "127.0.0.1:9001", + "log_file": "libp2p_node.log", + "public_uri": "127.0.0.1:9001" + } + ``` 6. Run the `ml_model_trainer`. -In the AEA's logs, you should see the agents trading successfully, and the training agent training its machine learning model using the data purchased. +In the AEA's logs, you should see the agents trading successfully, and the training agent training its machine learning model using the data purchased. The trainer keeps purchasing data and training its model until stopped. -
-## Option 2: CLI approach +## Option 2: CLI Approach Follow this approach when using the `aea` CLI. -### Preparation instructions +### Preparation Instructions #### Dependencies -* Follow the Preliminaries and Installation sections from the AEA quick start. -* Install Tensorflow +- Follow the Preliminaries and Installation sections from the AEA quick start. +- Install Tensorflow -### Demo instructions +### Demo Instructions -#### Create data provider AEA +#### Create Data Provider AEA First, fetch the data provider AEA: -``` bash -aea fetch fetchai/ml_data_provider:0.32.4 -cd ml_data_provider -aea install -aea build -``` -
Alternatively, create from scratch. -

- -The following steps create the data provider from scratch: ``` bash -aea create ml_data_provider +aea fetch fetchai/ml_data_provider:0.32.5 cd ml_data_provider -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/ml_data_provider:0.27.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' aea install aea build ``` -

-
- -#### Create model trainer AEA +??? note "Alternatively, create from scratch:" + The following steps create the data provider from scratch: + + ``` bash + aea create ml_data_provider + cd ml_data_provider + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/ml_data_provider:0.27.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea install + aea build + ``` + +#### Create Model Trainer AEA Then, fetch the model trainer AEA: -``` bash -aea fetch fetchai/ml_model_trainer:0.33.4 -cd ml_model_trainer -aea install -aea build -``` - -
Alternatively, create from scratch. -

-The following steps create the model trainer from scratch: ``` bash -aea create ml_model_trainer +aea fetch fetchai/ml_model_trainer:0.33.5 cd ml_model_trainer -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/ml_train:0.29.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' aea install aea build ``` - -

-
- -#### Add keys for the data provider AEA +??? note "Alternatively, create from scratch:" + The following steps create the model trainer from scratch: + + ``` bash + aea create ml_model_trainer + cd ml_model_trainer + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/ml_train:0.29.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea install + aea build + ``` + +#### Add Keys for the Data Provider AEA First, create the private key for the data provider AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -#### Add keys and generate wealth for the model trainer AEA +#### Add Keys and Generate Wealth for the Model Trainer AEA The model trainer needs to have some wealth to purchase the data from the data provider. First, create the private key for the model trainer AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Then, create some wealth for your model trainer based on the network you want to transact with. On the Fetch.ai `Dorado` network: + ``` bash aea generate-wealth fetchai ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` @@ -234,28 +234,11 @@ First, run the data provider AEA: aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` to retrieve the address.) +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the ML data provider. - Then, in the ML model trainer, run this command (replace `SOME_ADDRESS` with the correct value as described above): + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -266,24 +249,24 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` -This allows the model trainer to connect to the same local agent communication network as the data provider. +This allows the model trainer to connect to the same local agent communication network as the data provider. Then run the model trainer AEA: + ``` bash aea run ``` -You can see that the AEAs find each other, negotiate and eventually trade. After the trade, the model trainer AEA trains its ML model using the data it has purchased. +You can see that the AEAs find each other, negotiate and eventually trade. After the trade, the model trainer AEA trains its ML model using the data it has purchased. This AEA keeps purchasing data and training its model until stopped. #### Cleaning up When you're finished, delete your AEAs: + ``` bash cd .. aea delete ml_data_provider aea delete ml_model_trainer ``` - -
\ No newline at end of file diff --git a/docs/modes.md b/docs/modes.md index cc142afb3d..cc3198bb42 100644 --- a/docs/modes.md +++ b/docs/modes.md @@ -1,3 +1,4 @@ +# Modes of Running an AEA We can run an AEA in multiple modes thanks to the configurable design of the framework. diff --git a/docs/multi-agent-manager.md b/docs/multi-agent-manager.md index c645a66f3e..6d142a6913 100644 --- a/docs/multi-agent-manager.md +++ b/docs/multi-agent-manager.md @@ -1,3 +1,4 @@ +# Multi Agent Manager The `MultiAgentManager` allows managing multiple agent projects programmatically. @@ -16,33 +17,33 @@ manager = MultiAgentManager(WORKING_DIR) manager.start_manager() ``` -## Adding projects +## Adding Projects We first add a couple of finished AEA project: ``` python from aea.configurations.base import PublicId -weather_station_id = PublicId.from_str("fetchai/weather_station:0.32.4") -weather_client_id = PublicId.from_str("fetchai/weather_client:0.33.4") +weather_station_id = PublicId.from_str("fetchai/weather_station:0.32.5") +weather_client_id = PublicId.from_str("fetchai/weather_client:0.33.5") manager.add_project(weather_station_id) manager.add_project(weather_client_id) weather_station_name = weather_station_id.name weather_client_name = weather_client_id.name ``` -## Adding agent instances - +## Adding Agent Instances Add the agent instances + ``` python agent_overrides = { "private_key_paths": {"fetchai": "fetchai_private_key.txt"}, "connection_private_key_paths": {"fetchai": "fetchai_connection_private_key.txt"} } -p2p_public_id = PublicId.from_str("fetchai/p2p_libp2p:0.27.4") -soef_public_id = PublicId.from_str("fetchai/soef:0.27.5") +p2p_public_id = PublicId.from_str("fetchai/p2p_libp2p:0.27.5") +soef_public_id = PublicId.from_str("fetchai/soef:0.27.6") component_overrides = [{ **p2p_public_id.json, @@ -98,8 +99,8 @@ component_overrides = [{ manager.add_agent(weather_client_id, component_overrides=component_overrides, agent_overrides=agent_overrides) ``` - Save the following private keys in the respective files. + ``` python FET_PRIVATE_KEY_STATION = b"72d3149f5689f0749eaec5ebf6dba5deeb1e89b93ae1c58c71fd43dfaa231e87" FET_PRIVATE_KEY_PATH_STATION = Path(manager.data_dir, weather_station_name, "fetchai_private_key.txt").absolute() @@ -118,7 +119,7 @@ FET_CONNECTION_PRIVATE_KEY_PATH_CLIENT = Path(manager.data_dir, weather_client_n FET_CONNECTION_PRIVATE_KEY_PATH_CLIENT.write_bytes(FET_CONNECTION_PRIVATE_KEY_CLIENT) ``` -## Running the agents: +## Running the Agents ``` python import time @@ -133,7 +134,7 @@ manager.start_agent(weather_client_id.name) time.sleep(5.0) ``` -## Stopping the agents: +## Stopping the Agents ``` python manager.stop_all_agents() @@ -145,6 +146,6 @@ manager.stop_all_agents() manager.stop_manager() ``` -# Limitations +## Limitations The `MultiAgentManager` can only be used with compatible package versions, in particular the same package (with respect to author and name) cannot be used in different versions. If you want to run multiple agents with differing versions of the same package then use the `aea launch` command in the multi-processing mode, or simply launch each agent individually with `aea run`. diff --git a/docs/multiplexer-standalone.md b/docs/multiplexer-standalone.md index b66adb12ae..0f46adaadb 100644 --- a/docs/multiplexer-standalone.md +++ b/docs/multiplexer-standalone.md @@ -1,6 +1,9 @@ +# Use Multiplexer Stand-Alone + The `Multiplexer` can be used stand-alone. This way a developer can utilise the protocols and connections independent of the `Agent` or `AEA` classes. -First, import the Python and application specific libraries and set the static variables. (Get the packages directory from the AEA repository `svn export https://github.com/fetchai/agents-aea.git/trunk/packages`.) +First, import the Python and application specific libraries and set the static variables. (Get the `packages` directory from the AEA repository `svn export https://github.com/fetchai/agents-aea.git/trunk/packages`.) + ``` python import os import time @@ -49,7 +52,7 @@ A `Multiplexer` only needs a list of connections. The `StubConnection` is a simp ## Start the `Multiplexer` -We can run a multiplexer by calling, `connect()` which starts the receive and sending loops. We run the multiplexer from a different thread so that we can still use the main thread to pass it messages. +We can run a multiplexer by calling, `connect()` which starts the 'receive' and 'send' loops. We run the multiplexer from a different thread so that we can still use the main thread to pass it messages. ``` python try: @@ -66,8 +69,10 @@ We can run a multiplexer by calling, `connect()` which starts the receive and se raise Exception("Not connected") ``` -## Send and receive an envelope +## Send and Receive an Envelope + We use the input and output text files to send an envelope to our agent and receive a response + ``` python # Create a message inside an envelope and get the stub connection to pass it into the multiplexer message_text = ( @@ -112,7 +117,9 @@ We use the input and output text files to send an envelope to our agent and rece ``` ## Shutdown -Finally stop our multiplexer and wait for it to finish + +Finally, stop our multiplexer and wait for it to finish + ``` python finally: # Shut down the multiplexer @@ -120,121 +127,117 @@ Finally stop our multiplexer and wait for it to finish t.join() ``` -## Your turn +## Your Turn Now it is your turn to develop a simple use case which utilises the `Multiplexer` to send and receive Envelopes. -## Entire code listing -If you just want to copy and paste the entire script in you can find it here: - -
Click here to see full listing -

- -``` python -import os -import time -from copy import copy -from threading import Thread -from typing import Optional - -from aea.configurations.base import ConnectionConfig -from aea.helpers.file_io import write_with_lock -from aea.identity.base import Identity -from aea.mail.base import Envelope -from aea.multiplexer import Multiplexer - -from packages.fetchai.connections.stub.connection import StubConnection -from packages.fetchai.protocols.default.message import DefaultMessage - - -INPUT_FILE = "input.txt" -OUTPUT_FILE = "output.txt" +## Entire Code Listing +If you just want to copy and paste the entire script in you can find it here: -def run(): - """Run demo.""" - - # Ensure the input and output files do not exist initially - if os.path.isfile(INPUT_FILE): - os.remove(INPUT_FILE) - if os.path.isfile(OUTPUT_FILE): - os.remove(OUTPUT_FILE) - - # create the connection and multiplexer objects - configuration = ConnectionConfig( - input_file=INPUT_FILE, - output_file=OUTPUT_FILE, - connection_id=StubConnection.connection_id, - ) - stub_connection = StubConnection( - configuration=configuration, - data_dir=".", - identity=Identity("some_agent", "some_address", "some_public_key"), - ) - multiplexer = Multiplexer([stub_connection], protocols=[DefaultMessage]) - try: - # Set the multiplexer running in a different thread - t = Thread(target=multiplexer.connect) - t.start() - - # Wait for everything to start up - for _ in range(20): - if multiplexer.is_connected: - break - time.sleep(1) - else: - raise Exception("Not connected") - - # Create a message inside an envelope and get the stub connection to pass it into the multiplexer - message_text = ( - "multiplexer,some_agent,fetchai/default:1.0.0,\x08\x01*\x07\n\x05hello," +??? note "Click here to see full listing:" + + ``` python + import os + import time + from copy import copy + from threading import Thread + from typing import Optional + + from aea.configurations.base import ConnectionConfig + from aea.helpers.file_io import write_with_lock + from aea.identity.base import Identity + from aea.mail.base import Envelope + from aea.multiplexer import Multiplexer + + from packages.fetchai.connections.stub.connection import StubConnection + from packages.fetchai.protocols.default.message import DefaultMessage + + + INPUT_FILE = "input.txt" + OUTPUT_FILE = "output.txt" + + + def run(): + """Run demo.""" + + # Ensure the input and output files do not exist initially + if os.path.isfile(INPUT_FILE): + os.remove(INPUT_FILE) + if os.path.isfile(OUTPUT_FILE): + os.remove(OUTPUT_FILE) + + # create the connection and multiplexer objects + configuration = ConnectionConfig( + input_file=INPUT_FILE, + output_file=OUTPUT_FILE, + connection_id=StubConnection.connection_id, ) - with open(INPUT_FILE, "w") as f: - write_with_lock(f, message_text) - - # Wait for the envelope to get processed - for _ in range(20): - if not multiplexer.in_queue.empty(): - break - time.sleep(1) - else: - raise Exception("No message!") - - # get the envelope - envelope = multiplexer.get() # type: Optional[Envelope] - assert envelope is not None - - # Inspect its contents - print( - "Envelope received by Multiplexer: sender={}, to={}, protocol_specification_id={}, message={}".format( - envelope.sender, - envelope.to, - envelope.protocol_specification_id, - envelope.message, - ) + stub_connection = StubConnection( + configuration=configuration, + data_dir=".", + identity=Identity("some_agent", "some_address", "some_public_key"), ) - - # Create a mirrored response envelope - response_envelope = copy(envelope) - response_envelope.to = envelope.sender - response_envelope.sender = envelope.to - - # Send the envelope back - multiplexer.put(response_envelope) - - # Read the output envelope generated by the multiplexer - with open(OUTPUT_FILE, "r") as f: - print("Envelope received from Multiplexer: " + f.readline()) - finally: - # Shut down the multiplexer - multiplexer.disconnect() - t.join() - - -if __name__ == "__main__": - run() -``` -

-
- -
+ multiplexer = Multiplexer([stub_connection], protocols=[DefaultMessage]) + try: + # Set the multiplexer running in a different thread + t = Thread(target=multiplexer.connect) + t.start() + + # Wait for everything to start up + for _ in range(20): + if multiplexer.is_connected: + break + time.sleep(1) + else: + raise Exception("Not connected") + + # Create a message inside an envelope and get the stub connection to pass it into the multiplexer + message_text = ( + "multiplexer,some_agent,fetchai/default:1.0.0,\x08\x01*\x07\n\x05hello," + ) + with open(INPUT_FILE, "w") as f: + write_with_lock(f, message_text) + + # Wait for the envelope to get processed + for _ in range(20): + if not multiplexer.in_queue.empty(): + break + time.sleep(1) + else: + raise Exception("No message!") + + # get the envelope + envelope = multiplexer.get() # type: Optional[Envelope] + assert envelope is not None + + # Inspect its contents + print( + "Envelope received by Multiplexer: sender={}, to={}, protocol_specification_id={}, message={}".format( + envelope.sender, + envelope.to, + envelope.protocol_specification_id, + envelope.message, + ) + ) + + # Create a mirrored response envelope + response_envelope = copy(envelope) + response_envelope.to = envelope.sender + response_envelope.sender = envelope.to + + # Send the envelope back + multiplexer.put(response_envelope) + + # Read the output envelope generated by the multiplexer + with open(OUTPUT_FILE, "r") as f: + print("Envelope received from Multiplexer: " + f.readline()) + finally: + # Shut down the multiplexer + multiplexer.disconnect() + t.join() + + + if __name__ == "__main__": + run() + ``` diff --git a/docs/oef-ledger.md b/docs/oef-ledger.md index 5880a21d99..f9b6151435 100644 --- a/docs/oef-ledger.md +++ b/docs/oef-ledger.md @@ -1,3 +1,4 @@ +# Relation to OEF and Ledger The Open Economic Framework (OEF) and Decentralized Ledger Technologies (DLTs) allow AEAs to create value through their interaction with other AEAs. The following diagram illustrates the relation of AEAs to the OEF and DLTs. @@ -5,12 +6,10 @@ The Open Economic Framework (OEF) and Decentralized Ledger Technologies (DLTs) a ## Open Economic Framework (OEF) -The _Open Economic Framework_ (OEF) consists of protocols, languages and market mechanisms agents use to search and find each other, communicate with as well as trade with each other. As such the OEF defines the decentralised virtual environment that supplies and supports APIs for autonomous third-party software agents, also known as Autonomous Economic Agents (AEAs). +The _Open Economic Framework_ (OEF) consists of protocols, languages and market mechanisms agents use to search and find each other, communicate with as well as trade with each other. As such the OEF defines the decentralized virtual environment that supplies and supports APIs for autonomous third-party software agents, also known as Autonomous Economic Agents (AEAs). -
-

Note

-

The OEF is under development. Expect frequent changes. What follows is a description of the current implementation.

-
+!!! note + The OEF is under development. Expect frequent changes. What follows is a description of the current implementation. At present, the OEF's capabilities are fulfilled by three components: @@ -30,7 +29,7 @@ Agents can receive messages from other agents if they are both connected to the ### Search and Discovery -A simple OEF (sOEF) node allows agents to discover each other. In particular, agents can register themselves and the services they offer, and can search for agents who offer specific services. +A simple OEF (sOEF) node allows agents to discover each other. In particular, agents can register themselves and the services they offer, and can search for agents who offer specific services. For two agents to be able to find each other, at least one must register itself on the sOEF and the other must query the sOEF node for it. Detailed documentation is provided here. @@ -48,7 +47,7 @@ The Python implementation of the AEA Framework currently integrates with three l However, the framework makes it straightforward for any developer to add support for other ledgers. -### AEAs as second layer technology +### AEAs as Second Layer Technology The following presentation discusses how AEAs can be seen as second layer technology to ledgers. diff --git a/docs/oracle-demo.md b/docs/oracle-demo.md index d1d0d17046..264fa29d6a 100644 --- a/docs/oracle-demo.md +++ b/docs/oracle-demo.md @@ -1,3 +1,5 @@ +# Oracle Skills + This demo shows how an AEA can be used to maintain an oracle and how another AEA can request the oracle value. ## Discussion @@ -6,191 +8,189 @@ This demo shows how an AEA can be used to maintain an oracle and how another AEA This demonstration shows how to set up a simple oracle agent who deploys an oracle contract and updates the contract with a token price fetched from a public API. It also shows how to create an oracle client agent that can request the value from the oracle contract. -## Preparation instructions - +## Preparation Instructions + ### Dependencies Follow the Preliminaries and Installation sections from the AEA quick start. ## Demo -### Create the oracle AEA +### Create the Oracle AEA Fetch the AEA that will deploy and update the oracle contract. ``` bash -aea fetch fetchai/coin_price_oracle:0.17.5 -cd coin_price_oracle -aea install -``` - -
Alternatively, create from scratch (and customize the data source) -

- -Create the AEA that will deploy the contract. - -``` bash -aea create coin_price_oracle +aea fetch fetchai/coin_price_oracle:0.17.6 cd coin_price_oracle -aea add connection fetchai/http_client:0.24.5 -aea add connection fetchai/ledger:0.21.4 -aea add connection fetchai/prometheus:0.9.5 -aea add skill fetchai/advanced_data_request:0.7.5 -aea add skill fetchai/simple_oracle:0.16.4 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/ledger:0.21.4 aea install ``` -Set the URL for the data request skill: -``` bash -aea config set --type str vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.url "https://api.coingecko.com/api/v3/simple/price?ids=fetch-ai&vs_currencies=usd" -``` - -Specify the name and JSON path of the data to fetch from the API: -``` bash -aea config set --type list vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.outputs '[{"name": "price", "json_path": "fetch-ai.usd"}]' -``` - -Set the name of the oracle value in the simple oracle skill: -``` bash -aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.oracle_value_name price -``` - -Then update the agent configuration with the default routing: -``` bash -aea config set --type dict agent.default_routing \ -'{ -"fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", -"fetchai/http:1.1.6": "fetchai/http_client:0.24.5", -"fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4" -}' -``` - -Update the default ledger. -``` bash -aea config set agent.default_ledger fetchai -``` - -Set the following configuration for the oracle skill: -``` bash -aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.ledger_id fetchai -aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.update_function update_oracle_value -``` - -

-
+??? note "Alternatively, create from scratch (and customize the data source):" + Create the AEA that will deploy the contract. + + ``` bash + aea create coin_price_oracle + cd coin_price_oracle + aea add connection fetchai/http_client:0.24.6 + aea add connection fetchai/ledger:0.21.5 + aea add connection fetchai/prometheus:0.9.6 + aea add skill fetchai/advanced_data_request:0.7.6 + aea add skill fetchai/simple_oracle:0.16.5 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/ledger:0.21.5 + aea install + ``` + + Set the URL for the data request skill: + + ``` bash + aea config set --type str vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.url "https://api.coingecko.com/api/v3/simple/price?ids=fetch-ai&vs_currencies=usd" + ``` + + Specify the name and JSON path of the data to fetch from the API: + + ``` bash + aea config set --type list vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.outputs '[{"name": "price", "json_path": "fetch-ai.usd"}]' + ``` + + Set the name of the oracle value in the simple oracle skill: + + ``` bash + aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.oracle_value_name price + ``` + + Then update the agent configuration with the default routing: + + ``` bash + aea config set --type dict agent.default_routing \ + '{ + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/http:1.1.7": "fetchai/http_client:0.24.6", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5" + }' + ``` + + Update the default ledger. + + ``` bash + aea config set agent.default_ledger fetchai + ``` + + Set the following configuration for the oracle skill: + + ``` bash + aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.ledger_id fetchai + aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.update_function update_oracle_value + ``` This demo runs on the `fetchai` ledger by default. Set the following variable for use in the configuration steps: + ``` bash LEDGER_ID=fetchai ``` -
Alternatively, configure the agent to use an ethereum ledger -

+??? note "Alternatively, configure the agent to use an ethereum ledger:" -``` bash -LEDGER_ID=ethereum -``` + ``` bash + LEDGER_ID=ethereum + ``` -Update the default ledger. -``` bash -aea config set agent.default_ledger ethereum -``` + Update the default ledger. -Set the following configuration for the oracle skill: -``` bash -aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.ledger_id ethereum -aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.update_function updateOracleValue -``` + ``` bash + aea config set agent.default_ledger ethereum + ``` + + Set the following configuration for the oracle skill: -

-
+ ``` bash + aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.ledger_id ethereum + aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.update_function updateOracleValue + ``` Additionally, create the private key for the oracle AEA. Generate and add a key for use with the ledger: + ``` bash aea generate-key $LEDGER_ID --add-key ``` If running on a testnet (not including Ganache), generate some wealth for your AEA: + ``` bash aea generate-wealth $LEDGER_ID ``` -### Create the oracle client AEA +### Create the Oracle Client AEA From a new terminal (in the same top-level directory), fetch the AEA that will deploy the oracle client contract and call the function that requests the coin price from the oracle contract. ``` bash -aea fetch fetchai/coin_price_oracle_client:0.12.5 +aea fetch fetchai/coin_price_oracle_client:0.12.6 cd coin_price_oracle_client aea install ``` -
Alternatively, create from scratch -

- -Create the AEA that will deploy the contract. - -``` bash -aea create coin_price_oracle_client -cd coin_price_oracle_client -aea add connection fetchai/http_client:0.24.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/simple_oracle_client:0.13.4 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/ledger:0.21.4 -aea install -``` - -Then update the agent configuration with the default routing: -``` bash -aea config set --type dict agent.default_routing \ -'{ -"fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", -"fetchai/http:1.1.6": "fetchai/http_client:0.24.5", -"fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4" -}' -``` - -Set the default ledger: -``` bash -aea config set agent.default_ledger fetchai -``` -Set the following configuration for the oracle client skill: -``` bash -aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.ledger_id fetchai -aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.query_function query_oracle_value -``` - -

-
+??? note "Alternatively, create from scratch:" + Create the AEA that will deploy the contract. + + ``` bash + aea create coin_price_oracle_client + cd coin_price_oracle_client + aea add connection fetchai/http_client:0.24.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/simple_oracle_client:0.13.5 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/ledger:0.21.5 + aea install + ``` + + Then update the agent configuration with the default routing: + + ``` bash + aea config set --type dict agent.default_routing \ + '{ + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/http:1.1.7": "fetchai/http_client:0.24.6", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5" + }' + ``` + + Set the default ledger: + + ``` bash + aea config set agent.default_ledger fetchai + ``` + Set the following configuration for the oracle client skill: + + ``` bash + aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.ledger_id fetchai + aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.query_function query_oracle_value + ``` Similar to above, set a temporary variable `LEDGER_ID=fetchai` or `LEDGER_ID=ethereum`. -
Follow these steps to configure for an ethereum ledger -

+??? note "Follow these steps to configure for an ethereum ledger:" + Set the default ledger: -Set the default ledger: -``` bash -aea config set agent.default_ledger ethereum -``` -Set the following configuration for the oracle client skill: -``` bash -aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.ledger_id ethereum -aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.query_function queryOracleValue -``` + ``` bash + aea config set agent.default_ledger ethereum + ``` + + Set the following configuration for the oracle client skill: -

-
+ ``` bash + aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.ledger_id ethereum + aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.query_function queryOracleValue + ``` Create the private key for the oracle client AEA. Generate and add a key for use on the ledger: @@ -199,98 +199,100 @@ aea generate-key $LEDGER_ID --add-key ``` If running on a testnet (not including Ganache), generate some wealth for your AEA: + ``` bash aea generate-wealth $LEDGER_ID ``` -### Configuring a ledger +### Configuring a Ledger The oracle AEAs require either a locally running ledger node or a connection to a remote ledger. By default, they are configured to use the latest `fetchai` testnet. -
Follow these steps to configure local Ethereum test node -

- -The easiest way to test the oracle agents on an Ethereum-based ledger to set up a local test node using Ganache. This can be done by running the following docker command from the directory you started from (in a new terminal). This command will also fund the accounts of the AEAs: - -``` bash -docker run -p 8545:8545 trufflesuite/ganache-cli:latest --verbose --gasPrice=0 --gasLimit=0x1fffffffffffff --account="$(cat coin_price_oracle/ethereum_private_key.txt),1000000000000000000000" --account="$(cat coin_price_oracle_client/ethereum_private_key.txt),1000000000000000000000" -``` - -Run the following Python script (with web3 installed) from the top-level directory to deploy a mock Fetch ERC20 contract and give some test FET to the client agent. - -``` python -import json -import os -from web3 import Web3 - -FILE_DIR = os.path.dirname(os.path.realpath(__file__)) -CONTRACT_PATH = os.path.join(FILE_DIR, "coin_price_oracle_client/vendor/fetchai/contracts/fet_erc20/build/FetERC20Mock.json") -ORACLE_PRIVATE_KEY_PATH = os.path.join(FILE_DIR, "coin_price_oracle/ethereum_private_key.txt") -CLIENT_PRIVATE_KEY_PATH = os.path.join(FILE_DIR, "coin_price_oracle_client/ethereum_private_key.txt") - -# Solidity source code -with open(CONTRACT_PATH) as file: - compiled_sol = json.load(file) - -# web3.py instance -w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545')) - -# Import oracle account from private key and set to default account -with open(ORACLE_PRIVATE_KEY_PATH) as file: - private_key = file.read() -oracle_account = w3.eth.account.privateKeyToAccount(private_key) -w3.eth.defaultAccount = oracle_account.address - -# Import client account from private key -with open(CLIENT_PRIVATE_KEY_PATH) as file: - private_key = file.read() -client_account = w3.eth.account.privateKeyToAccount(private_key) - -# Deploy mock Fetch ERC20 contract -FetERC20Mock = w3.eth.contract(abi=compiled_sol['abi'], bytecode=compiled_sol['bytecode']) - -# Submit the transaction that deploys the contract -tx_hash = FetERC20Mock.constructor( - name="FetERC20Mock", - symbol="MFET", - initialSupply=int(1e23), - decimals_=18).transact() - -# Wait for the transaction to be mined, and get the transaction receipt -tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash) - -# Print out the contract address -print("FetERC20Mock contract deployed at:", tx_receipt.contractAddress) - -# Get deployed contract -fet_erc20_mock = w3.eth.contract(address=tx_receipt.contractAddress, abi=compiled_sol['abi']) - -# Transfer some test FET to oracle client account -tx_hash = fet_erc20_mock.functions.transfer(client_account.address, int(1e20)).transact() -tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash) -``` - -Set the ERC20 contract address for the oracle AEA -``` bash -aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.erc20_address $ERC20_ADDRESS -``` -as well as for the oracle client AEA -``` bash -aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.erc20_address $ERC20_ADDRESS -``` -where `ERC20_ADDRESS` is in the output of the script above. - -

-
- -### Run the oracle AEA +??? note "Follow these steps to configure local Ethereum test node:" + The easiest way to test the oracle agents on an Ethereum-based ledger to set up a local test node using Ganache. This can be done by running the following docker command from the directory you started from (in a new terminal). This command will also fund the accounts of the AEAs: + + ``` bash + docker run -p 8545:8545 trufflesuite/ganache-cli:latest --verbose --gasPrice=0 --gasLimit=0x1fffffffffffff --account="$(cat coin_price_oracle/ethereum_private_key.txt),1000000000000000000000" --account="$(cat coin_price_oracle_client/ethereum_private_key.txt),1000000000000000000000" + ``` + + Run the following Python script (with web3 installed) from the top-level directory to deploy a mock Fetch ERC20 contract and give some test FET to the client agent. + + ``` python + import json + import os + from web3 import Web3 + + FILE_DIR = os.path.dirname(os.path.realpath(__file__)) + CONTRACT_PATH = os.path.join(FILE_DIR, "coin_price_oracle_client/vendor/fetchai/contracts/fet_erc20/build/FetERC20Mock.json") + ORACLE_PRIVATE_KEY_PATH = os.path.join(FILE_DIR, "coin_price_oracle/ethereum_private_key.txt") + CLIENT_PRIVATE_KEY_PATH = os.path.join(FILE_DIR, "coin_price_oracle_client/ethereum_private_key.txt") + + # Solidity source code + with open(CONTRACT_PATH) as file: + compiled_sol = json.load(file) + + # web3.py instance + w3 = Web3(Web3.HTTPProvider('http://127.0.0.1:8545')) + + # Import oracle account from private key and set to default account + with open(ORACLE_PRIVATE_KEY_PATH) as file: + private_key = file.read() + oracle_account = w3.eth.account.privateKeyToAccount(private_key) + w3.eth.defaultAccount = oracle_account.address + + # Import client account from private key + with open(CLIENT_PRIVATE_KEY_PATH) as file: + private_key = file.read() + client_account = w3.eth.account.privateKeyToAccount(private_key) + + # Deploy mock Fetch ERC20 contract + FetERC20Mock = w3.eth.contract(abi=compiled_sol['abi'], bytecode=compiled_sol['bytecode']) + + # Submit the transaction that deploys the contract + tx_hash = FetERC20Mock.constructor( + name="FetERC20Mock", + symbol="MFET", + initialSupply=int(1e23), + decimals_=18).transact() + + # Wait for the transaction to be mined, and get the transaction receipt + tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash) + + # Print out the contract address + print("FetERC20Mock contract deployed at:", tx_receipt.contractAddress) + + # Get deployed contract + fet_erc20_mock = w3.eth.contract(address=tx_receipt.contractAddress, abi=compiled_sol['abi']) + + # Transfer some test FET to oracle client account + tx_hash = fet_erc20_mock.functions.transfer(client_account.address, int(1e20)).transact() + tx_receipt = w3.eth.waitForTransactionReceipt(tx_hash) + ``` + + Set the ERC20 contract address for the oracle AEA + + ``` bash + aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.erc20_address $ERC20_ADDRESS + ``` + + as well as for the oracle client AEA + + ``` bash + aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.erc20_address $ERC20_ADDRESS + ``` + + where `ERC20_ADDRESS` is in the output of the script above. + +### Run the Oracle AEA Run the oracle agent. This will deploy a contract to the testnet, grant oracle permissions to the AEA's wallet address, and periodically update the contract with the latest price of FET (or whichever coin was specified). + ``` bash aea run ``` After a few moments, you should see the following notices in the logs: + ``` bash info: [coin_price_oracle] Oracle contract successfully deployed at address: ... ... @@ -298,28 +300,35 @@ info: [coin_price_oracle] Oracle role successfully granted! ... info: [coin_price_oracle] Oracle value successfully updated! ``` + The oracle contract will continue to be updated with the latest retrieved coin price at the default time interval (every 15 seconds). -### Set the ERC20 and oracle contract addresses for the oracle client AEA: +### Set the ERC20 and Oracle Contract Addresses for the Oracle Client AEA + ``` bash aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.oracle_contract_address $ORACLE_ADDRESS ``` + where `ORACLE_ADDRESS` should be set to the address shown in the oracle AEA logs: + ``` bash Oracle contract successfully deployed at address: ORACLE_ADDRESS ``` -### Run the oracle client AEA +### Run the Oracle Client AEA Run the oracle client agent. This will deploy an oracle client contract to the testnet, approve the contract to spend tokens on behalf of the AEA, and periodically call the contract function that requests the latest price of FET (or whichever coin was specified). + ``` bash aea run ``` After a few moments, you should see the following notices in the logs: + ``` bash info: [coin_price_oracle_client] Oracle client contract successfully deployed at address: ... ... info: [coin_price_oracle_client] Oracle value successfully requested! ``` + The AEA will continue to request the latest coin price at the default time interval (every 15 seconds). diff --git a/docs/orm-integration.md b/docs/orm-integration.md index 8182e596fd..a8d7bd80e6 100644 --- a/docs/orm-integration.md +++ b/docs/orm-integration.md @@ -1,3 +1,5 @@ +# ORM Integration + This guide demonstrates how to configure an AEA to interact with a database using `python-sql` objects. ## Discussion @@ -8,13 +10,13 @@ Object-relational-mapping (ORM) is the idea of being able to write SQL queries, - We assume, that we have a database `genericdb.db` with table name `data`. This table contains the following columns `timestamp` and `thermometer`. - We assume, that we have a hardware thermometer sensor that adds the readings in the `genericdb` database (although you can follow the guide without having access to a sensor). -Since the AEA framework enables us to use third-party libraries hosted on PyPI we can directly reference the external dependencies. The `aea install` command will install each dependency that the specific AEA needs and which is listed in the skill's YAML file. +Since the AEA framework enables us to use third-party libraries hosted on PyPI we can directly reference the external dependencies. The `aea install` command will install each dependency that the specific AEA needs and which is listed in the skill's YAML file. ## Communication -This diagram shows the communication between the various entities in the case where the thermometer data is successfully sold by the seller AEA to the buyer. +This diagram shows the communication between the various entities in the case where the thermometer data is successfully sold by the seller AEA to the buyer. -
+``` mermaid sequenceDiagram participant Search participant Buyer_AEA @@ -41,147 +43,145 @@ This diagram shows the communication between the various entities in the case wh deactivate Buyer_AEA deactivate Search deactivate Seller_AEA - deactivate Blockchain - -
+ deactivate Blockchain +``` -## Preparation instructions +## Preparation Instructions ### Dependencies Follow the Preliminaries and Installation sections from the AEA quick start. -## Demo instructions +## Demo Instructions This demo involves a true ledger transaction on Fetch.ai's `testnet` network or Ethereum's `ropsten`. This demo assumes the buyer trusts the seller AEA to send the data upon successful payment. -### Create the seller AEA +### Create the Seller AEA First, fetch the seller AEA which provides thermometer data: -``` bash -aea fetch fetchai/thermometer_aea:0.30.4 --alias my_thermometer_aea -cd my_thermometer_aea -aea install -aea build -``` - -
Alternatively, create from scratch. -

-The following steps create the seller from scratch: ``` bash -aea create my_thermometer_aea +aea fetch fetchai/thermometer_aea:0.30.5 --alias my_thermometer_aea cd my_thermometer_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/thermometer:0.27.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' aea install aea build ``` -

-
- - -### Create the buyer client +??? note "Alternatively, create from scratch:" + The following steps create the seller from scratch: + + ``` bash + aea create my_thermometer_aea + cd my_thermometer_aea + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/thermometer:0.27.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea install + aea build + ``` + +### Create the Buyer Client In another terminal, fetch the buyer AEA: -``` bash -aea fetch fetchai/thermometer_client:0.32.4 --alias my_thermometer_client -cd my_thermometer_client -aea install -aea build -``` - -
Alternatively, create from scratch. -

-The following steps create the car data client from scratch: ``` bash -aea create my_thermometer_client +aea fetch fetchai/thermometer_client:0.32.5 --alias my_thermometer_client cd my_thermometer_client -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/thermometer_client:0.26.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' aea install aea build ``` -

-
- - -### Add keys for the seller AEA +??? note "Alternatively, create from scratch:" + The following steps create the car data client from scratch: + + ``` bash + aea create my_thermometer_client + cd my_thermometer_client + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/thermometer_client:0.26.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea install + aea build + ``` + +### Add Keys for the Seller AEA First, create the private key for the seller AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -### Add keys and generate wealth for the buyer AEA +### Add Keys and Generate Wealth for the Buyer AEA The buyer needs to have some wealth to purchase the thermometer data. First, create the private key for the buyer AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Then, create some wealth for the buyer based on the network you want to transact with. On the Fetch.ai `Dorado` network: + ``` bash aea generate-wealth fetchai ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` - -### Update the seller and buyer AEA skill configurations +### Update the Seller and Buyer AEA Skill Configurations In `my_thermometer_aea/vendor/fetchai/skills/thermometer/skill.yaml`, replace the `data_for_sale` with your data: + ``` yaml models: ... @@ -205,6 +205,7 @@ models: dependencies: SQLAlchemy: {} ``` + The `service_data` is used to register the service in the SOEF search node and make your agent discoverable. In `my_thermometer_client/vendor/fetchai/skills/thermometer_client/skill.yaml`) ensure you have matching data. @@ -233,16 +234,17 @@ models: ``` After changing the skill configuration files you should run the following command for both agents to install each dependency: + ``` bash aea install ``` -### Modify the seller's strategy +### Modify the Seller's Strategy Before being able to modify a package we need to eject it from vendor: ``` bash -aea eject skill fetchai/thermometer:0.27.5 +aea eject skill fetchai/thermometer:0.27.6 ``` This will move the package to your `skills` directory and reset the version to `0.1.0` and the author to your author handle. @@ -250,10 +252,13 @@ This will move the package to your `skills` directory and reset the version to ` Open `strategy.py` (in `my_thermometer_aea/skills/thermometer/strategy.py`) and make the following modifications: Import the newly installed `sqlalchemy` library in your strategy. + ``` python import sqlalchemy as db ``` + Then modify your strategy's `__init__` function to match the following code: + ``` python class Strategy(GenericStrategy): """This class defines a strategy for the agent.""" @@ -271,9 +276,10 @@ class Strategy(GenericStrategy): self._tbl = self.create_database_and_table() self.insert_data() super().__init__(**kwargs) -``` +``` + +At the end of the file modify the `collect_from_data_source` function: -At the end of the file modify the `collect_from_data_source` function: ``` python def collect_from_data_source(self) -> Dict[str, str]: """Implement the logic to collect data.""" @@ -283,6 +289,7 @@ At the end of the file modify the `collect_from_data_source` function: data_points = result_proxy.fetchall() return {"data": json.dumps(list(map(tuple, data_points)))} ``` + Also, create two new functions, one that creates a connection with the database, and another that populates the database with some fake data. This is needed in the case you do not have access to an actual thermometer sensor that inserts data in the database. ``` python @@ -315,7 +322,7 @@ After modifying the skill we need to fingerprint it: aea fingerprint skill {YOUR_AUTHOR_HANDLE}/thermometer:0.1.0 ``` -### Run both AEAs +### Run Both AEAs First, run the thermometer (seller) AEA: @@ -323,10 +330,11 @@ First, run the thermometer (seller) AEA: aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of this address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` to retrieve the address.) +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of this address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the thermometer AEA. Then, configure the thermometer client (buyer) to connect to this same local ACN by running the following command in the buyer terminal, replacing `SOME_ADDRESS` with the value you noted above: + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -339,6 +347,7 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ ``` Then run the thermometer client AEA: + ``` bash aea run ``` @@ -348,8 +357,9 @@ You will see that the AEAs negotiate and then transact using the configured test ## Delete the AEAs When you're done, stop the agents (`CTRL+C`), go up a level and delete the AEAs. -``` bash + +``` bash cd .. aea delete my_thermometer_aea aea delete my_thermometer_client -``` \ No newline at end of file +``` diff --git a/docs/p2p-connection.md b/docs/p2p-connection.md index f795c5c06b..b443afafbe 100644 --- a/docs/p2p-connection.md +++ b/docs/p2p-connection.md @@ -1,22 +1,25 @@ -The `fetchai/p2p_libp2p:0.27.4` connection allows AEAs to create a peer-to-peer communication network. In particular, the connection creates an overlay network which maps agents' public keys to IP addresses. +# P2P Connection -## Local demo +The `fetchai/p2p_libp2p:0.27.5` connection allows AEAs to create a peer-to-peer communication network. In particular, the connection creates an overlay network which maps agents' public keys to IP addresses. + +## Local Demo First, make sure you have installed the crypto plugin of the target test-net. E.g. for Fetch.AI: + ``` bash pip install aea-ledger-fetchai ``` -### Create and run the genesis AEA +### Create and Run the Genesis AEA Create one AEA as follows: ``` bash aea create my_genesis_aea cd my_genesis_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea install aea build ``` @@ -34,21 +37,21 @@ aea issue-certificates Run the AEA: ``` bash -aea run --connections fetchai/p2p_libp2p:0.27.4 +aea run --connections fetchai/p2p_libp2p:0.27.5 ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` to retrieve the address.) +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the genesis AEA. -### Create and run another AEA +### Create and Run Another AEA Create a second AEA: ``` bash aea create my_other_aea cd my_other_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea install aea build ``` @@ -75,42 +78,41 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + Here `SOME_ADDRESS` needs to be replaced with the list of multi addresses displayed in the log output of the genesis AEA. Run the AEA: ``` bash -aea run --connections fetchai/p2p_libp2p:0.27.4 +aea run --connections fetchai/p2p_libp2p:0.27.5 ``` You can inspect the `libp2p_node.log` log files of the AEA to see how they discover each other. -
-

Note

-

Currently p2p_libp2p connection limits the total message size to 3 MB. -

-
+!!! note + Currently `p2p_libp2p` connection limits the total message size to 3 MB. - -## Local demo with skills +## Local Demo with Skills Explore the demo section for further examples. -## Deployed agent communication network +## Deployed Agent Communication Network You can connect to the deployed public test network by adding one or multiple of the following addresses as the `p2p_libp2p` connection's `entry_peers`: ``` yaml /dns4/acn.fetch.ai/tcp/9000/p2p/16Uiu2HAkw1ypeQYQbRFV5hKUxGRHocwU5ohmVmCnyJNg36tnPFdx ``` + ``` yaml /dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW ``` Specifically, in an AEA's configuration `aea-config.yaml` add the above addresses for `entry_peers` as follows: + ``` yaml --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null @@ -121,32 +123,35 @@ config: Note, this configuration change must be made for all agents attempting to communicate with each other via the Agent Communication Network. For example, in demos involving two agents, both agents will need the above modifications to their respective `aea-config.yaml` file. However, remember to use different ports in `local_uri.` This will allow both agents to default to this communication network without the added overhead of opening ports and specifying hosts on the individual host machines running each agent. +## Configuring the `connection.yaml` Entries -## Configuring the `connection.yaml` entries: - -To learn more about how to configure your `fetchai/p2p_libp2p:0.27.4` connection consult the `README.md` file supplied with the connection package. +To learn more about how to configure your `fetchai/p2p_libp2p:0.27.5` connection consult the `README.md` file supplied with the connection package. -## Running Go peer standalone +## Running Go Peer Standalone You can run a peer node in _standalone mode_; that is, as a Go process with no dependency on the AEA framework. To facilitate such a deployment, we provide a script `run_acn_node_standalone.py` - and a corresponding + and a corresponding Dockerfile. First, you need to build the node's binary (`libp2p_node`) either: - locally - ``` bash - svn export https://github.com/fetchai/agents-aea.git/trunk/packages/fetchai/connections/p2p_libp2p - cd p2p_libp2p - go build - chmod +x libp2p_node - ``` - Make sure you satisfy the system requirements. + + ``` bash + svn export https://github.com/fetchai/agents-aea.git/trunk/packages/fetchai/connections/p2p_libp2p + cd p2p_libp2p + go build + chmod +x libp2p_node + ``` + + Make sure you satisfy the system requirements. + - or within a docker image using the provided Dockerfile: - ``` bash - docker build -t acn_node_standalone -f scripts/acn/Dockerfile . - ``` + + ``` bash + docker build -t acn_node_standalone -f scripts/acn/Dockerfile . + ``` Next, to run the node binary in standalone mode, it requires values for the following entries: @@ -154,35 +159,44 @@ Next, to run the node binary in standalone mode, it requires values for the foll - `AEA_P2P_URI`: the local host and port to use by node - `AEA_P2P_URI_PUBLIC`: the URI under which the peer is publicly reachable - `AEA_P2P_DELEGATE_URI`: the URI under which the peer receives delegate connections -- `AEA_P2P_ENTRY_URIS`: an optionally supplied list of comma-separated (`,`) entry Multiaddresses for the peer to bootstrap +- `AEA_P2P_ENTRY_URIS`: an optionally supplied list of comma-separated (`,`) entry multiaddresses for the peer to bootstrap The script allows different methods to pass these values to the node: - As environment variables exported in the format `=` for each entry. Then: - ``` bash - python3 run_acn_node_standalone.py libp2p_node --config-from-env - ``` + + ``` bash + python3 run_acn_node_standalone.py libp2p_node --config-from-env + ``` + - Using an environment file containing the entries and their values in the format `=`, one entry per line. Then: - ``` bash - python3 run_acn_node_standalone.py libp2p_node --config-from-file - ``` - or - ``` bash - docker run -v :/acn/acn_config -it acn_node_standalone --config-from-file /acn/acn_config - ``` + + ``` bash + python3 run_acn_node_standalone.py libp2p_node --config-from-file + ``` + + or + + ``` bash + docker run -v :/acn/acn_config -it acn_node_standalone --config-from-file /acn/acn_config + ``` + - Using command line arguments: - ``` bash - python3 run_acn_node_standalone.py libp2p_node --key-file \ - --uri --uri-external \ - --uri-delegate \ - --entry-peers-maddrs ... - ``` - or - ``` bash - docker run -v :/acn/key.txt -it acn_node_standalone --key-file /acn/key.txt \ - --uri --uri-external \ - --uri-delegate \ - --entry-peers-maddrs ... - ``` + + ``` bash + python3 run_acn_node_standalone.py libp2p_node --key-file \ + --uri --uri-external \ + --uri-delegate \ + --entry-peers-maddrs ... + ``` + + or + + ``` bash + docker run -v :/acn/key.txt -it acn_node_standalone --key-file /acn/key.txt \ + --uri --uri-external \ + --uri-delegate \ + --entry-peers-maddrs ... + ``` Note that the script will always save the configuration of the running node as a file under the name `.acn_config` in the current working directory. This can be handy when you want the exact same configuration for future runs of the node. diff --git a/docs/package-imports.md b/docs/package-imports.md index 75f5b0a5a7..0321ad0fa6 100644 --- a/docs/package-imports.md +++ b/docs/package-imports.md @@ -1,6 +1,8 @@ +# File Structure + An agent that is generated using the AEA framework is a modular system with different connections, contracts, protocols and skills. -## File structure +## An AEA Project's File Structure The file structure of an AEA is fixed. @@ -45,22 +47,23 @@ The developer can create new directories where necessary but the core structure The `aea-config.yaml` is the top level configuration file of an AEA. It defines the global configurations as well as the component/package dependencies of the AEA. In some sense, the AEA can therefore be understood as an orchestrator of components. For the AEA to use a package, the `public_id` for the package must be listed in the `aea-config.yaml` file, e.g. + ``` yaml connections: -- fetchai/stub:0.21.2 +- fetchai/stub:0.21.3 ``` The above shows a part of the `aea-config.yaml`. If you see the connections, you will see that we follow a pattern of `author/name_package:version` to identify each package, also referred to as `public_id`. Here the `author` is the author of the package. -## Vendor and package directories +## Vendor and Package Directories -The `vendor` folder contains the packages from the registry (local or remote) which have been developed by ourselves, other authors or Fetch.ai and are namespaced by author name. +The `vendor` folder contains the packages from the registry (local or remote) which have been developed by ourselves, other authors or Fetch.ai and are placed in different namespaces according to the author name. The packages we develop as part of the given AEA project are in the respective `connections/`, `contracts/`, `protocols/`, and `skills/` folders. In the above configuration example, the package is authored by Fetch.ai and is located inside the `vendor/fetchai/connections` folder. -## Importing modules from packages +## Importing Modules from Packages The way we import modules from packages inside the agent is in the form of `packages.{author}.{package_type}.{package_name}.{module_name}`. So for the above example, the import path is `packages.fetchai.connections.stub.{module_name}`. @@ -68,24 +71,24 @@ The framework loads the modules from the local agent project and adds them to Py We use a custom package management approach for the AEAs rather than the default Python one as it provides us with more flexibility, especially when it comes to extension beyond the Python ecosystem. -## Python dependencies of packages +## Python Dependencies of Packages Python dependencies of packages are specified in their respective configuration files under `dependencies`. They will be installed when `aea install` is run on an agent project. -## Create a package +## Create a Package If you want to create a package, you can use the CLI command `aea scaffold connection/contract/protocol/skill [name]` and this will create the package and put it inside the respective folder based on the command for example if we `scaffold` skill with the name `my_skill` it will be located inside the folder skills in the root directory of the agent (`my_aea/skills/my_skill`). -## Use published packages from the registry +## Use Published Packages from the Registry If you want to use a finished package, you can use a package from the registry. There or two registries. The remote registry operated by Fetch.ai and a local registry stub. The local registry stub is a directory called `packages` which contains packages in a nested structure with authors on the top level, followed by the package type, then package name. An example of such a directory is the `packages` directory located in the AEA repository. The local registry is useful for development. -You can use the CLI to interact with the registry. By default the CLI points to the remote registry. You can point it to the local registry via the flag `--local`. +You can use the CLI to interact with the registry. By default, the CLI points to the remote registry. You can point it to the local registry via the flag `--local`. -## Package versioning +## Package Versioning By default, the AEA can only handle one version per package. That is, a project should never use both `some_author/some_package_name:0.1.0` and `some_author/some_package_name:0.2.0`. diff --git a/docs/performance-benchmark.md b/docs/performance-benchmark.md index 3b6544e6e3..9b2af48262 100644 --- a/docs/performance-benchmark.md +++ b/docs/performance-benchmark.md @@ -1,31 +1,31 @@ +# Performance Benchmark + Test AEA framework performance. ## What is it? The benchmark module is a set of tools to measure execution time, CPU load and memory usage of the AEA Python code. It produces text reports and draws charts to present the results. -## How does it work? +## How does it Work? The framework: -* spawns a dedicated process for each test run to execute the function to test. -* measures CPU and RAM usage periodically. -* waits for function exits or terminates them by timeout. -* repeats test execution multiple times to get more accurate results. - - +- spawns a dedicated process for each test run to execute the function to test. +- measures CPU and RAM usage periodically. +- waits for function exits or terminates them by timeout. +- repeats test execution multiple times to get more accurate results. -## How to use +## How to Use Steps to run a test: -* Write a function you would like to test with all arguments you would like to parametrise, add some doc strings. -* Split the function into two parts: prepare part and performance part. The prepare part will not be included in the measurement. -* Add `BenchmarkControl` support, to notify framework to start measurement. -* Import `TestCli` class, `TestCli().run(function_to_be_tested)` -* Call it from console to get text results. +- Write a function you would like to test with all arguments you would like to parametrise, add some doc strings. +- Split the function into two parts: 'prepare' and 'performance' part. The 'prepare' part will not be included in the measurement. +- Add `BenchmarkControl` support, to notify framework to start measurement. +- Import `TestCli` class, `TestCli().run(function_to_be_tested)` +- Call it from console to get text results. -### Simple example +### Simple Example `cpuburn` - simple test of CPU load depends on idle sleep time. Shows how much CPU consumed during the execution. @@ -59,8 +59,8 @@ if __name__ == "__main__": TestCli(cpu_burn).run() ``` - Run it with `python ./benchmark/cases/cpu_burn.py --help` to get help about usage. + ``` bash Usage: cpu_burn.py [OPTIONS] [ARGS]... @@ -83,8 +83,8 @@ Options: --help Show this message and exit. ``` - Run it with `python ./benchmark/cases/cpu_burn.py` to start with default parameters. + ``` bash Test execution timeout: 10.0 Test execution measure period: 0.1 @@ -116,11 +116,11 @@ mem mean (kb): 53.98828125 ± 0 Here you can see test report for default arguments set. - Run with multiple arguments set, multiple repeats and draw a chart on resources `python ./benchmark/cases/cpu_burn.py -N 5 -P 1 3,0.00001 3,0.001 3,0.01` Report is: + ``` bash Test execution timeout: 10.0 Test execution measure period: 0.1 @@ -179,27 +179,24 @@ Chart is drawn for argument 1: sleep: The most interesting part is CPU usage, as you can see CPU usage decreases with increasing value of idle sleep. Memory usage and execution time can slightly differ per case execution. +## Requirements for Tested Function -## Requirements for tested function - -* The first function's argument has to be `benchmark: BenchmarkControl` which is passed by default by the framework. -* All arguments except the fist one have to set default values. -* Function doc string is required, it used for help information. -* `benchmark.start()` has to be called once in the function body to start measurement. The timeout is counted from this point! -* All the "prepare part" in the function that should not be measured has to be placed before `benchmark.start()` -* Code to be measured has to go after `benchmark.start()` -* Try to avoid infinitive loops and assume the test should exit after a while. +- The first function's argument has to be `benchmark: BenchmarkControl` which is passed by default by the framework. +- All arguments except the fist one have to set default values. +- Function doc string is required, it used for help information. +- `benchmark.start()` has to be called once in the function body to start measurement. The timeout is counted from this point! +- All the "prepare part" in the function that should not be measured has to be placed before `benchmark.start()` +- Code to be measured has to go after `benchmark.start()` +- Try to avoid infinitive loops and assume the test should exit after a while. +## Execution Options -## Execution options - -* To pass an arguments set just provide it as a comma separated string like `10,0.1` -* To pass several argument sets just separate them by white space `10,0.1 20,0.2` -* `--timeout FLOAT` is test execution timeout in seconds. If the test takes more time, it will be terminated. -* `--period FLOAT` is measurement interval in seconds, how often to make CPU and RAM usage measurements. -* `-N, --num-executions INTEGER` - how many time to run the same argument set to make result more accurate. -* `-P, --plot INTEGER` - Draw a chart using, using values of argument specified as values for axis X. argument positions started with 0, argument benchmark does not counted. for example `-P 0` will use `run_time` values, `-P 1` will use `sleep` values. - +- To pass an arguments set just provide it as a comma separated string like `10,0.1` +- To pass several argument sets just separate them by white space `10,0.1 20,0.2` +- `--timeout FLOAT` is test execution timeout in seconds. If the test takes more time, it will be terminated. +- `--period FLOAT` is measurement interval in seconds, how often to make CPU and RAM usage measurements. +- `-N, --num-executions INTEGER` - how many times to run the same argument set to make result more accurate. +- `-P, --plot INTEGER` - Draw a chart, using values in the argument on the X axis, argument positions started with 0, argument benchmark not counted. For example `-P 0` will use `run_time` values, `-P 1` will use `sleep` values, and so on. ## Limitations @@ -207,9 +204,7 @@ Currently, the benchmark framework does not measure resources consumed by subpro Asynchronous functions or coroutines are not supported directly. So you have to set up an event loop inside test function and start loop manually. - - -## Testing AEA: handlers example +## Testing AEA: Handlers Example Test react speed on specific messages amount. @@ -247,8 +242,8 @@ def react_speed_in_loop(benchmark: BenchmarkControl, inbox_amount=1000) -> None: aea_test_wrapper.stop_loop() ``` - Create AEA wrapper with specified handler: + ``` python skill_definition = { "handlers": {"dummy_handler": DummyHandler} @@ -259,8 +254,8 @@ aea_test_wrapper = AEATestWrapper( ) ``` - Populate inbox with dummy messages: + ``` python for _ in range(inbox_amount): aea_test_wrapper.put_inbox(aea_test_wrapper.dummy_envelope()) @@ -271,6 +266,7 @@ Set timeout `0`, for maximum messages processing speed: `aea_test_wrapper.set_lo Start benchmark: `benchmark.start()` Start/stop AEA: + ``` python aea_test_wrapper.start() ... @@ -278,6 +274,7 @@ aea_test_wrapper.stop() ``` Wait till messages present in inbox: + ``` python while not aea_test_wrapper.is_inbox_empty(): time.sleep(0.1) diff --git a/docs/por.md b/docs/por.md index 5a5c6e8acd..34030410a7 100644 --- a/docs/por.md +++ b/docs/por.md @@ -1,3 +1,4 @@ +# Proof of Representation An AEA can use several key pairs. In particular, it can use different keys for securing its communication and for engaging in exchange. In the ACN we make use of this fact. To be able to signal to other agents that the address derived from one key pair is allowed to represent the agent controlling the other key pair, the key pair which is being represented must sign a message to prove that the other key pair is allowed to represent it. The `aea issue-certificates` command allows to create this association. @@ -16,6 +17,6 @@ cert_requests: save_path: .certs/conn_cert.txt ``` -The `identifier` refers to the environment for which the signature is generated, here `acn`. The `ledger_id` refers to the key pair to be used from the `private_key_paths` specified in `aea-config.yaml` for signing. The `not_after` and `not_before` fields specify constraints on the validity of the signature. The `public_key` can specify either the identifier of the key pair in `connection_private_key_paths` of which the public key is signed or it can contain the to be signed public key in plain text. The `save_path` specifies the path where the certificate is to be saved at. +The `identifier` refers to the environment for which the signature is generated, here `acn`. The `ledger_id` refers to the key pair to be used from the `private_key_paths` specified in `aea-config.yaml` for signing. The `not_after` and `not_before` fields specify constraints on the validity of the signature. The `public_key` can specify either the identifier of the key pair in `connection_private_key_paths`, of which the public key is signed, or it can contain the to be signed public key in plain text. The `save_path` specifies the path where the certificate is to be saved at. In the above example, the connection requests a certificate which is a signature of the `fetchai` public key in `connection_private_key_paths` with the `fetchai` key pair in `private_key_paths`. The validity of the signature will be constrained to the year `2021` for the environment `acn`. diff --git a/docs/prometheus.md b/docs/prometheus.md index 1f4094766c..bddc083f98 100644 --- a/docs/prometheus.md +++ b/docs/prometheus.md @@ -1,56 +1,58 @@ -AEAs can create and update prometheus metrics for remote monitoring by sending messages to the prometheus connection `fetchai/prometheus:0.9.5`. +# Prometheus Monitoring + +AEAs can create and update prometheus metrics for remote monitoring by sending messages to the prometheus connection `fetchai/prometheus:0.9.6`. To see this working in an agent, fetch and run the `coin_price_feed` agent and check `localhost:9090/metrics` to see the latest values of the metrics `num_retrievals` and `num_requests`: + ``` bash -aea fetch fetchai/coin_price_feed:0.15.4 +aea fetch fetchai/coin_price_feed:0.15.5 cd coin_price_feed aea install aea build aea run ``` + You can then instruct a prometheus server running on the same computing cluster as a deployed agent to scrape these metrics for remote monitoring and visualisation with the Prometheus/Grafana toolset. To use this connection, add a model `prometheus_dialogues` to your skill to handle the metrics configuration and messages to the prometheus connection. -
Click here for example - - -``` python -class PrometheusDialogues(Model, BasePrometheusDialogues): - """The dialogues class keeps track of all prometheus dialogues.""" - - def __init__(self, **kwargs) -> None: - """ - Initialize dialogues. - - :return: None - """ - - self.enabled = kwargs.pop("enabled", False) - self.metrics = kwargs.pop("metrics", []) - - Model.__init__(self, **kwargs) +??? note "Click here for example:" + ``` python + class PrometheusDialogues(Model, BasePrometheusDialogues): + """The dialogues class keeps track of all prometheus dialogues.""" - def role_from_first_message( # pylint: disable=unused-argument - message: Message, receiver_address: Address - ) -> BaseDialogue.Role: - """Infer the role of the agent from an incoming/outgoing first message - - :param message: an incoming/outgoing first message - :param receiver_address: the address of the receiving agent - :return: The role of the agent + def __init__(self, **kwargs) -> None: """ - return PrometheusDialogue.Role.AGENT - - BasePrometheusDialogues.__init__( - self, - self_address=str(self.skill_id), - role_from_first_message=role_from_first_message, - ) -``` -
+ Initialize dialogues. + + :return: None + """ + + self.enabled = kwargs.pop("enabled", False) + self.metrics = kwargs.pop("metrics", []) + + Model.__init__(self, **kwargs) + + def role_from_first_message( # pylint: disable=unused-argument + message: Message, receiver_address: Address + ) -> BaseDialogue.Role: + """Infer the role of the agent from an incoming/outgoing first message + + :param message: an incoming/outgoing first message + :param receiver_address: the address of the receiving agent + :return: The role of the agent + """ + return PrometheusDialogue.Role.AGENT + + BasePrometheusDialogues.__init__( + self, + self_address=str(self.skill_id), + role_from_first_message=role_from_first_message, + ) + ``` Then configure your metrics in the `skill.yaml` file. For example (from the `advanced_data_request` skill): + ``` yaml models: prometheus_dialogues: @@ -69,6 +71,7 @@ models: ``` Add a metric `metric_name` of type `metric_type` {`Gauge`, `Counter`, ...} and description `description` by sending a message with performative `ADD_METRIC` to the prometheus connection: + ``` python def add_prometheus_metric( self, @@ -103,7 +106,9 @@ def add_prometheus_metric( # send message self.context.outbox.put_message(message=message) ``` + where `PROM_CONNECTION_ID` should be imported to your skill as follows: + ``` python from packages.fetchai.connections.prometheus.connection import ( PUBLIC_ID as PROM_CONNECTION_ID, @@ -111,6 +116,7 @@ from packages.fetchai.connections.prometheus.connection import ( ``` Update metric `metric_name` with update function `update_func` {`inc`, `set`, `observe`, ...} and value `value` by sending a message with performative `UPDATE_METRIC` to the prometheus connection: + ``` python def update_prometheus_metric( self, metric_name: str, update_func: str, value: float, labels: Dict[str, str], @@ -143,6 +149,7 @@ def update_prometheus_metric( ``` Initialize the metrics from the configuration file in the behaviour setup: + ``` python def setup(self) -> None: """Implement the setup of the behaviour""" @@ -157,6 +164,7 @@ def setup(self) -> None: Then call the `update_prometheus_metric` function from the appropriate places. For example, the following code in `handlers.py` for the `advanced_data_request` skill updates the number of http requests served: + ``` python if self.context.prometheus_dialogues.enabled: self.context.behaviours.advanced_data_request_behaviour.update_prometheus_metric( @@ -166,73 +174,71 @@ if self.context.prometheus_dialogues.enabled: Finally, you can add a `PrometheusHandler` to your skill to process response messages from the prometheus connection. -
Click here for example - - -``` python -class PrometheusHandler(Handler): - """This class handles responses from the prometheus server.""" - - SUPPORTED_PROTOCOL = PrometheusMessage.protocol_id - - def __init__(self, **kwargs): - """Initialize the handler.""" - super().__init__(**kwargs) - - self.handled_message = None - - def setup(self) -> None: - """Set up the handler.""" - if self.context.prometheus_dialogues.enabled: - self.context.logger.info("setting up PrometheusHandler") - - def handle(self, message: Message) -> None: - """ - Implement the reaction to a message. - - :param message: the message - :return: None - """ - - message = cast(PrometheusMessage, message) - - # recover dialogue - prometheus_dialogues = cast( - PrometheusDialogues, self.context.prometheus_dialogues - ) - prometheus_dialogue = cast( - PrometheusDialogue, prometheus_dialogues.update(message) - ) - if prometheus_dialogue is None: - self._handle_unidentified_dialogue(message) - return - - self.handled_message = message - if message.performative == PrometheusMessage.Performative.RESPONSE: - self.context.logger.debug( - f"Prometheus response ({message.code}): {message.message}" +??? note "Click here for example:" + ``` python + class PrometheusHandler(Handler): + """This class handles responses from the prometheus server.""" + + SUPPORTED_PROTOCOL = PrometheusMessage.protocol_id + + def __init__(self, **kwargs): + """Initialize the handler.""" + super().__init__(**kwargs) + + self.handled_message = None + + def setup(self) -> None: + """Set up the handler.""" + if self.context.prometheus_dialogues.enabled: + self.context.logger.info("setting up PrometheusHandler") + + def handle(self, message: Message) -> None: + """ + Implement the reaction to a message. + + :param message: the message + :return: None + """ + + message = cast(PrometheusMessage, message) + + # recover dialogue + prometheus_dialogues = cast( + PrometheusDialogues, self.context.prometheus_dialogues ) - else: - self.context.logger.debug( - f"got unexpected prometheus message: Performative = {PrometheusMessage.Performative}" + prometheus_dialogue = cast( + PrometheusDialogue, prometheus_dialogues.update(message) ) - - def _handle_unidentified_dialogue(self, msg: Message) -> None: - """ - Handle an unidentified dialogue. - - :param msg: the unidentified message to be handled - :return: None - """ - - self.context.logger.info( - "received invalid message={}, unidentified dialogue.".format(msg) - ) - - def teardown(self) -> None: - """ - Teardown the handler. - - :return: None - """ -``` + if prometheus_dialogue is None: + self._handle_unidentified_dialogue(message) + return + + self.handled_message = message + if message.performative == PrometheusMessage.Performative.RESPONSE: + self.context.logger.debug( + f"Prometheus response ({message.code}): {message.message}" + ) + else: + self.context.logger.debug( + f"got unexpected prometheus message: Performative = {PrometheusMessage.Performative}" + ) + + def _handle_unidentified_dialogue(self, msg: Message) -> None: + """ + Handle an unidentified dialogue. + + :param msg: the unidentified message to be handled + :return: None + """ + + self.context.logger.info( + "received invalid message={}, unidentified dialogue.".format(msg) + ) + + def teardown(self) -> None: + """ + Teardown the handler. + + :return: None + """ + ``` diff --git a/docs/protocol-generator.md b/docs/protocol-generator.md index d90b6c5f2a..dbe8c5a6ed 100644 --- a/docs/protocol-generator.md +++ b/docs/protocol-generator.md @@ -1,9 +1,6 @@ -
-

Note

-

This is currently an experimental feature. To try it follow this guide.

-
+# Generating Protocols -## How to run +## How to Run First make sure you are inside your AEA's folder (see here on how to create a new agent). @@ -17,25 +14,25 @@ where `` is the path to a -

Note

-

Note the protocol buffer compiler protoc that the generator uses requires a plugin to produce go code. Follow this instruction.

- +!!! note + Note the protocol buffer compiler `protoc` that the generator uses requires a plugin to produce `go` code. Follow this instruction. ## Protocol Specification + A protocol can be described in a YAML file. This is called a _protocol specification_. The following is an example protocol specification: ``` yaml @@ -92,27 +88,27 @@ keep_terminal_state_dialogues: true ... ``` -Each protocol specification must follow the YAML format, and have a minimum of one and a maximum of three YAML documents (each YAML document is enclosed within --- and ...). +Each protocol specification must follow the YAML format, and have a minimum of one and a maximum of three YAML documents (each YAML document is enclosed within --- and ...). ### Basic Protocol Detail and Messages Syntax -The first YAML document is mandatory in any protocol specification. It contains some basic information about the protocol and describes the syntax of communicative messages allowed under this protocol. +The first YAML document is mandatory in any protocol specification. It contains some basic information about the protocol and describes the syntax of communicative messages allowed under this protocol. The allowed fields and what they represent are: - * `name`: The name of the protocol (written in snake_case) - * `author`: The creator of the protocol - * `version`: The current version of the protocol - * `license`: Licensing information - * `aea_version`: The version(s) of the framework that support this protocol. The format is described here. - * `description`: A short description of the protocol - * `protocol_specification_id`: The id which identifies the protocol for over-the-wire transport. This id is decoupled from the `protocol_id` (`{author}/{name}:{version}`) which is tied to the Python implementation. +- `name`: The name of the protocol (written in snake_case) +- `author`: The creator of the protocol +- `version`: The current version of the protocol +- `license`: Licensing information +- `aea_version`: The version(s) of the framework that support this protocol. The format is described here. +- `description`: A short description of the protocol +- `protocol_specification_id`: The id which identifies the protocol for over-the-wire transport. This id is decoupled from the `protocol_id` (`{author}/{name}:{version}`) which is tied to the Python implementation. -All of the above fields are mandatory and each is a key/value pair, where both key and value are YAML strings. +All of the above fields are mandatory and each is a key/value pair, where both key and value are YAML strings. Additionally, the first YAML document of a protocol specification must describe the syntax of valid messages according to this protocol. Therefore, it must contain another mandatory `speech-acts` field which defines the set of _performatives_ valid under this protocol, and a set of _contents_ for each performative. -A _performative_ defines the type of a message (e.g. propose, accept) and has a set of _contents_ (or parameters) of varying types. +A _performative_ defines the _type_ of a message (e.g. propose, accept) and has a set of _contents_ (or parameters) of varying types. The format of the `speech-act` is as follows: `speech-act` is a dictionary, where each key is a **unique** _performative_ (YAML string), and the value is a _content_ dictionary. If a performative does not have any content, then its content dictionary is empty, for instance `accept` and `decline` in the specification above. @@ -122,19 +118,19 @@ A content dictionary in turn has key/value pairs, where each key is the name of The specific types which could be assigned to contents in a protocol specification are described in the table below. -Types are either user defined (i.e. custom types) or primitive: +Types are either user defined (i.e. custom types) or primitive: + +- Custom types are prepended with `ct:` and their format is described using regular expression in the table below. +- Primitive types are prepended with `pt:`. There are different categories of primitive types. For example, `` such as integers and booleans, `` such as sets and lists, and so on. Primitive types are compositional: + - For example, consider `pt:set[...]` under ``, i.e. an unordered collection of elements without duplicates. A `pt:set[...]` describes the type of its elements (called "sub-type") in square brackets. The subtype of a `pt:set[...]` must be a `` (e.g. `pt:int`, `pt:bool`). + - In describing the format of types, `/` between two subtypes should be treated as "or". For example, the subtype of a `pt:optional[...]` is either a ``, ``, ``, `` or ``. -* Custom types are prepended with `ct:` and their format is described using regular expression in the table below. -* Primitive types are prepended with `pt:`. There are different categories of primitive types. For example, `` such as integers and booleans, `` such as sets and lists, and so on. Primitive types are compositional: - - For example, consider `pt:set[...]` under ``, i.e. an unordered collection of elements without duplicates. A `pt:set[...]` describes the type of its elements (called "sub-type") in square brackets. The sub-type of a `pt:set[...]` must be a `` (e.g. `pt:int`, `pt:bool`). - - In describing the format of types, `/` between two sub-types should be treated as "or". For example, the sub-type of a `pt:optional[...]` is either a ``, ``, ``, `` or ``. +A multi type denotes an "or" separated set of subtypes. For example, a content whose type is specified as `pt:union[pt:str, pt:int]` should either be `pt:int` or `pt:float`. -A multi type denotes an "or" separated set of sub-types. For example, a content whose type is specified as `pt:union[pt:str, pt:int]` should either be `pt:int` or `pt:float`. +An optional type `pt:optional[...]` assigned to a content means the content's existence is optional, but if it is present, its type must match `pt:optional[...]`'s subtype. -An optional type `pt:optional[...]` assigned to a content means the content's existence is optional, but if it is present, its type must match `pt:optional[...]`'s sub-type. - | Type | Code | Format | Example | In Python | -| ------------------------------------| --------| --------------------------------------------------------------|------------------------------------------|------------------------------------| +|-------------------------------------|---------|---------------------------------------------------------------|------------------------------------------|------------------------------------| | Custom types1 | `` | `ct:RegExp(^[A-Z][a-zA-Z0-9]*$)` | `ct:DataModel` | Custom Class | | Primitive types | `` | `pt:bytes` | `pt:bytes` | `bytes` | | | | `pt:int` | `pt:int` | `int` | @@ -163,29 +159,29 @@ You can optionally specify the structure of dialogues conforming to your protoco The allowed fields and what they represent are: - * `initiation`: The list of initial performatives - * `reply`: The reply structure of speech-acts - * `termination`: The list of terminal performatives - * `roles`: The roles of players participating in a dialogue - * `end_states`: The possible outcomes a terminated dialogue. - * `keep_terminal_state_dialogues`: whether to keep or drop a terminated dialogue. When a storage backend is configured, the dialogues will be persisted in storage when kept. +- `initiation`: The list of initial performatives +- `reply`: The reply structure of speech-acts +- `termination`: The list of terminal performatives +- `roles`: The roles of players participating in a dialogue +- `end_states`: The possible outcomes a terminated dialogue. +- `keep_terminal_state_dialogues`: whether to keep or drop a terminated dialogue. When a storage backend is configured, the dialogues will be persisted in storage when kept. -All of the above fields are mandatory. +All of the above fields are mandatory. -`initiation` is a YAML list, containing the performatives which can be used to start a dialogue. +`initiation` is a YAML list, containing the performatives which can be used to start a dialogue. -`reply` specifies for every performative, what its valid replies are. If a performative `per_1` is a valid reply to another `per_2`, this means a message with performative `per_1` can target a message whose performative is `per_2`. +`reply` specifies for every performative, what its valid replies are. If a performative `per_1` is a valid reply to another `per_2`, this means a message with performative `per_1` can target a message whose performative is `per_2`. -`reply` is a YAML dictionary, where the keys are the performatives (YAML string) defined in `speech-acts`. For each performative key, its value is a list of performatives which are defined to be a valid reply. +`reply` is a YAML dictionary, where the keys are the performatives (YAML string) defined in `speech-acts`. For each performative key, its value is a list of performatives which are defined to be a valid reply. For example, valid replies to `cfp` are `propose` and `decline`. `termination` is a YAML list, containing the performatives which terminate a dialogue. Once any of these performatives are used in a dialogue, the dialogue is terminated and no other messages may be added to it. `roles` is a YAML set, containing the roles players participating in dialogues can take. `roles` may contain one or two roles, each role being a YAML string. If there are two roles, each participant has a distinguished role in the dialogue (e.g. buyer and seller in the above specification). If there is only one role, then both participants in a dialogue have this same role. -`end_states` lists the final states a terminated dialogue may have. `end_states` is a YAML list of strings. +`end_states` lists the final states a terminated dialogue may have. `end_states` is a YAML list of strings. -`keep_terminal_state_dialogues` has a boolean value and specifies whether the terminated dialogues of this protocol are to be kept or discarded. +`keep_terminal_state_dialogues` has a boolean value and specifies whether the terminated dialogues of this protocol are to be kept or discarded. ## Design Guidelines @@ -195,20 +191,19 @@ For example, valid replies to `cfp` are `propose` and `decline`. 3. If a speech-act is listed in `termination`, it must not have any replies in `reply`. The reason is simple: a terminal speech-act terminates a dialogue and so its reply can never be used. -4. If a speech-act replies to no other speech-acts, it should be listed in `initiation` otherwise it could never be used in a dialogue (neither to a start a dialogue with, nor as a reply to another speech-act). +4. If a speech-act replies to no other speech-acts, it should be listed in `initiation` otherwise it could never be used in a dialogue (neither to a start a dialogue with, nor as a reply to another speech-act). ### Notes 1. Currently, there is no way to describe custom types in a programming language independent format. This means that if a protocol specification includes custom types, the required implementations must be provided manually. - * Before generating the protocol, the protocol buffer schema code for every custom type must be provided in the protocol specification. - * Once the generator is called, it produces a `custom_types` module containing stub implementations for every custom type in the specification. The user must then modify this module and add implementations for every custom type in the specification. This includes implementations of how an object of a custom type can be encoded and decoded using protocol buffer. - * Note, currently the way custom types are dealt with in the generator is admittedly inconvenient. The reason is, the generator does not know the structure of custom types and how they may be serialised/deserialised. Although this approach works, it is only a temporary solution until further work on a programming language-independent type description language is finished (similar to how the generator is designed to be a programming language-independent protocol description language). + _ Before generating the protocol, the protocol buffer schema code for every custom type must be provided in the protocol specification. + - Once the generator is called, it produces a `custom_types` module containing stub implementations for every custom type in the specification. The user must then modify this module and add implementations for every custom type in the specification. This includes implementations of how an object of a custom type can be encoded and decoded using protocol buffer. + - Note, currently the way custom types are dealt with in the generator is admittedly inconvenient. The reason is, the generator does not know the structure of custom types and how they may be serialized/deserialized. Although this approach works, it is only a temporary solution until further work on a programming language-independent type description language is finished (similar to how the generator is designed to be a programming language-independent protocol description language). 2. Currently, the first element in `pt:dict` cannot be a ``, `pt:float` or `pt:bytes`. This is because of a constraint in protocol buffer version 3 which is the framework's underlying serialisation mechanism. In a future version, we may address this limitation, in which case we will relax this constraint. 3. In protocol buffer version 3, which is the version used by the generator, there is no way to check whether an optional field (i.e. contents of type `pt:optional[...]`) has been set or not (see discussion here). In proto3, all optional fields are assigned a default value (e.g. `0` for integers types, `false` for boolean types, etc). Therefore, given an optional field whose value is the default value, there is no way to know from the optional field itself, whether it is not set, or in fact is set but its value happens to be the default value. Because of this, in the generated protocol schema file (the `.proto` file), for every optional content there is a second field that declares whether this field is set or not. We will maintain this temporary solution until a cleaner alternative is found. -4. Be aware that currently, using the generated protocols in python, there might be some rounding errors when serialising and then deserialising values of `pt:float` contents. - +4. Be aware that currently, using the generated protocols in python, there might be some rounding errors when serialising and then deserializing values of `pt:float` contents. -## Demo instructions +## Demo Instructions First, create a new AEA project: @@ -226,6 +221,3 @@ aea generate protocol ../examples/protocol_specification_ex/sample.yaml This will generate the protocol and place it in your AEA project. Third, try generating other protocols by first defining a specification, then running the generator. - - -
diff --git a/docs/protocol.md b/docs/protocol.md index 67a3f3c337..43e48c24f9 100644 --- a/docs/protocol.md +++ b/docs/protocol.md @@ -1,12 +1,12 @@ -`Protocols` define the structure of agent-to-agent and component-to-component interactions, which in the AEA world, are in the form of communication. To learn more about interactions and interaction protocols, see here. +# Protocols -Protocols in the AEA world provide definitions for: - -* `messages` defining the structure and syntax of messages; +`Protocols` define the structure of agent-to-agent and component-to-component interactions, which in the AEA world, are in the form of communication. To learn more about interactions and interaction protocols, see here. -* `serialization` defining how a message is encoded/decoded for transport; and optionally +Protocols in the AEA world provide definitions for: -* `dialogues` defining the structure of dialogues formed from exchanging series of messages. +- `messages` defining the structure and syntax of messages; +- `serialization` defining how a message is encoded/decoded for transport; and optionally +- `dialogues` defining the structure of dialogues formed from exchanging series of messages. Protocol simplified @@ -16,64 +16,56 @@ Additional protocols - i.e. a new type of interaction - can be added as packages We highly recommend you to **not** attempt writing your protocol manually as they tend to have involved logic; always use existing packages or the protocol generator! -## Components of a protocol +## Components of a Protocol A protocol package contains the following files: -* `__init__.py` -* `message.py`, which defines message representation -* `serialization.py`, which defines the encoding and decoding logic -* two protobuf related files +- `__init__.py` +- `message.py`, which defines message representation +- `serialization.py`, which defines the encoding and decoding logic +- two protobuf related files It optionally also contains -* `dialogues.py`, which defines the structure of dialogues formed from the exchange of a series of messages -* `custom_types.py`, which defines custom types +- `dialogues.py`, which defines the structure of dialogues formed from the exchange of a series of messages +- `custom_types.py`, which defines custom types All protocols are for point to point interactions between two agents or agent-like services. - - ## Metadata Each `Message` in an interaction protocol has a set of default fields: -* `dialogue_reference: Tuple[str, str]`, a reference of the dialogue the message is part of. The first part of the tuple is the reference assigned to by the agent who first initiates the dialogue (i.e. sends the first message). The second part of the tuple is the reference assigned to by the other agent. The default value is `("", "")`. -* `message_id: int`, the identifier of the message in a dialogue. The default value is `1`. -* `target: int`, the id of the message this message is replying to. The default value is `0`. -* `performative: Enum`, the purpose/intention of the message. -* `sender: Address`, the address of the sender of this message. -* `to: Address`, the address of the receiver of this message. +- `dialogue_reference: Tuple[str, str]`, a reference of the dialogue the message is part of. The first part of the tuple is the reference assigned to by the agent who first initiates the dialogue (i.e. sends the first message). The second part of the tuple is the reference assigned to by the other agent. The default value is `("", "")`. +- `message_id: int`, the identifier of the message in a dialogue. The default value is `1`. +- `target: int`, the id of the message this message is replying to. The default value is `0`. +- `performative: Enum`, the purpose/intention of the message. +- `sender: Address`, the address of the sender of this message. +- `to: Address`, the address of the receiver of this message. The default values for `message_id` and `target` assume the message is the first message in a dialogue. Therefore, the `message_id` is set to `1` indicating the first message in the dialogue and `target` is `0` since the first message is the only message that does not reply to any other. -By default, the values of `dialogue_reference`, `message_id`, `target` are set. However, most interactions involve more than one message being sent as part of the interaction and potentially multiple simultaneous interactions utilising the same protocol. In those cases, the `dialogue_reference` allows different interactions to be identified as such. The `message_id` and `target` are used to keep track of messages and their replies. For instance, on receiving of a message with `message_id=1` and `target=0`, the responding agent could respond with another with `message_id=2` and `target=1` replying to the first message. In particular, `target` holds the id of the message being replied to. This can be the preceding message, or an older one. +By default, the values of `dialogue_reference`, `message_id`, `target` are set. However, most interactions involve more than one message being sent as part of the interaction and potentially multiple simultaneous interactions utilising the same protocol. In those cases, the `dialogue_reference` allows different interactions to be identified as such. The `message_id` and `target` are used to keep track of messages and their replies. For instance, on receiving of a message with `message_id=1` and `target=0`, the responding agent could respond with another with `message_id=2` and `target=1` replying to the first message. In particular, `target` holds the id of the message being replied to. This can be the preceding message, or an older one. ## Contents -Each message may optionally have any number of contents of varying types. +Each message may optionally have any number of contents of varying types. -## Dialogue rules +## Dialogue Rules Protocols can optionally have a dialogue module. A _dialogue_, respectively _dialogues_ object, maintains the state of a single, respectively, all dialogues associated with a protocol. The framework provides a number of helpful classes which implement most of the logic to maintain dialogues, namely the `Dialogue` and `Dialogues` base classes. -## Custom protocol +## Custom Protocol The developer can generate custom protocols with the protocol generator. This lets the developer specify the speech-acts as well as optionally the dialogue structure (e.g. roles of agents participating in a dialogue, the states a dialogue may end in, and the reply structure of the speech-acts in a dialogue). We highly recommend you **do not** attempt to write your own protocol code; always use existing packages or the protocol generator! -## `fetchai/default:1.1.6` protocol +## `fetchai/default:1.1.7` Protocol -The `fetchai/default:1.1.6` protocol is meant to be implemented by every AEA. It serves AEA to AEA interaction and includes three message performatives: +The `fetchai/default:1.1.7` protocol is meant to be implemented by every AEA. It serves AEA to AEA interaction and includes three message performatives: ``` python from enum import Enum @@ -90,7 +82,8 @@ class Performative(Enum): return self.value ``` -* The `DefaultMessage` of performative `DefaultMessage.Performative.BYTES` is used to send payloads of byte strings to other AEAs. An example is: +- The `DefaultMessage` of performative `DefaultMessage.Performative.BYTES` is used to send payloads of byte strings to other AEAs. An example is: + ``` python from packages.fetchai.protocols.default.message import DefaultMessage @@ -100,7 +93,8 @@ msg = DefaultMessage( ) ``` -* The `DefaultMessage` of performative `DefaultMessage.Performative.ERROR` is used to notify other AEAs of errors in an interaction, including errors with other protocols, by including an `error_code` in the payload: +- The `DefaultMessage` of performative `DefaultMessage.Performative.ERROR` is used to notify other AEAs of errors in an interaction, including errors with other protocols, by including an `error_code` in the payload: + ``` python class ErrorCode(Enum): """This class represents an instance of ErrorCode.""" @@ -111,7 +105,9 @@ class ErrorCode(Enum): UNSUPPORTED_SKILL = 3 INVALID_DIALOGUE = 4 ``` + An example is: + ``` python msg = DefaultMessage( performative=DefaultMessage.Performative.ERROR, @@ -121,7 +117,8 @@ msg = DefaultMessage( ) ``` -* The `DefaultMessage` of performative `DefaultMessage.Performative.END` is used to terminate a default protocol dialogue. An example is: +- The `DefaultMessage` of performative `DefaultMessage.Performative.END` is used to terminate a default protocol dialogue. An example is: + ``` python from packages.fetchai.protocols.default.message import DefaultMessage @@ -130,13 +127,13 @@ msg = DefaultMessage( ) ``` -Each AEA's `fetchai/error:0.18.5` skill utilises the `fetchai/default:1.0.0` protocol for error handling. +Each AEA's `fetchai/error:0.18.6` skill utilises the `fetchai/default:1.0.0` protocol for error handling. -## `fetchai/oef_search:1.1.6` protocol +## `fetchai/oef_search:1.1.7` Protocol -The `fetchai/oef_search:1.1.6` protocol is used by AEAs to interact with an SOEF search node to register and unregister their own services and search for services registered by other agents. +The `fetchai/oef_search:1.1.7` protocol is used by AEAs to interact with an SOEF search node to register and unregister their own services and search for services registered by other agents. -The `fetchai/oef_search:1.1.6` protocol definition includes an `OefSearchMessage` with the following message types: +The `fetchai/oef_search:1.1.7` protocol definition includes an `OefSearchMessage` with the following message types: ``` python class Performative(Enum): @@ -156,11 +153,14 @@ class Performative(Enum): We show some example messages below: -* To register a service, we require a reference to the dialogue in string form (used to keep different dialogues apart), for instance +- To register a service, we require a reference to the dialogue in string form (used to keep different dialogues apart), for instance + ``` python my_dialogue_reference = "a_unique_register_service_dialogue_reference" ``` + and a description of the service we would like to register, for instance + ``` python from aea.helpers.search.models import Description @@ -170,7 +170,9 @@ my_service_description = Description( data_model=my_data_model, ) ``` + where we use, for instance + ``` python from aea.helpers.search.generic import GenericDataModel @@ -189,7 +191,9 @@ data_model = { } my_data_model = GenericDataModel(data_model_name, data_model) ``` + We can then create the message to register this service: + ``` python msg = OefSearchMessage( performative=OefSearchMessage.Performative.REGISTER_SERVICE, @@ -198,11 +202,14 @@ msg = OefSearchMessage( ) ``` -* To unregister a service, we require a reference to the dialogue in string form, for instance +- To unregister a service, we require a reference to the dialogue in string form, for instance + ``` python my_dialogue_reference = "a_unique_unregister_service_dialogue_reference" ``` + the description of the service we would like to unregister, say `my_service_description` from above and construct the message: + ``` python msg = OefSearchMessage( performative=OefSearchMessage.Performative.UNREGISTER_SERVICE, @@ -211,7 +218,8 @@ msg = OefSearchMessage( ) ``` -* To search a service, we similarly require a reference to the dialogue in string form, and then the query we would like the search node to evaluate, for instance +- To search a service, we similarly require a reference to the dialogue in string form, and then the query we would like the search node to evaluate, for instance + ``` python from aea.helpers.search.models import Constraint, ConstraintType, Query @@ -233,7 +241,9 @@ query = Query( model=None, ) ``` + We can then create the message to search these services: + ``` python oef_msg = OefSearchMessage( performative=OefSearchMessage.Performative.SEARCH_SERVICES, @@ -242,9 +252,10 @@ oef_msg = OefSearchMessage( ) ``` -* The SOEF search node will respond with a message `msg` of type `OefSearchMessage` with performative `OefSearchMessage.Performative.SEARCH_RESULT`. To access the tuple of agents which match the query, simply use `msg.agents`. In particular, this will return the agent addresses matching the query. The agent address can then be used to send a message to the agent utilising the P2P agent communication network and any protocol other than `fetchai/oef_search:1.0.0`. +- The SOEF search node will respond with a message `msg` of type `OefSearchMessage` with performative `OefSearchMessage.Performative.SEARCH_RESULT`. To access the tuple of agents which match the query, simply use `msg.agents`. In particular, this will return the agent addresses matching the query. The agent address can then be used to send a message to the agent utilising the P2P agent communication network and any protocol other than `fetchai/oef_search:1.0.0`. + +- If the SOEF search node encounters any errors with the messages you send, it will return an `OefSearchMessage` of performative `OefSearchMessage.Performative.OEF_ERROR` and indicate the error operation encountered: -* If the SOEF search node encounters any errors with the messages you send, it will return an `OefSearchMessage` of performative `OefSearchMessage.Performative.OEF_ERROR` and indicate the error operation encountered: ``` python class OefErrorOperation(Enum): @@ -257,11 +268,11 @@ class OefErrorOperation(Enum): OTHER = 10000 ``` -## `fetchai/fipa:1.1.6` protocol +## `fetchai/fipa:1.1.7` Protocol This protocol provides classes and functions necessary for communication between AEAs via a variant of the FIPA Agent Communication Language. -The `fetchai/fipa:1.1.6` protocol definition includes a `FipaMessage` with the following performatives: +The `fetchai/fipa:1.1.7` protocol definition includes a `FipaMessage` with the following performatives: ``` python class Performative(Enum): @@ -295,16 +306,16 @@ def __init__( ) ``` -The `fetchai/fipa:1.1.6` protocol also defines a `FipaDialogue` class which specifies the valid reply structure and provides other helper methods to maintain dialogues. - -For examples of the usage of the `fetchai/fipa:1.1.6` protocol check out the generic skills step by step guide. +The `fetchai/fipa:1.1.7` protocol also defines a `FipaDialogue` class which specifies the valid reply structure and provides other helper methods to maintain dialogues. +For examples of the usage of the `fetchai/fipa:1.1.7` protocol check out the generic skills step by step guide. -### Fipa dialogue +### Fipa Dialogue Below, we give an example of a dialogue between two agents. In practice; both dialogues would be maintained in the respective agent. We first create concrete implementations of `FipaDialogue` and `FipaDialogues` for the buyer and seller: + ``` python from aea.common import Address from aea.helpers.search.models import Constraint, ConstraintType, Description, Query @@ -432,6 +443,7 @@ class SellerDialogues(FipaDialogues): ``` Next, we can imitate a dialogue between the buyer and the seller. We first instantiate the dialogues models: + ``` python buyer_address = "buyer_address_stub" seller_address = "seller_address_stub" @@ -440,6 +452,7 @@ seller_dialogues = SellerDialogues(seller_address) ``` First, the buyer creates a message destined for the seller and updates the dialogues: + ``` python cfp_msg = FipaMessage( message_id=1, @@ -453,29 +466,35 @@ cfp_msg.counterparty = seller_addr # Extends the outgoing list of messages. buyer_dialogue = buyer_dialogues.update(cfp_msg) ``` + If the message has been correctly constructed, the `buyer_dialogue` will be returned, otherwise it will be `None`. In a skill, the message could now be sent: + ``` python # In a skill we would do: # self.context.outbox.put_message(message=cfp_msg) ``` However, here we simply continue with the seller: + ``` python # change the incoming message field & counterparty cfp_msg.is_incoming = True cfp_msg.counterparty = buyer_address ``` + In the skill, the above two lines will be done by the framework; you can simply receive the message in the handler. We update the seller's dialogues model next to generate a new dialogue: + ``` python # Creates a new dialogue for the seller side based on the income message. seller_dialogue = seller_dialogues.update(cfp_msg) ``` Next, the seller can generate a proposal: + ``` python # Generate a proposal message to send to the buyer. proposal = Description({"foo1": 1, "bar1": 2}) @@ -495,6 +514,7 @@ seller_dialogue.update(proposal_msg) ``` In a skill, the message could now be sent: + ``` python # In a skill we would do: # self.context.outbox.put_message(message=proposal_msg) @@ -507,6 +527,3 @@ To retrieve a dialogue for a given message, we can do the following: ``` python retrieved_dialogue = seller_dialogues.get_dialogue(cfp_msg) ``` - - -
\ No newline at end of file diff --git a/docs/query-language.md b/docs/query-language.md index f68e412c57..0214d5a1d3 100644 --- a/docs/query-language.md +++ b/docs/query-language.md @@ -1,3 +1,5 @@ +# The Query Language + We recommend reading Defining a Data Model before reading this section. Along with the Data Model language, the AEA framework offers the possibility to specify _queries_ defined over data models. @@ -17,22 +19,22 @@ That is, it imposes some limitations on the values the attribute can assume. We have different types of constraints: -* _relation_ constraints: +- _relation_ constraints: - * the author of the book must be _Stephen King_ - * the publication year must be greater than 1990 + - the author of the book must be _Stephen King_ + - the publication year must be greater than 1990 -* _set_ constraints: +- _set_ constraints: - * the genre must fall into the following set of genres: _Horror_, _Science fiction_, _Non-fiction_. + - the genre must fall into the following set of genres: _Horror_, _Science fiction_, _Non-fiction_. -* _range_ constraints: +- _range_ constraints: - * the average rating must be between 3.5 and 4.5 + - the average rating must be between 3.5 and 4.5 -* _distance_ constraints: +- _distance_ constraints: - * the nearest bookshop must be within a distance from a given location. + - the nearest bookshop must be within a distance from a given location. The class that implements the constraint concept is `Constraint` In the following, we show how to define them. @@ -43,14 +45,14 @@ There are several The types of relation constraints are: -* Equal: `==` -* Not Equal: `!=` -* Less than: `<` -* Less than or Equal: `<=` -* Greater than: `>` -* Greater than or Equal: `>=` +- Equal: `==` +- Not Equal: `!=` +- Less than: `<` +- Less than or Equal: `<=` +- Greater than: `>` +- Greater than or Equal: `>=` -**Examples**: using the attributes we used before: +**Examples**: using the attributes we used before: ``` python from aea.helpers.search.models import Constraint, ConstraintType @@ -80,9 +82,8 @@ The _set_ is a constraint type that allows you to restrict the values of the att There are two kind of _set_ constraints: -* In (a set of values): `in` -* Not in (a set of values): `not_in` - +- In (a set of values): `in` +- Not in (a set of values): `not_in` **Examples**: @@ -100,7 +101,6 @@ Constraint("year", ConstraintType("not_in", (1990, 1995, 2000))) The _range_ is a constraint type that allows you to restrict the values of the attribute in a given range. - **Examples**: ``` python @@ -139,12 +139,12 @@ close_to_tour_eiffel.check(Description({"position": colosseum})) # gives `False ## Constraint Expressions -The constraints above mentioned can be combined with the common logical operators (i.e. and, or and not), yielding more complex expression. +The constraints mentioned above can be combined with the common logical operators (i.e. and, or and not), yielding more complex expression. -In particular we can specify any conjunction/disjunction/negations of the previous constraints or composite `ConstraintExpressions`, e.g.: +In particular, we can specify any conjunction/disjunction/negations of the previous constraints or composite `ConstraintExpressions`, e.g.: -* books that belong to _Horror_ **and** has been published after 2000, but **not** published by _Stephen King_. -* books whose author is **either** _J. K. Rowling_ **or** _J. R. R. Tolkien_ +- books that belong to _Horror_ **and** has been published after 2000, but **not** published by _Stephen King_. +- books whose author is **either** _J. K. Rowling_ **or** _J. R. R. Tolkien_ The classes that implement these operators are `Not`, `And` and `Or`. @@ -211,7 +211,7 @@ Query([ Where `book_model` is the `DataModel` object. However, the data model is an optional parameter, but to avoid ambiguity is recommended to include it. -### The ``check`` method +### The ``check`` Method The `Query` class supports a way to check whether a `Description` matches with the query. This method is called `Query.check`. @@ -241,11 +241,10 @@ A `Query` object must satisfy some conditions in order to be instantiated. - For every constraint expression that constitute the query, check if they are _valid with respect to the data model_. - A `ConstraintExpr` `c` (that is, one of `And`, `Or`, `Not`, `Constraint`) is _valid with respect to a_ `DataModel` if: - If `c` is an instance of `And`, `Or` or `Not`, then - every subexpression of `c` must be valid (with respect to to the data model); + every subexpression of `c` must be valid (with respect to the data model); - If `c` is an instance of `Constraint`, then: - if the constraint type is one of `<`, `<=`, `>`, `>=`, the value in the constructor must be one of `str`, `int` or `float`. @@ -263,4 +262,3 @@ Constraint("foo", ConstraintType("==", True)) ``` Consider a `DataModel` where there is an `Attribute` `"foo"` of type `str`. Then the constraint is not compatible with the mentioned data model, because the constraint expect an equality comparison with a boolean `True`, instead of a `str`. - diff --git a/docs/questions-and-answers.md b/docs/questions-and-answers.md index aa1c7643a0..ffc810adbb 100644 --- a/docs/questions-and-answers.md +++ b/docs/questions-and-answers.md @@ -1,55 +1,46 @@ -
What is an AEA? -AEA stands for "Autonomous Economic Agent". An AEA can represent an individual, organisation or object and looks after its owner's interests. AEAs act independently of constant user input and autonomously execute actions to achieve their prescribed goals. Their purpose is to create economic value for their owners. -
- -
How do AEAs talk to each other when they do not know each other? -For an Autonomous Economic Agent (AEA) to talk to other AEAs, it first needs to find them. Once it does, it should ensure that they both use the same protocol for communication, and if so, they then have to send messages to each other. -

-The AEA framework, together with some of the services it provides, address all three problems. You can read more about search and discovery here, protocols here, and the Agent Communication Network (ACN) here. -
- -
How does an AEA use blockchain? -The AEA framework enables agents to interact with blockchains to settle transactions. Currently, the framework has native support for three different networks: Fetch.ai, Ethereum and Cosmos. -

-You can read more about the framework's integration with the different blockchains here and gain a high level overview here. -
- -
How does one install third party libraries? -The framework supports the use of third-party libraries hosted on PyPI. You can directly reference the external dependencies of an AEA package (e.g. skill) in its configuration file. From inside an AEA's project directory, the install command can be used to install all the dependencies of the AEA listed in the configuration files of any of it's packages. -
- -
How does one connect to a database? -You have two options to connect to a database: using the built-in storage solution or using a custom ORM (object-relational mapping) library and backend. -

-The use of the built-in storage is explained here. For a detailed example of how to use an ORM, follow the ORM guide. -
- -
How does one connect a frontend? -There are multiple options. The most obvious is using an HTTP server connection and creating a client that communicates with this connection. -

-You can find a more detailed discussion here. -
- -
Is the AEA framework ideal for agent-based modelling? -The goal of agent-based modelling (ABM) is to study the unknown (often complex) behaviour of systems comprised of agents with known (much simpler) behaviour. ABM is a popular technique for studying biological and social systems. Despite some similarities between ABM and the AEA framework, the two have fundamentally different goals. ABM's goal is not the design of agents or solving specific practical or engineering problems. Although it would be potentially possible, it would likely be inefficient to use the AEA framework for that kind of problem. -

-You can find more details on the application areas of the AEA framework here. -
- -
When a new AEA is created, is the vendor folder populated with some default packages? -All AEA projects by default hold the fetchai/default:1.1.6, fetchai/state_update:1.1.6 and fetchai/signing:1.1.6 protocols. These (as all other packages installed from the registry) are placed in the vendor folder. -

-You can find more details about the file structure here. -
- -
Is there a standardization for private key files? -Currently, the private keys are stored in .txt files. This is temporary and will be improved soon. -
- -
How to use the same protocol in different skills? -The details of envelope/message routing by the AEA framework are discussed in this guide. -
- -
Why does the AEA framework use its own package registry? -AEA packages could be described as personalized plugins for the AEA runtime. They are not like a library - they have no direct use outside the context of the framework - and therefore are not suitable for distribution via PyPI. -
+# Q&A + +??? question "What is an AEA?" + AEA stands for "Autonomous Economic Agent". An AEA can represent an individual, organisation or object and looks after its owner's interests. AEAs act independently of constant user input and autonomously execute actions to achieve their prescribed goals. Their purpose is to create economic value for their owners. + +??? question "How do AEAs talk to each other when they do not know each other?" + For an Autonomous Economic Agent (AEA) to talk to other AEAs, it first needs to find them. Once it does, it should ensure that they both use the same protocol for communication, and if so, they then have to send messages to each other. + + The AEA framework, together with some of the services it provides, address all three problems. You can read more about search and discovery here, protocols here, and the Agent Communication Network (ACN) here. + +??? question "How does an AEA use blockchain?" + The AEA framework enables agents to interact with blockchains to settle transactions. Currently, the framework has native support for three different networks: _Fetch.ai_, _Ethereum_ and _Cosmos_. + + You can read more about the framework's integration with the different blockchains here and gain a high level overview here. + +??? question "How does one install third party libraries?" + The framework supports the use of third-party libraries hosted on PyPI. You can directly reference the external dependencies of an AEA package (e.g. skill) in its configuration file. From inside an AEA's project directory, the `install` command can be used to install all the dependencies of the AEA which are listed in the configuration files belonging to any of its packages. + +??? question "How does one connect to a database?" + You have two options to connect to a database: using the built-in storage solution or using a custom ORM (object-relational mapping) library and backend. + + The use of the built-in storage is explained here. For a detailed example of how to use an ORM, follow the ORM guide. + +??? question "How does one connect a frontend?" + There are multiple options. The most obvious is using an HTTP server connection and creating a client that communicates with this connection. + + You can find a more detailed discussion here. + +??? question "Is the AEA framework ideal for agent-based modelling?" + The goal of agent-based modelling (ABM) is to study the unknown (often complex) behaviour of systems comprised of agents with known (much simpler) behaviour. ABM is a popular technique for studying biological and social systems. Despite some similarities between ABM and the AEA framework, the two have fundamentally different goals. ABM's goal is not the design of agents or solving specific practical or engineering problems. Although it would be potentially possible, it would likely be inefficient to use the AEA framework for that kind of problems. + + You can find more details on the application areas of the AEA framework here. + +??? question "When a new AEA is created, is the `vendor` folder populated with some default packages?" + All AEA projects by default hold the `fetchai/default:1.1.7`, `fetchai/state_update:1.1.7` and `fetchai/signing:1.1.7` protocols. These (as all other packages installed from the registry) are placed in the `vendor` folder. + + You can find more details about the file structure here. + +??? question "Is there a standardization for private key files?" + Currently, the private keys are stored in `.txt` files. This is temporary and will be improved soon. + +??? question "How to use the same protocol in different skills?" + The details of envelope/message routing by the AEA framework are discussed in this guide. + +??? question "Why does the AEA framework use its own package registry?" + AEA packages could be described as personalized plugins for the AEA runtime. They are not like a library - they have no direct use outside the context of the framework - and therefore are not suitable for distribution via PyPI. diff --git a/docs/quickstart.md b/docs/quickstart.md index 4931a1cfac..2f04bdb514 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -1,3 +1,5 @@ +# AEA Quick Start + If you want to create Autonomous Economic Agents (AEAs) that can act independently of constant user input and autonomously execute actions to achieve their objective, you can use the AEA framework. @@ -10,94 +12,80 @@ The AEA framework can be used on `Windows`, `Ubuntu/Debian` and `MacOS`. You need Python 3.6 or higher as well as Go 1.14.2 or higher installed. -​GCC installation is required: -* Ubuntu: `apt-get install gcc` -* Windows (with `choco` +GCC installation is required: + +- Ubuntu: `apt-get install gcc` +- Windows (with `choco` installed): `choco install mingw` -* MacOS X (with home brew): `brew install gcc` +- MacOS X (with home brew): `brew install gcc` -### Option 1: Manual system preparation +### Option 1: Manual System Preparation Install a compatible Python and Go version on your system (see this external resource for a comprehensive guide). -
Manual approach +??? note "Manual approach:" -The following hints can help: + The following hints can help: + + - To install Go, follow the official guide, depending on your platform here + - Python is already included by default on many Linux distributions (e.g. Ubuntu), as well as MacOS. To check you have the right version, open a terminal and run: -
    -
  • To install Go, follow the official guide, depending on your platform here
  • + ``` bash + python3 --version + ``` -
  • Python is already included by default on -many Linux distributions (e.g. Ubuntu), as well as MacOS. -To check you have the right version, open a terminal and run: -``` bash -python3 --version -``` -
  • + - To install Python on Windows machines, you can download a specific release here. + - Ubuntu/Debian systems only: install Python headers, depending on the Python version you have installed on your machine. E.g. for Python 3.7: -
  • To install Python on Windows machines, you can download a specific release here.
  • + ``` bash + sudo apt-get install python3.7-dev + ``` -
  • Ubuntu/Debian systems only: install Python headers, - depending on the Python version you have installed on your machine. - E.g. for Python 3.7: -``` bash -sudo apt-get install python3.7-dev -``` -
  • - -
  • Windows users: install tools for Visual Studio.
  • -
+ - Windows users: install tools for Visual Studio. -
- -### Option 2: Using an automated install script +### Option 2: Using an 'Automated Install' Script We provide a script to automatically install all framework dependencies and the framework itself. This means that if you follow this option, you can skip the installation step that comes later on this page. -
Automated install script approach +??? note "The 'Automated install' script approach:" + On macOS or Ubuntu run the following commands to download and install: -On MacOS or Ubuntu run the following commands to download and install: + ``` bash + curl https://raw.githubusercontent.com/fetchai/agents-aea/main/scripts/install.sh --output install.sh + chmod +x install.sh + ./install.sh + ``` -``` bash -curl https://raw.githubusercontent.com/fetchai/agents-aea/main/scripts/install.sh --output install.sh -chmod +x install.sh -./install.sh -``` - -On Windows: download https://raw.githubusercontent.com/fetchai/agents-aea/main/scripts/install.ps1, then run install.ps1 with the PowerShell terminal. - -
+ On Windows: download https://raw.githubusercontent.com/fetchai/agents-aea/main/scripts/install.ps1, then run install.ps1 with the PowerShell terminal. ### Option 3: Using Docker + ​ We also provide a Docker image with all the needed dependencies. -
Docker approach - -To use the image you will first have to pull it and than run it with your current local directory mounted as a docker volume. This allows you to keep your agents local while working on them from within the docker container. - -To pull: - -``` bash -docker pull fetchai/aea-user:latest -``` +??? note "Docker approach:" + To use the image, you will first have to pull it, then run it with your current local directory mounted as a docker volume. This allows you to keep your agents local while working on them from within the docker container. -To run the image on Linux and MacOs: + To pull: -``` bash -docker run -it -v $(pwd):/agents --workdir=/agents fetchai/aea-user:latest -``` + ``` bash + docker pull fetchai/aea-user:latest + ``` + + To run the image on Linux and MacOs: -And on Windows: + ``` bash + docker run -it -v $(pwd):/agents --workdir=/agents fetchai/aea-user:latest + ``` -``` bash -docker run -it -v %cd%:/agents --workdir=/agents fetchai/aea-user:latest -``` + And on Windows: -Once successfully logged into the docker container, -you can follow the rest of the guide the same way as if not using docker. -​ -
+ ``` bash + docker run -it -v %cd%:/agents --workdir=/agents fetchai/aea-user:latest + ``` + + Once successfully logged into the docker container, + you can follow the rest of the guide the same way as if not using docker. ## Preliminaries @@ -125,32 +113,34 @@ Once installed, create a new environment and open it (here we use Python 3.7 but touch Pipfile && pipenv --python 3.7 && pipenv shell ``` - ## Installation -The following installs the entire AEA package which also includes a command-line interface (CLI). (You can skip this step if you used the install script above: Option 2 .) +The following installs the entire AEA package which also includes a command-line interface (CLI). (You can skip this step if you used the 'install script' above: Option 2 .) ``` bash pip install aea[all] ``` If you are using `zsh` rather than `bash` type + ``` zsh pip install 'aea[all]' ``` If the installation steps fail, it might be a dependency issue. Make sure you have followed all the relevant system specific steps above under `System Requirements`. -## Setup author name +## Setup Author Name You can set up your author name using the `init` command: + ``` bash aea init ``` -## Register as an AEA author (optional) +## Register as an AEA Author (optional) + +AEAs are composed of components. AEAs and AEA components can be developed by anyone and pushed to the AEA registry for others to use. To publish packages to the registry, we need to register an author name: -AEAs are composed from components. AEAs and AEA components can be developed by anyone and pushed to the AEA registry for others to use. To publish packages to the registry, we need to register an author name: ``` bash aea register ``` @@ -158,6 +148,7 @@ aea register This is your unique author (or developer) name in the AEA ecosystem. You should see a similar output (with your input instead of the sample username and email): + ``` bash Do you have a Registry account? [y/N]: n Create a new account on the Registry now: @@ -172,66 +163,66 @@ Confirm password: / ___ \ | |___ / ___ \ /_/ \_\|_____|/_/ \_\ -v1.2.4 +v1.2.5 AEA configurations successfully initialized: {'author': 'fetchai'} ``` -
-

Note

-

If you would rather not create an account on the registry at this point, then run aea init --local instead.

-
+!!! note + If you would rather not create an account on the registry at this point, then run `aea init --local` instead. -## Echo skill demo +## Echo Skill Demo -This is a simple demo that introduces you to the main components of an AEA. +This is a simple demo that introduces you to the main components of an AEA. The fastest way to have your first AEA is to fetch one that already exists! ``` bash -aea fetch fetchai/my_first_aea:0.28.4 +aea fetch fetchai/my_first_aea:0.28.5 cd my_first_aea ``` To learn more about the folder structure of an AEA project read on here. -
Alternatively: step by step install +??? note "Alternatively: step by step install:" + **Create a new AEA** - Create a new AEA -
-First, create a new AEA project and enter it. -``` bash -aea create my_first_aea -cd my_first_aea -``` -
-Add the stub connection -
-Second, add the stub connection to the project. -``` bash -aea add connection fetchai/stub:0.21.2 -``` -
-Add the echo skill -
-Third, add the echo skill to the project. -``` bash -aea add skill fetchai/echo:0.20.5 -``` -This copies the fetchai/echo:0.20.5 skill code containing the "behaviours", and "handlers" into the project, ready to run. The identifier of the skill fetchai/echo:0.20.5 consists of the name of the author of the skill, followed by the skill name and its version. -
+ First, create a new AEA project and enter it. + + ``` bash + aea create my_first_aea + cd my_first_aea + ``` + + **Add the stub connection** + + Second, add the stub connection to the project. + + ``` bash + aea add connection fetchai/stub:0.21.3 + ``` + + **Add the echo skill** + + Third, add the echo skill to the project. + + ``` bash + aea add skill fetchai/echo:0.20.6 + ``` + + This copies the fetchai/echo:0.20.6 skill code containing the "behaviours", and "handlers" into the project, ready to run. The identifier of the skill fetchai/echo:0.20.6 consists of the name of the author of the skill, followed by the skill name and its version. -### Echo skill +### Echo Skill Just like humans, AEAs can have _skills_ to achieve their tasks. As an agent developer, you can create skills to add to your own AEAs. You can also choose to publish your skills so others add them to their AEAs. More details on skills can be found on this page . The above agent has an echo skill, fetched from the registry, which simply echoes any messages it receives back to its sender. -### Communication via envelopes and messages +### Communication via Envelopes and Messages AEAs use envelopes containing messages for communication. To learn more, check out the next section. -### Stub connection +### Stub Connection Besides skills, AEAs may have one or more _connections_ enabling them to interface with entities in the outside world. For example, an HTTP client connection allows an AEA to communicate with HTTP servers. To read more about connections see this page. @@ -253,13 +244,13 @@ For example: recipient_aea,sender_aea,fetchai/default:1.0.0,\x08\x01\x12\x011*\x07\n\x05hello, ``` -### Install AEA dependencies +### Install AEA Dependencies ``` bash aea install ``` -### Add and create a private key +### Add and Create a Private Key All AEAs need a private key to run. Add one now: @@ -299,7 +290,7 @@ info: Echo Behaviour: act method called. The framework first calls the `setup` methods in the skill's `Handler` and `Behaviour` classes in that order; after which it repeatedly calls the `act` method of `Behaviour` class. This is the main agent loop in action. -#### Add a message to the input file +#### Add a Message to the Input File You can send the AEA a message wrapped in an envelope using the CLI's `interact` command. @@ -310,7 +301,7 @@ cd my_first_aea aea interact ``` -You can now send messages to this AEA via an interactive tool by typing anything into the prompt and hitting enter twice (once to send the message and once more to check for a response). +You can now send messages to this AEA via an interactive tool by typing anything into the prompt and hitting enter twice (once to send the message and once more to check for a response). Let us send `hello` to this AEA (type `hello` and press enter twice). In the original terminal, you will see the `Echo Handler` dealing with this envelope and its contained message. You should see an output similar to the one below but with a different `dialogue_reference`. @@ -321,26 +312,23 @@ info: Echo Behaviour: act method called. info: Echo Behaviour: act method called. ``` -
Manual approach +??? note "Manual approach:" + Optionally, from a different terminal and same directory (i.e. the `my_first_aea` project), you can send the AEA a message wrapped in an envelope via the input file. -Optionally, from a different terminal and same directory (i.e. the my_first_aea project), you can send the AEA a message wrapped in an envelope via the input file. - -``` bash -echo 'my_first_aea,sender_aea,fetchai/default:1.0.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello,' >> input_file -``` - -You will see the Echo Handler dealing with the envelope and responding with the same message to the output_file, and also decoding the Base64 encrypted message in this case. - -``` bash -info: Echo Behaviour: act method called. -Echo Handler: message=Message(sender=sender_aea,to=my_first_aea,content=b'hello',dialogue_reference=('1', ''),message_id=1,performative=bytes,target=0), sender=sender_aea -info: Echo Behaviour: act method called. -info: Echo Behaviour: act method called. -``` + ``` bash + echo 'my_first_aea,sender_aea,fetchai/default:1.0.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello,' >> input_file + ``` -Note, due to the dialogue reference having to be incremented, you can only send the above envelope once! This approach does not work in conjunction with the aea interact command. + You will see the Echo Handler dealing with the envelope and responding with the same message to the output_file, and also decoding the Base64 encrypted message in this case. -
+ ``` bash + info: Echo Behaviour: act method called. + Echo Handler: message=Message(sender=sender_aea,to=my_first_aea,content=b'hello',dialogue_reference=('1', ''),message_id=1,performative=bytes,target=0), sender=sender_aea + info: Echo Behaviour: act method called. + info: Echo Behaviour: act method called. + ``` + + Note, due to the dialogue reference having to be incremented, you can only send the above envelope once! This approach does not work in conjunction with the aea interact command. ### Stop the AEA @@ -357,103 +345,100 @@ info: Echo Handler: teardown method called. info: Echo Behaviour: teardown method called. ``` -### Write a test for the AEA +### Write a Test for the AEA We can write an end-to-end test for the AEA utilising helper classes provided by the framework. -
Writing tests - -The following test class replicates the preceding demo and tests it's correct behaviour. The AEATestCase classes are a tool for AEA developers to write useful end-to-end tests of their AEAs. - -First, get the packages directory from the AEA repository (execute from the working directory which contains the my_first_aea folder): - -``` bash -svn export https://github.com/fetchai/agents-aea.git/trunk/packages -``` - -Then write the test: - -``` python -import signal -import time - -from aea.common import Address -from aea.mail.base import Envelope -from aea.protocols.base import Message -from aea.protocols.dialogue.base import Dialogue - -from packages.fetchai.protocols.default.dialogues import DefaultDialogue, DefaultDialogues -from packages.fetchai.protocols.default.message import DefaultMessage -from packages.fetchai.protocols.default.serialization import DefaultSerializer -from aea.test_tools.test_cases import AEATestCase - - -class TestEchoSkill(AEATestCase): - """Test that echo skill works.""" - - def test_echo(self): - """Run the echo skill sequence.""" - process = self.run_agent() - is_running = self.is_running(process) - assert is_running, "AEA not running within timeout!" - - # add sending and receiving envelope from input/output files - sender_aea = "sender_aea" - def role_from_first_message( - message: Message, receiver_address: Address - ) -> Dialogue.Role: - return DefaultDialogue.Role.AGENT - dialogues = DefaultDialogues(sender_aea, role_from_first_message) - message_content = b"hello" - message = DefaultMessage( - performative=DefaultMessage.Performative.BYTES, - dialogue_reference=dialogues.new_self_initiated_dialogue_reference(), - content=message_content, - ) - sent_envelope = Envelope( - to=self.agent_name, - sender=sender_aea, - protocol_id=message.protocol_id, - message=DefaultSerializer().encode(message), - ) - - self.send_envelope_to_agent(sent_envelope, self.agent_name) - - time.sleep(2.0) - received_envelope = self.read_envelope_from_agent(self.agent_name) - - assert sent_envelope.to == received_envelope.sender - assert sent_envelope.sender == received_envelope.to - assert sent_envelope.protocol_id == received_envelope.protocol_id - received_message = DefaultMessage.serializer.decode(received_envelope.message) - assert message.content == received_message.content - - check_strings = ( - "Echo Handler: setup method called.", - "Echo Behaviour: setup method called.", - "Echo Behaviour: act method called.", - "content={}".format(message_content), - ) - missing_strings = self.missing_from_output(process, check_strings) - assert ( - missing_strings == [] - ), "Strings {} didn't appear in agent output.".format(missing_strings) - - assert ( - self.is_successfully_terminated() - ), "Echo agent wasn't successfully terminated." - -``` - -Place the above code into a file test.py in your AEA project directory (the same level as the aea-config.yaml file). - -To run, execute the following: - -``` bash -pytest test.py -``` - -
+??? note "Writing tests:" + The following test class replicates the preceding demo and tests its correct behaviour. The `AEATestCase` classes are a tool for AEA developers to write useful end-to-end tests of their AEAs. + + First, get the `packages` directory from the AEA repository (execute from the working directory which contains the my_first_aea folder): + + ``` bash + svn export https://github.com/fetchai/agents-aea.git/trunk/packages + ``` + + Then write the test: + + ``` python + import signal + import time + + from aea.common import Address + from aea.mail.base import Envelope + from aea.protocols.base import Message + from aea.protocols.dialogue.base import Dialogue + + from packages.fetchai.protocols.default.dialogues import DefaultDialogue, DefaultDialogues + from packages.fetchai.protocols.default.message import DefaultMessage + from packages.fetchai.protocols.default.serialization import DefaultSerializer + from aea.test_tools.test_cases import AEATestCase + + + class TestEchoSkill(AEATestCase): + """Test that echo skill works.""" + + def test_echo(self): + """Run the echo skill sequence.""" + process = self.run_agent() + is_running = self.is_running(process) + assert is_running, "AEA not running within timeout!" + + # add sending and receiving envelope from input/output files + sender_aea = "sender_aea" + def role_from_first_message( + message: Message, receiver_address: Address + ) -> Dialogue.Role: + return DefaultDialogue.Role.AGENT + dialogues = DefaultDialogues(sender_aea, role_from_first_message) + message_content = b"hello" + message = DefaultMessage( + performative=DefaultMessage.Performative.BYTES, + dialogue_reference=dialogues.new_self_initiated_dialogue_reference(), + content=message_content, + ) + sent_envelope = Envelope( + to=self.agent_name, + sender=sender_aea, + protocol_id=message.protocol_id, + message=DefaultSerializer().encode(message), + ) + + self.send_envelope_to_agent(sent_envelope, self.agent_name) + + time.sleep(2.0) + received_envelope = self.read_envelope_from_agent(self.agent_name) + + assert sent_envelope.to == received_envelope.sender + assert sent_envelope.sender == received_envelope.to + assert sent_envelope.protocol_id == received_envelope.protocol_id + received_message = DefaultMessage.serializer.decode(received_envelope.message) + assert message.content == received_message.content + + check_strings = ( + "Echo Handler: setup method called.", + "Echo Behaviour: setup method called.", + "Echo Behaviour: act method called.", + "content={}".format(message_content), + ) + missing_strings = self.missing_from_output(process, check_strings) + assert ( + missing_strings == [] + ), "Strings {} didn't appear in agent output.".format(missing_strings) + + assert ( + self.is_successfully_terminated() + ), "Echo agent wasn't successfully terminated." + + ``` + + Place the above code into a file test.py in your AEA project directory (the same level as the aea-config.yaml file). + + To run, execute the following: + + ``` bash + pytest test.py + ``` ### Delete the AEA @@ -463,16 +448,14 @@ Delete the AEA from the parent directory (`cd ..` to go to the parent directory) aea delete my_first_aea ``` -## Next steps +## Next Steps To gain an understanding of the core components of the framework, please continue to the next page: - Core components - Part 1 -For more demos, use cases or step by step guides, please check the following: +For more demos, use cases or step-by-step guides, please check the following: - Generic skill use case - Weather skill demo - Generic step by step guide - -
diff --git a/docs/raspberry-set-up.md b/docs/raspberry-set-up.md index d90033dc8c..19b00bcbfd 100644 --- a/docs/raspberry-set-up.md +++ b/docs/raspberry-set-up.md @@ -1,9 +1,11 @@ +# Build an AEA on a Raspberry Pi + This guide explains how to run an AEA inside a Raspberry Pi. ## Prerequisites -* Raspberry Pi 4 (You can also use Raspberry Pi3 b or Raspberry Pi3 b+) -* Internet connection (preferably wireless to minimise the number of wires connecting into your device) +- Raspberry Pi 4 (You can also use Raspberry Pi3 b or Raspberry Pi3 b+) +- Internet connection (preferably wireless to minimise the number of wires connecting into your device) ## Preparing the Raspberry Pi @@ -20,7 +22,7 @@ First download the tool from this guide to set up your SD card. When you get to the step of choosing an operating system, select the downloaded and unzipped AEA Raspberry Pi Image (`AEA_RPI.IMG`), or for a manual installation, select the latest Raspberry Pi OS. -Once you have set up your SD card, plug it into your Raspberry Pi, connect the power and boot up. +Once you have set up your SD card, plug it into your Raspberry Pi, connect the power and boot up. ## Booting up with the AEA Raspberry Pi Image @@ -28,13 +30,13 @@ After booting up, you may be prompted to log in as the `aea` user and the passwo Next, navigate to settings menu to set up your internet connection. Your Raspberry Pi is now ready to run an AEA! You can find some preloaded demos in the folder `~/aea/demos`. -To run these demos, navigate to one of the subfolders and enter `aea run`. +To run these demos, navigate to one of the sub-folders and enter `aea run`. -## Booting up with the Raspberry Pi OS for manual installation +## Booting up with the Raspberry Pi OS for Manual Installation -When you first boot your Raspberry Pi, you will be prompted to enter a password for the Raspberry Pi and your WiFi password so the device can access the internet. You may also be given the option to update the operating system and software. We recommend that you let the system update. Once finished you will be prompted to restart. +When you first boot your Raspberry Pi, you will be prompted to enter a password for the Raspberry Pi and your Wi-Fi password so the device can access the internet. You may also be given the option to update the operating system and software. We recommend that you let the system update. Once finished you will be prompted to restart. -Even if your Raspberry Pi updated itself, we recommend that you make sure it is completely up to date using the terminal. Open a Terminal window (your Raspberry Pi might restart a few times during this process): +Even if your Raspberry Pi updated itself, we recommend that you make sure it is completely up-to-date using the terminal. Open a Terminal window (your Raspberry Pi might restart a few times during this process): ``` bash sudo apt update -y @@ -42,62 +44,65 @@ sudo apt-get update sudo apt-get dist-upgrade ``` -## Install common dependencies +## Install Common Dependencies ``` bash sudo apt install cmake golang -y ``` -## Install less common dependencies (optional) +## Install Less Common Dependencies (optional) For some of the more advanced AEAs that make use of SciPy, such as the Car Park Detector, you will need some additional dependencies. -
Install additional dependencies with the enclosed steps -

+??? note "Install additional dependencies with the enclosed steps:" -Install additional dependencies -``` bash -sudo apt install gfortran libatlas-base-dev libopenblas-dev -y -``` + Install additional dependencies -Increase the swap space for the SciPy installation: -``` bash -sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 -sudo /sbin/mkswap /var/swap.1 -sudo chmod 600 /var/swap.1 -sudo /sbin/swapon /var/swap.1 -``` + ``` bash + sudo apt install gfortran libatlas-base-dev libopenblas-dev -y + ``` -Install NumPy and scikit-image (including SciPy) -``` bash -pip install numpy --upgrade -pip install scikit-image -``` + Increase the swap space for the SciPy installation: -Revert to default swap space -``` bash -sudo swapoff /var/swap.1 -sudo rm /var/swap.1 -``` + ``` bash + sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 + sudo /sbin/mkswap /var/swap.1 + sudo chmod 600 /var/swap.1 + sudo /sbin/swapon /var/swap.1 + ``` + + Install NumPy and scikit-image (including SciPy) + + ``` bash + pip install numpy --upgrade + pip install scikit-image + ``` -

-
+ Revert to default swap space + + ``` bash + sudo swapoff /var/swap.1 + sudo rm /var/swap.1 + ``` ## Install the AEA Framework -Add to the local `PATH` environment variable (this will happen automatically the next time you login): +Add to the local `PATH` environment variable (this will happen automatically the next time you log in): + ``` bash export PATH="$HOME/.local/bin:$PATH" ``` Finally, install the AEA framework from PyPI: + ``` bash pip install aea[all] ``` Check to make sure installation was successful: + ``` bash aea --version ``` -Your Raspberry Pi is now ready to run an AEA! \ No newline at end of file +Your Raspberry Pi is now ready to run an AEA! diff --git a/docs/runtime-cost.md b/docs/runtime-cost.md index 751df8fbdb..a9b6f6affe 100644 --- a/docs/runtime-cost.md +++ b/docs/runtime-cost.md @@ -1,13 +1,15 @@ +# Profiling -## Measuring runtime cost +## Measuring Runtime Cost It is important to emphasise the fact that the AEA is a framework, so ultimately its running cost will highly depend on the number and type of components which are being run as part of a given AEA. The other cost factor is determined by the cost of running the core framework itself and how fast and efficient the framework is in interconnecting the components. These observations can provide guidance on what to report as part of the cost of running an AEA. Here is a list of suggestion on how to measure the cost of running an AEA: + - the cost of running the framework itself: by running a minimal agent with an idle loop (the default one) with no connections, skills or protocols and measuring memory usage and CPU consumption as a baseline. -- the cost of interconnecting components: by running an a agent with a basic skill (e.g. `fetchai/echo`) and measuring memory usage and CPU consumption relative to number of messages exchanged as well as bandwidth. +- the cost of interconnecting components: by running an agent with a basic skill (e.g. `fetchai/echo`) and measuring memory usage and CPU consumption relative to number of messages exchanged as well as bandwidth. - the cost of basic components: dialogues memory relative to number of messages, SOEF connection baseline memory usage, P2P connection baseline memory usage, smart contract baseline memory usage The `aea run --profiling SECONDS` command can be used to report measures in all of the above scenarios. diff --git a/docs/scaffolding.md b/docs/scaffolding.md index 0165340fe1..2f1f163126 100644 --- a/docs/scaffolding.md +++ b/docs/scaffolding.md @@ -1,4 +1,6 @@ -## Scaffold generator +# Scaffolding Packages + +## Scaffold Generator The scaffold generator builds out the directory structure required when adding new skills, protocols, contracts and connections to the AEA. @@ -11,28 +13,25 @@ cd my_aea Then, enter into your project directory and scaffold your project skill, protocol, or connection. - -### Scaffold a skill +### Scaffold a Skill ``` bash aea scaffold skill my_skill ``` - -### Scaffold a protocol +### Scaffold a Protocol ``` bash aea scaffold protocol my_protocol ``` - -### Scaffold a contract +### Scaffold a Contract ``` bash aea scaffold contract my_contract ``` -### Scaffold a connection +### Scaffold a Connection ``` bash aea scaffold connection my_connection @@ -47,5 +46,3 @@ aea fingerprint [package_name] [public_id] ``` Then you are ready to run the AEA. - -
\ No newline at end of file diff --git a/docs/security.md b/docs/security.md index 23e15b24f0..ceebff2bd0 100644 --- a/docs/security.md +++ b/docs/security.md @@ -1,3 +1,4 @@ +# Security The AEA framework takes every care to follow best practice around security. @@ -11,4 +12,4 @@ The following advice will help you when writing your own code: - Try to avoid using the `pickle` module. Pickle should never be used for agent-to-agent communication protocols. -- By design, the framework prevents skill code from accessing private keys directly, as they are not reachable from the skill execution context through attribute getters. However, if the flag `-p` or the option `--password` are not used when generating private keys for an AEA project via the aea CLI tool, the private keys will be stored in plaintext. This allows the skills to access them via interaction with the OS file system. We recommend to always specify a password to encrypt private keys by using the flag argument. \ No newline at end of file +- By design, the framework prevents skill code from accessing private keys directly, as they are not reachable from the skill execution context through attribute getters. However, if the flag `-p` or the option `--password` are not used when generating private keys for an AEA project via the aea CLI tool, the private keys will be stored in plaintext. This allows the skills to access them via interaction with the OS file system. We recommend to always specify a password to encrypt private keys by using the flag argument. diff --git a/docs/simple-oef-usage.md b/docs/simple-oef-usage.md index 3de8a60624..eb3203293a 100644 --- a/docs/simple-oef-usage.md +++ b/docs/simple-oef-usage.md @@ -1,14 +1,19 @@ +# SOEF Connection + You can use the SOEF in the agent framework by using the SOEF connection as a package in your agent project. -## Add the SOEF package -Check out the CLI guide on details how to add a connection. You will want to add the `fetchai/soef:0.27.5` connection package. +## Add the SOEF Package + +Check out the CLI guide on details how to add a connection. You will want to add the `fetchai/soef:0.27.6` connection package. + +## Register your Agent and its Services -## Register your agent and its services +### Register Agent Location -### Register agent location To register your agent's location, you have to send a message in the `fetchai/oef_search:1.0.0` protocol to the SOEF connection. First, define a data model for location data: + ``` python from aea.helpers.search.models import Attribute, DataModel, Location @@ -18,9 +23,11 @@ AGENT_LOCATION_MODEL = DataModel( "A data model to describe location of an agent.", ) ``` + It is important to use this exact data model, as the SOEF connection can only process specific data models. Second, create a location object: + ``` python from aea.helpers.search.models import Location @@ -28,6 +35,7 @@ agent_location = Location(52.2057092, 2.1183431) ``` Third, construct a service description instance with location and data model: + ``` python from aea.helpers.search.models import Description @@ -38,6 +46,7 @@ service_description = Description( ``` Finally, construct a message and send it: + ``` python from packages.fetchai.protocols.oef_search.message import OefSearchMessage @@ -51,9 +60,10 @@ In case everything is registered OK, you will not receive any message back. If something goes wrong you will receive an error message with performative `OefSearchMessage.Performative.OEF_ERROR`. -### Register personality pieces +### Register Personality Pieces To register personality pieces, you have to use a specific data model: + ``` python from aea.helpers.search.models import Attribute, DataModel, Location @@ -68,6 +78,7 @@ AGENT_PERSONALITY_MODEL = DataModel( ``` An example follows: + ``` python service_instance = {"piece": "genus", "value": "service"} service_description = Description( @@ -75,9 +86,10 @@ service_description = Description( ) ``` -### Register services +### Register Services To set some service key and value you have to use a specific data model: + ``` python SET_SERVICE_KEY_MODEL = DataModel( "set_service_key", @@ -90,6 +102,7 @@ SET_SERVICE_KEY_MODEL = DataModel( ``` An example follows: + ``` python service_instance = {"key": "test", "value": "test"} service_description = Description( @@ -97,9 +110,10 @@ service_description = Description( ) ``` -### Remove service key +### Remove Service Key To remove service key have to use a specific data model: + ``` python REMOVE_SERVICE_KEY_MODEL = DataModel( "remove_service_key", @@ -109,6 +123,7 @@ REMOVE_SERVICE_KEY_MODEL = DataModel( ``` An example follows: + ``` python service_instance = {"key": "test"} service_description = Description( @@ -116,16 +131,15 @@ service_description = Description( ) ``` -
-

Note

-

Currently, the soef does not allow for multiple registrations to be combined into a single command. -

+!!! note + Currently, the soef does not allow for multiple registrations to be combined into a single command. -## Perform a search +## Perform a Search To perform a search for services registered you have to define a search query consisting of constraints. The location constraints is required, personality pieces or services keys constraints are optional. An example follows: + ``` python from aea.helpers.search.models import ( Constraint, @@ -159,11 +173,12 @@ message = OefSearchMessage( ) ``` -In case of error you will received a message with `OefSearchMessage.Performative.OEF_ERROR`. In case of successful search you will receive a message with performative `OefSearchMessage.Performative.SEARCH_RESULT` and the list of matched agents addresses. +In case of error, you will receive a message with `OefSearchMessage.Performative.OEF_ERROR`. In case of successful search you will receive a message with performative `OefSearchMessage.Performative.SEARCH_RESULT` and the list of matched agents addresses. -## Generic command +## Generic Command To send a generic command request to the SOEF use the following (here on the example of setting a declared name): + ``` python import urllib @@ -188,4 +203,4 @@ message = OefSearchMessage( performative=OefSearchMessage.Performative.REGISTER_SERVICE, service_description=service_description, ) -``` \ No newline at end of file +``` diff --git a/docs/skill-guide.md b/docs/skill-guide.md index 5ac8235190..6b5834def7 100644 --- a/docs/skill-guide.md +++ b/docs/skill-guide.md @@ -1,3 +1,5 @@ +# Build your First Skill - Search & Discovery + This guide will take you through the development of your first skill. It will teach you, how to connect the AEA to the digital world, register the AEA and search for other AEAs. Although one can imagine scenarios where a single AEA pursues its goals in isolation without interacting with other AEAs, there is no doubt that by working together, AEAs can achieve much more. To do so, an AEA must be seen and found by other AEAs so that they can trade and do other useful things. Fetch.ai’s search-and-discovery mechanism, the simple OEF (or SOEF, for short) lets your agents register, be discovered, and find other agents. You can then negotiate using the AEA framework’s peer-to-peer network (ACN) and trade. This guide covers getting your AEA connected to the SOEF, and describing your AEA to make itself visible. @@ -10,8 +12,6 @@ The more you describe your AEA, the easier it is for others to find it using spe Follow the Preliminaries and Installation sections from the AEA quick start. - - ## Step 1: Setup We will first create an AEA and add a scaffold skill, which we call `my_search`. @@ -118,10 +118,8 @@ Searches are proactive and, as such, well placed in a -

Note

-

Note that the import paths to agent packages, for example packages.fetchai.skills.my_search.dialogues above, are not actual paths. Package files always reside in your AEA's folder, either under a specific package directory (e.g. connection, protocol, skill) if the package is custom built, or under vendor if it is pulled from the registry. These paths are virtual and created automatically when an AEA is run. See this page for more details.

- +!!! note + The import paths to agent packages, for example `packages.fetchai.skills.my_search.dialogues` above, are not actual paths. Package files always reside in your AEA's folder, either under a specific package directory (e.g. connection, protocol, skill) if the package is custom-built, or under `vendor` if it is pulled from the registry. These paths are virtual and created automatically when an AEA is run. See this page for more details. ## Step 3: Develop a Handler @@ -264,7 +262,7 @@ class MySearchHandler(Handler): ) ``` -We create a handler which is registered for the `oef_search` protocol. Whenever it receives a search result, we log the number of agents returned in the search - the agents matching the search query - and update the counter of received searches. +We create a handler which is registered for the `oef_search` protocol. Whenever it receives a search result, we log the number of agents returned by the search - the agents matching the search query - and update the counter of received searches. We also implement a trivial check on the difference between the amount of search requests sent and responses received. @@ -274,7 +272,7 @@ Also note, how we have access to other objects in the skill via `self.context`, We place this code in `my_aea/skills/my_search/handlers.py`. Ensure you replace the `fetchai` author in this line `from packages.fetchai.skills.my_search.dialogues import (` with your author handle (run `aea init` to set or check the author name). -## Step 4: Add dialogues model +## Step 4: Add Dialogues Model We have implemented a behaviour and a handler. We now implement a `Model`, in particular we implement the `Dialogue` and `Dialogues` classes. These ensure that the message flow satisfies the `fetchai/oef_search:1.0.0` protocol and keep track of the individual messages being sent and received. @@ -326,7 +324,7 @@ class OefSearchDialogues(Model, BaseOefSearchDialogues): We add this code in the file `my_aea/skills/my_search/my_model.py`, replacing its original content. We then rename `my_aea/skills/my_search/my_model.py` to `my_aea/skills/my_search/dialogues.py`. -## Step 5: Create the configuration file +## Step 5: Create the Configuration File Based on our skill components above, we create the following configuration file. @@ -343,7 +341,7 @@ fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/oef_search:1.1.6 +- fetchai/oef_search:1.1.7 skills: [] behaviours: my_search_behaviour: @@ -408,688 +406,698 @@ from aea.configurations.base import PublicId PUBLIC_ID = PublicId.from_str("fetchai/my_search:0.1.0") ``` + Again, ensure the author field matches your own. -## Step 6: Update fingerprint +## Step 6: Update Fingerprint To run an AEA with new or modified code, you need to update the fingerprint of the new/modified components. In this case, we need to fingerprint our skill: + ``` bash aea fingerprint skill fetchai/my_search:0.1.0 ``` + Ensure, you use the correct author name to reference your skill (here we use `fetchai` as the author.) -## Step 7: Add the OEF protocol and connection +## Step 7: Add the OEF Protocol and Connection Our AEA does not have the OEF protocol yet so let's add it. + ``` bash -aea add protocol fetchai/oef_search:1.1.6 +aea add protocol fetchai/oef_search:1.1.7 ``` This adds the protocol to our AEA and makes it available on the path `packages.fetchai.protocols...`. At this point we need to add the SOEF and P2P connections to allow the AEA to communicate with the SOEF node and other AEAs, install the AEA's dependencies, and configure the AEA: + ``` bash -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/p2p_libp2p:0.27.4 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/p2p_libp2p:0.27.5 aea install aea build -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' ``` The last command will ensure that search requests are processed by the correct connection. -## Step 8: Run a service provider AEA +## Step 8: Run a Service Provider AEA -In order for this AEA to find another AEA when searching, the second AEA (let's call it the service provider AEA) must exist and have been registered with the SOEF. +In order for this AEA to find another AEA when searching, the second AEA (let's call it the service provider AEA) must exist and have been registered with the SOEF. From a different terminal window, we fetch a finished service provider AEA and install its Python dependencies: + ``` bash -aea fetch fetchai/simple_service_registration:0.32.4 && cd simple_service_registration && aea install && aea build +aea fetch fetchai/simple_service_registration:0.32.5 && cd simple_service_registration && aea install && aea build ``` This AEA will simply register a location service on the SOEF search node so we can search for it. We first create the private key for the service provider AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` Then we run the AEA: + ``` bash aea run ``` -Once you see a message of the form `To join its network use multiaddr: ['SOME_ADDRESS']` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the `simple_service_registration` (service provider) AEA. - -
Click here to see full code and guide for this AEA -

- -We use a TickerBehaviour to update the service registration at regular intervals. The following code is placed in behaviours.py. - -``` python -from typing import Any, Optional, cast - -from aea.helpers.search.models import Description -from aea.skills.behaviours import TickerBehaviour - -from packages.fetchai.protocols.oef_search.message import OefSearchMessage -from packages.fetchai.skills.simple_service_registration.dialogues import ( - OefSearchDialogues, -) -from packages.fetchai.skills.simple_service_registration.strategy import Strategy - - -DEFAULT_MAX_SOEF_REGISTRATION_RETRIES = 5 -DEFAULT_SERVICES_INTERVAL = 30.0 - - -class ServiceRegistrationBehaviour(TickerBehaviour): - """This class implements a behaviour.""" - - def __init__(self, **kwargs: Any) -> None: - """Initialise the behaviour.""" - services_interval = kwargs.pop( - "services_interval", DEFAULT_SERVICES_INTERVAL - ) # type: int - self._max_soef_registration_retries = kwargs.pop( - "max_soef_registration_retries", DEFAULT_MAX_SOEF_REGISTRATION_RETRIES - ) # type: int - super().__init__(tick_interval=services_interval, **kwargs) - - self.failed_registration_msg = None # type: Optional[OefSearchMessage] - self._nb_retries = 0 - - def setup(self) -> None: - """ - Implement the setup. - - :return: None - """ - self._register_agent() - - def act(self) -> None: - """ - Implement the act. - - :return: None - """ - self._retry_failed_registration() - - def teardown(self) -> None: - """ - Implement the task teardown. - - :return: None - """ - self._unregister_service() - self._unregister_agent() - - def _retry_failed_registration(self) -> None: - """ - Retry a failed registration. - - :return: None - """ - if self.failed_registration_msg is not None: - self._nb_retries += 1 - if self._nb_retries > self._max_soef_registration_retries: - self.context.is_active = False - return - +Once you see a message of the form `To join its network use multiaddr: ['SOME_ADDRESS']` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the `simple_service_registration` (service provider) AEA. + +??? note "Click here to see full code and guide for this AEA:" + We use a `TickerBehaviour` to update the service registration at regular intervals. The following code is placed in `behaviours.py`. + + ``` python + from typing import Any, Optional, cast + + from aea.helpers.search.models import Description + from aea.skills.behaviours import TickerBehaviour + + from packages.fetchai.protocols.oef_search.message import OefSearchMessage + from packages.fetchai.skills.simple_service_registration.dialogues import ( + OefSearchDialogues, + ) + from packages.fetchai.skills.simple_service_registration.strategy import Strategy + + + DEFAULT_MAX_SOEF_REGISTRATION_RETRIES = 5 + DEFAULT_SERVICES_INTERVAL = 30.0 + + + class ServiceRegistrationBehaviour(TickerBehaviour): + """This class implements a behaviour.""" + + def __init__(self, **kwargs: Any) -> None: + """Initialise the behaviour.""" + services_interval = kwargs.pop( + "services_interval", DEFAULT_SERVICES_INTERVAL + ) # type: int + self._max_soef_registration_retries = kwargs.pop( + "max_soef_registration_retries", DEFAULT_MAX_SOEF_REGISTRATION_RETRIES + ) # type: int + super().__init__(tick_interval=services_interval, **kwargs) + + self.failed_registration_msg = None # type: Optional[OefSearchMessage] + self._nb_retries = 0 + + def setup(self) -> None: + """ + Implement the setup. + + :return: None + """ + self._register_agent() + + def act(self) -> None: + """ + Implement the act. + + :return: None + """ + self._retry_failed_registration() + + def teardown(self) -> None: + """ + Implement the task teardown. + + :return: None + """ + self._unregister_service() + self._unregister_agent() + + def _retry_failed_registration(self) -> None: + """ + Retry a failed registration. + + :return: None + """ + if self.failed_registration_msg is not None: + self._nb_retries += 1 + if self._nb_retries > self._max_soef_registration_retries: + self.context.is_active = False + return + + oef_search_dialogues = cast( + OefSearchDialogues, self.context.oef_search_dialogues + ) + oef_search_msg, _ = oef_search_dialogues.create( + counterparty=self.failed_registration_msg.to, + performative=self.failed_registration_msg.performative, + service_description=self.failed_registration_msg.service_description, + ) + self.context.outbox.put_message(message=oef_search_msg) + self.context.logger.info( + f"Retrying registration on SOEF. Retry {self._nb_retries} out of {self._max_soef_registration_retries}." + ) + + self.failed_registration_msg = None + + def _register(self, description: Description, logger_msg: str) -> None: + """ + Register something on the SOEF. + + :param description: the description of what is being registered + :param logger_msg: the logger message to print after the registration + + :return: None + """ oef_search_dialogues = cast( OefSearchDialogues, self.context.oef_search_dialogues ) oef_search_msg, _ = oef_search_dialogues.create( - counterparty=self.failed_registration_msg.to, - performative=self.failed_registration_msg.performative, - service_description=self.failed_registration_msg.service_description, + counterparty=self.context.search_service_address, + performative=OefSearchMessage.Performative.REGISTER_SERVICE, + service_description=description, ) self.context.outbox.put_message(message=oef_search_msg) - self.context.logger.info( - f"Retrying registration on SOEF. Retry {self._nb_retries} out of {self._max_soef_registration_retries}." + self.context.logger.info(logger_msg) + + def _register_agent(self) -> None: + """ + Register the agent's location. + + :return: None + """ + strategy = cast(Strategy, self.context.strategy) + description = strategy.get_location_description() + self._register(description, "registering agent on SOEF.") + + def register_service(self) -> None: + """ + Register the agent's service. + + :return: None + """ + strategy = cast(Strategy, self.context.strategy) + description = strategy.get_register_service_description() + self._register(description, "registering agent's service on the SOEF.") + + def register_genus(self) -> None: + """ + Register the agent's personality genus. + + :return: None + """ + strategy = cast(Strategy, self.context.strategy) + description = strategy.get_register_personality_description() + self._register( + description, "registering agent's personality genus on the SOEF." ) - - self.failed_registration_msg = None - - def _register(self, description: Description, logger_msg: str) -> None: - """ - Register something on the SOEF. - - :param description: the description of what is being registered - :param logger_msg: the logger message to print after the registration - - :return: None - """ - oef_search_dialogues = cast( - OefSearchDialogues, self.context.oef_search_dialogues - ) - oef_search_msg, _ = oef_search_dialogues.create( - counterparty=self.context.search_service_address, - performative=OefSearchMessage.Performative.REGISTER_SERVICE, - service_description=description, - ) - self.context.outbox.put_message(message=oef_search_msg) - self.context.logger.info(logger_msg) - - def _register_agent(self) -> None: - """ - Register the agent's location. - - :return: None - """ - strategy = cast(Strategy, self.context.strategy) - description = strategy.get_location_description() - self._register(description, "registering agent on SOEF.") - - def register_service(self) -> None: - """ - Register the agent's service. - - :return: None - """ - strategy = cast(Strategy, self.context.strategy) - description = strategy.get_register_service_description() - self._register(description, "registering agent's service on the SOEF.") - - def register_genus(self) -> None: - """ - Register the agent's personality genus. - - :return: None - """ - strategy = cast(Strategy, self.context.strategy) - description = strategy.get_register_personality_description() - self._register( - description, "registering agent's personality genus on the SOEF." - ) - - def register_classification(self) -> None: - """ - Register the agent's personality classification. - - :return: None - """ - strategy = cast(Strategy, self.context.strategy) - description = strategy.get_register_classification_description() - self._register( - description, "registering agent's personality classification on the SOEF." - ) - - def _unregister_service(self) -> None: - """ - Unregister service from the SOEF. - - :return: None - """ - strategy = cast(Strategy, self.context.strategy) - description = strategy.get_unregister_service_description() - oef_search_dialogues = cast( - OefSearchDialogues, self.context.oef_search_dialogues - ) - oef_search_msg, _ = oef_search_dialogues.create( - counterparty=self.context.search_service_address, - performative=OefSearchMessage.Performative.UNREGISTER_SERVICE, - service_description=description, - ) - self.context.outbox.put_message(message=oef_search_msg) - self.context.logger.info("unregistering service from SOEF.") - - def _unregister_agent(self) -> None: - """ - Unregister agent from the SOEF. - - :return: None - """ - strategy = cast(Strategy, self.context.strategy) - description = strategy.get_location_description() - oef_search_dialogues = cast( - OefSearchDialogues, self.context.oef_search_dialogues - ) - oef_search_msg, _ = oef_search_dialogues.create( - counterparty=self.context.search_service_address, - performative=OefSearchMessage.Performative.UNREGISTER_SERVICE, - service_description=description, - ) - self.context.outbox.put_message(message=oef_search_msg) - self.context.logger.info("unregistering agent from SOEF.") -``` - -We create a Model type strategy class and place it in strategy.py. We use a generic data model to register the service. As part of the registration we register a location and a key pair describing our service. - -``` python -from typing import Any - -from aea.exceptions import enforce -from aea.helpers.search.generic import ( - AGENT_LOCATION_MODEL, - AGENT_PERSONALITY_MODEL, - AGENT_REMOVE_SERVICE_MODEL, - AGENT_SET_SERVICE_MODEL, -) -from aea.helpers.search.models import Description, Location -from aea.skills.base import Model - - -DEFAULT_LOCATION = {"longitude": 0.1270, "latitude": 51.5194} -DEFAULT_SERVICE_DATA = {"key": "seller_service", "value": "generic_service"} -DEFAULT_PERSONALITY_DATA = {"piece": "genus", "value": "data"} -DEFAULT_CLASSIFICATION = {"piece": "classification", "value": "seller"} - - -class Strategy(Model): - """This class defines a strategy for the agent.""" - - def __init__(self, **kwargs: Any) -> None: - """ - Initialize the strategy of the agent. - - :return: None - """ - location = kwargs.pop("location", DEFAULT_LOCATION) - self._agent_location = { - "location": Location( - latitude=location["latitude"], longitude=location["longitude"] + + def register_classification(self) -> None: + """ + Register the agent's personality classification. + + :return: None + """ + strategy = cast(Strategy, self.context.strategy) + description = strategy.get_register_classification_description() + self._register( + description, "registering agent's personality classification on the SOEF." ) - } - self._set_personality_data = kwargs.pop( - "personality_data", DEFAULT_PERSONALITY_DATA - ) - enforce( - len(self._set_personality_data) == 2 - and "piece" in self._set_personality_data - and "value" in self._set_personality_data, - "personality_data must contain keys `key` and `value`", - ) - self._set_classification = kwargs.pop("classification", DEFAULT_CLASSIFICATION) - enforce( - len(self._set_classification) == 2 - and "piece" in self._set_classification - and "value" in self._set_classification, - "classification must contain keys `key` and `value`", - ) - self._set_service_data = kwargs.pop("service_data", DEFAULT_SERVICE_DATA) - enforce( - len(self._set_service_data) == 2 - and "key" in self._set_service_data - and "value" in self._set_service_data, - "service_data must contain keys `key` and `value`", - ) - self._remove_service_data = {"key": self._set_service_data["key"]} - super().__init__(**kwargs) - - def get_location_description(self) -> Description: - """ - Get the location description. - - :return: a description of the agent's location - """ - description = Description( - self._agent_location, data_model=AGENT_LOCATION_MODEL, - ) - return description - - def get_register_service_description(self) -> Description: - """ - Get the register service description. - - :return: a description of the offered services - """ - description = Description( - self._set_service_data, data_model=AGENT_SET_SERVICE_MODEL, - ) - return description - - def get_register_personality_description(self) -> Description: - """ - Get the register personality description. - - :return: a description of the personality - """ - description = Description( - self._set_personality_data, data_model=AGENT_PERSONALITY_MODEL, - ) - return description - - def get_register_classification_description(self) -> Description: - """ - Get the register classification description. - - :return: a description of the classification - """ - description = Description( - self._set_classification, data_model=AGENT_PERSONALITY_MODEL, - ) - return description - - def get_unregister_service_description(self) -> Description: - """ - Get the unregister service description. - - :return: a description of the to be removed service - """ - description = Description( - self._remove_service_data, data_model=AGENT_REMOVE_SERVICE_MODEL, - ) - return description -``` - -We create a Model type dialogue class and place it in dialogues.py. These classes ensure that the message flow satisfies the fetchai/oef_search:1.0.0 protocol and keep track of the individual messages being sent and received. - -``` python -from typing import Any - -from aea.protocols.base import Address, Message -from aea.protocols.dialogue.base import Dialogue as BaseDialogue -from aea.skills.base import Model - -from packages.fetchai.protocols.oef_search.dialogues import ( - OefSearchDialogue as BaseOefSearchDialogue, -) -from packages.fetchai.protocols.oef_search.dialogues import ( - OefSearchDialogues as BaseOefSearchDialogues, -) - - -OefSearchDialogue = BaseOefSearchDialogue - - -class OefSearchDialogues(Model, BaseOefSearchDialogues): - """This class keeps track of all oef_search dialogues.""" - - def __init__(self, **kwargs: Any) -> None: - """ - Initialize dialogues. - - :param agent_address: the address of the agent for whom dialogues are maintained - :return: None - """ - Model.__init__(self, **kwargs) - - def role_from_first_message( # pylint: disable=unused-argument - message: Message, receiver_address: Address - ) -> BaseDialogue.Role: - """Infer the role of the agent from an incoming/outgoing first message - - :param message: an incoming/outgoing first message - :param receiver_address: the address of the receiving agent - :return: The role of the agent + + def _unregister_service(self) -> None: """ - return BaseOefSearchDialogue.Role.AGENT - - BaseOefSearchDialogues.__init__( - self, - self_address=str(self.skill_id), - role_from_first_message=role_from_first_message, - ) - -``` - -Finally, we have a handler, placed in handlers.py. The handler deals with handling any error messages which might occur during service registration: - -``` python -from typing import Optional, cast - -from aea.configurations.base import PublicId -from aea.protocols.base import Message -from aea.skills.base import Handler - -from packages.fetchai.protocols.oef_search.message import OefSearchMessage -from packages.fetchai.skills.simple_service_registration.behaviours import ( - ServiceRegistrationBehaviour, -) -from packages.fetchai.skills.simple_service_registration.dialogues import ( - OefSearchDialogue, - OefSearchDialogues, -) - - -class OefSearchHandler(Handler): - """This class implements an OEF search handler.""" - - SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] - - def setup(self) -> None: - """Call to setup the handler.""" - - def handle(self, message: Message) -> None: - """ - Implement the reaction to a message. - - :param message: the message - :return: None - """ - oef_search_msg = cast(OefSearchMessage, message) - - # recover dialogue - oef_search_dialogues = cast( - OefSearchDialogues, self.context.oef_search_dialogues - ) - oef_search_dialogue = cast( - Optional[OefSearchDialogue], oef_search_dialogues.update(oef_search_msg) - ) - if oef_search_dialogue is None: - self._handle_unidentified_dialogue(oef_search_msg) - return - - # handle message - if oef_search_msg.performative == OefSearchMessage.Performative.SUCCESS: - self._handle_success(oef_search_msg, oef_search_dialogue) - elif oef_search_msg.performative == OefSearchMessage.Performative.OEF_ERROR: - self._handle_error(oef_search_msg, oef_search_dialogue) - else: - self._handle_invalid(oef_search_msg, oef_search_dialogue) - - def teardown(self) -> None: - """ - Implement the handler teardown. - - :return: None - """ - - def _handle_unidentified_dialogue(self, oef_search_msg: OefSearchMessage) -> None: - """ - Handle an unidentified dialogue. - - :param msg: the message - """ - self.context.logger.info( - "received invalid oef_search message={}, unidentified dialogue.".format( - oef_search_msg + Unregister service from the SOEF. + + :return: None + """ + strategy = cast(Strategy, self.context.strategy) + description = strategy.get_unregister_service_description() + oef_search_dialogues = cast( + OefSearchDialogues, self.context.oef_search_dialogues ) - ) - - def _handle_success( - self, - oef_search_success_msg: OefSearchMessage, - oef_search_dialogue: OefSearchDialogue, - ) -> None: - """ - Handle an oef search message. - - :param oef_search_success_msg: the oef search message - :param oef_search_dialogue: the dialogue - :return: None - """ - self.context.logger.info( - "received oef_search success message={} in dialogue={}.".format( - oef_search_success_msg, oef_search_dialogue + oef_search_msg, _ = oef_search_dialogues.create( + counterparty=self.context.search_service_address, + performative=OefSearchMessage.Performative.UNREGISTER_SERVICE, + service_description=description, ) - ) - target_message = cast( - OefSearchMessage, - oef_search_dialogue.get_message_by_id(oef_search_success_msg.target), - ) - if ( - target_message.performative - == OefSearchMessage.Performative.REGISTER_SERVICE - ): - description = target_message.service_description - data_model_name = description.data_model.name - registration_behaviour = cast( - ServiceRegistrationBehaviour, self.context.behaviours.service, + self.context.outbox.put_message(message=oef_search_msg) + self.context.logger.info("unregistering service from SOEF.") + + def _unregister_agent(self) -> None: + """ + Unregister agent from the SOEF. + + :return: None + """ + strategy = cast(Strategy, self.context.strategy) + description = strategy.get_location_description() + oef_search_dialogues = cast( + OefSearchDialogues, self.context.oef_search_dialogues ) - if "location_agent" in data_model_name: - registration_behaviour.register_service() - elif "set_service_key" in data_model_name: - registration_behaviour.register_genus() - elif ( - "personality_agent" in data_model_name - and description.values["piece"] == "genus" - ): - registration_behaviour.register_classification() - elif ( - "personality_agent" in data_model_name - and description.values["piece"] == "classification" - ): - self.context.logger.info( - "the agent, with its genus and classification, and its service are successfully registered on the SOEF." + oef_search_msg, _ = oef_search_dialogues.create( + counterparty=self.context.search_service_address, + performative=OefSearchMessage.Performative.UNREGISTER_SERVICE, + service_description=description, + ) + self.context.outbox.put_message(message=oef_search_msg) + self.context.logger.info("unregistering agent from SOEF.") + ``` + + We create a Model type strategy class and place it in strategy.py. We use a generic data model to register the service. As part of the registration we register a location and a key pair describing our service. + + ``` python + from typing import Any + + from aea.exceptions import enforce + from aea.helpers.search.generic import ( + AGENT_LOCATION_MODEL, + AGENT_PERSONALITY_MODEL, + AGENT_REMOVE_SERVICE_MODEL, + AGENT_SET_SERVICE_MODEL, + ) + from aea.helpers.search.models import Description, Location + from aea.skills.base import Model + + + DEFAULT_LOCATION = {"longitude": 0.1270, "latitude": 51.5194} + DEFAULT_SERVICE_DATA = {"key": "seller_service", "value": "generic_service"} + DEFAULT_PERSONALITY_DATA = {"piece": "genus", "value": "data"} + DEFAULT_CLASSIFICATION = {"piece": "classification", "value": "seller"} + + + class Strategy(Model): + """This class defines a strategy for the agent.""" + + def __init__(self, **kwargs: Any) -> None: + """ + Initialize the strategy of the agent. + + :return: None + """ + location = kwargs.pop("location", DEFAULT_LOCATION) + self._agent_location = { + "location": Location( + latitude=location["latitude"], longitude=location["longitude"] ) + } + self._set_personality_data = kwargs.pop( + "personality_data", DEFAULT_PERSONALITY_DATA + ) + enforce( + len(self._set_personality_data) == 2 + and "piece" in self._set_personality_data + and "value" in self._set_personality_data, + "personality_data must contain keys `key` and `value`", + ) + self._set_classification = kwargs.pop("classification", DEFAULT_CLASSIFICATION) + enforce( + len(self._set_classification) == 2 + and "piece" in self._set_classification + and "value" in self._set_classification, + "classification must contain keys `key` and `value`", + ) + self._set_service_data = kwargs.pop("service_data", DEFAULT_SERVICE_DATA) + enforce( + len(self._set_service_data) == 2 + and "key" in self._set_service_data + and "value" in self._set_service_data, + "service_data must contain keys `key` and `value`", + ) + self._remove_service_data = {"key": self._set_service_data["key"]} + super().__init__(**kwargs) + + def get_location_description(self) -> Description: + """ + Get the location description. + + :return: a description of the agent's location + """ + description = Description( + self._agent_location, data_model=AGENT_LOCATION_MODEL, + ) + return description + + def get_register_service_description(self) -> Description: + """ + Get the register service description. + + :return: a description of the offered services + """ + description = Description( + self._set_service_data, data_model=AGENT_SET_SERVICE_MODEL, + ) + return description + + def get_register_personality_description(self) -> Description: + """ + Get the register personality description. + + :return: a description of the personality + """ + description = Description( + self._set_personality_data, data_model=AGENT_PERSONALITY_MODEL, + ) + return description + + def get_register_classification_description(self) -> Description: + """ + Get the register classification description. + + :return: a description of the classification + """ + description = Description( + self._set_classification, data_model=AGENT_PERSONALITY_MODEL, + ) + return description + + def get_unregister_service_description(self) -> Description: + """ + Get the unregister service description. + + :return: a description of the to be removed service + """ + description = Description( + self._remove_service_data, data_model=AGENT_REMOVE_SERVICE_MODEL, + ) + return description + ``` + + We create a Model type dialogue class and place it in dialogues.py. These classes ensure that the message flow satisfies the fetchai/oef_search:1.0.0 protocol and keep track of the individual messages being sent and received. + + ``` python + from typing import Any + + from aea.protocols.base import Address, Message + from aea.protocols.dialogue.base import Dialogue as BaseDialogue + from aea.skills.base import Model + + from packages.fetchai.protocols.oef_search.dialogues import ( + OefSearchDialogue as BaseOefSearchDialogue, + ) + from packages.fetchai.protocols.oef_search.dialogues import ( + OefSearchDialogues as BaseOefSearchDialogues, + ) + + + OefSearchDialogue = BaseOefSearchDialogue + + + class OefSearchDialogues(Model, BaseOefSearchDialogues): + """This class keeps track of all oef_search dialogues.""" + + def __init__(self, **kwargs: Any) -> None: + """ + Initialize dialogues. + + :param agent_address: the address of the agent for whom dialogues are maintained + :return: None + """ + Model.__init__(self, **kwargs) + + def role_from_first_message( # pylint: disable=unused-argument + message: Message, receiver_address: Address + ) -> BaseDialogue.Role: + """Infer the role of the agent from an incoming/outgoing first message + + :param message: an incoming/outgoing first message + :param receiver_address: the address of the receiving agent + :return: The role of the agent + """ + return BaseOefSearchDialogue.Role.AGENT + + BaseOefSearchDialogues.__init__( + self, + self_address=str(self.skill_id), + role_from_first_message=role_from_first_message, + ) + + ``` + + Finally, we have a handler, placed in handlers.py. The handler deals with handling any error messages which might occur during service registration: + + ``` python + from typing import Optional, cast + + from aea.configurations.base import PublicId + from aea.protocols.base import Message + from aea.skills.base import Handler + + from packages.fetchai.protocols.oef_search.message import OefSearchMessage + from packages.fetchai.skills.simple_service_registration.behaviours import ( + ServiceRegistrationBehaviour, + ) + from packages.fetchai.skills.simple_service_registration.dialogues import ( + OefSearchDialogue, + OefSearchDialogues, + ) + + + class OefSearchHandler(Handler): + """This class implements an OEF search handler.""" + + SUPPORTED_PROTOCOL = OefSearchMessage.protocol_id # type: Optional[PublicId] + + def setup(self) -> None: + """Call to setup the handler.""" + + def handle(self, message: Message) -> None: + """ + Implement the reaction to a message. + + :param message: the message + :return: None + """ + oef_search_msg = cast(OefSearchMessage, message) + + # recover dialogue + oef_search_dialogues = cast( + OefSearchDialogues, self.context.oef_search_dialogues + ) + oef_search_dialogue = cast( + Optional[OefSearchDialogue], oef_search_dialogues.update(oef_search_msg) + ) + if oef_search_dialogue is None: + self._handle_unidentified_dialogue(oef_search_msg) + return + + # handle message + if oef_search_msg.performative == OefSearchMessage.Performative.SUCCESS: + self._handle_success(oef_search_msg, oef_search_dialogue) + elif oef_search_msg.performative == OefSearchMessage.Performative.OEF_ERROR: + self._handle_error(oef_search_msg, oef_search_dialogue) else: - self.context.logger.warning( - f"received soef SUCCESS message as a reply to the following unexpected message: {target_message}" + self._handle_invalid(oef_search_msg, oef_search_dialogue) + + def teardown(self) -> None: + """ + Implement the handler teardown. + + :return: None + """ + + def _handle_unidentified_dialogue(self, oef_search_msg: OefSearchMessage) -> None: + """ + Handle an unidentified dialogue. + + :param msg: the message + """ + self.context.logger.info( + "received invalid oef_search message={}, unidentified dialogue.".format( + oef_search_msg ) - - def _handle_error( - self, - oef_search_error_msg: OefSearchMessage, - oef_search_dialogue: OefSearchDialogue, - ) -> None: - """ - Handle an oef search message. - - :param oef_search_error_msg: the oef search message - :param oef_search_dialogue: the dialogue - :return: None - """ - self.context.logger.info( - "received oef_search error message={} in dialogue={}.".format( - oef_search_error_msg, oef_search_dialogue ) - ) - target_message = cast( - OefSearchMessage, - oef_search_dialogue.get_message_by_id(oef_search_error_msg.target), - ) - if ( - target_message.performative - == OefSearchMessage.Performative.REGISTER_SERVICE - ): - registration_behaviour = cast( - ServiceRegistrationBehaviour, self.context.behaviours.service, + + def _handle_success( + self, + oef_search_success_msg: OefSearchMessage, + oef_search_dialogue: OefSearchDialogue, + ) -> None: + """ + Handle an oef search message. + + :param oef_search_success_msg: the oef search message + :param oef_search_dialogue: the dialogue + :return: None + """ + self.context.logger.info( + "received oef_search success message={} in dialogue={}.".format( + oef_search_success_msg, oef_search_dialogue + ) ) - registration_behaviour.failed_registration_msg = target_message - - def _handle_invalid( - self, oef_search_msg: OefSearchMessage, oef_search_dialogue: OefSearchDialogue - ) -> None: - """ - Handle an oef search message. - - :param oef_search_msg: the oef search message - :param oef_search_dialogue: the dialogue - :return: None - """ - self.context.logger.warning( - "cannot handle oef_search message of performative={} in dialogue={}.".format( - oef_search_msg.performative, oef_search_dialogue, + target_message = cast( + OefSearchMessage, + oef_search_dialogue.get_message_by_id(oef_search_success_msg.target), ) - ) -``` - -The associated skill.yaml is: - -``` yaml -name: simple_service_registration -author: fetchai -version: 0.20.0 -type: skill -description: The simple service registration skills is a skill to register a service. -license: Apache-2.0 -aea_version: '>=1.0.0, <2.0.0' -fingerprint: - README.md: QmUgCcR7sDBQeeCBRKwDT7tPBTi3t4zSibyEqR3xdQUKmh - __init__.py: QmZd48HmYDr7FMxNaVeGfWRvVtieEdEV78hd7h7roTceP2 - behaviours.py: QmQHf6QL5aBtLJ34D2tdcbjJLbzom9gaA3HWgRn3rWyigM - dialogues.py: QmTT9dvFhWt6qvxjwBfMFDTrgEtgWbvgANYafyRg2BXwcR - handlers.py: QmZqPt8toGbJgTT6NZBLxjkusrQCZ8GmUEwcmqZ1sd7DpG - strategy.py: QmVXfQpk4cjDw576H2ELE12tEiN5brPkwvffvcTeMbsugA -fingerprint_ignore_patterns: [] -connections: [] -contracts: [] -protocols: -- fetchai/oef_search:1.1.6 -skills: [] -behaviours: - service: - args: - max_soef_registration_retries: 5 - services_interval: 30 - class_name: ServiceRegistrationBehaviour -handlers: - oef_search: - args: {} - class_name: OefSearchHandler -models: - oef_search_dialogues: - args: {} - class_name: OefSearchDialogues - strategy: - args: - classification: - piece: classification - value: seller - location: - latitude: 51.5194 - longitude: 0.127 - personality_data: - piece: genus - value: data - service_data: - key: seller_service - value: generic_service - class_name: Strategy -dependencies: {} -is_abstract: false -``` -

-
+ if ( + target_message.performative + == OefSearchMessage.Performative.REGISTER_SERVICE + ): + description = target_message.service_description + data_model_name = description.data_model.name + registration_behaviour = cast( + ServiceRegistrationBehaviour, self.context.behaviours.service, + ) + if "location_agent" in data_model_name: + registration_behaviour.register_service() + elif "set_service_key" in data_model_name: + registration_behaviour.register_genus() + elif ( + "personality_agent" in data_model_name + and description.values["piece"] == "genus" + ): + registration_behaviour.register_classification() + elif ( + "personality_agent" in data_model_name + and description.values["piece"] == "classification" + ): + self.context.logger.info( + "the agent, with its genus and classification, and its service are successfully registered on the SOEF." + ) + else: + self.context.logger.warning( + f"received soef SUCCESS message as a reply to the following unexpected message: {target_message}" + ) + + def _handle_error( + self, + oef_search_error_msg: OefSearchMessage, + oef_search_dialogue: OefSearchDialogue, + ) -> None: + """ + Handle an oef search message. + + :param oef_search_error_msg: the oef search message + :param oef_search_dialogue: the dialogue + :return: None + """ + self.context.logger.info( + "received oef_search error message={} in dialogue={}.".format( + oef_search_error_msg, oef_search_dialogue + ) + ) + target_message = cast( + OefSearchMessage, + oef_search_dialogue.get_message_by_id(oef_search_error_msg.target), + ) + if ( + target_message.performative + == OefSearchMessage.Performative.REGISTER_SERVICE + ): + registration_behaviour = cast( + ServiceRegistrationBehaviour, self.context.behaviours.service, + ) + registration_behaviour.failed_registration_msg = target_message + + def _handle_invalid( + self, oef_search_msg: OefSearchMessage, oef_search_dialogue: OefSearchDialogue + ) -> None: + """ + Handle an oef search message. + + :param oef_search_msg: the oef search message + :param oef_search_dialogue: the dialogue + :return: None + """ + self.context.logger.warning( + "cannot handle oef_search message of performative={} in dialogue={}.".format( + oef_search_msg.performative, oef_search_dialogue, + ) + ) + ``` + + The associated skill.yaml is: + + ``` yaml + name: simple_service_registration + author: fetchai + version: 0.20.0 + type: skill + description: The simple service registration skills is a skill to register a service. + license: Apache-2.0 + aea_version: '>=1.0.0, <2.0.0' + fingerprint: + README.md: QmUgCcR7sDBQeeCBRKwDT7tPBTi3t4zSibyEqR3xdQUKmh + __init__.py: QmZd48HmYDr7FMxNaVeGfWRvVtieEdEV78hd7h7roTceP2 + behaviours.py: QmQHf6QL5aBtLJ34D2tdcbjJLbzom9gaA3HWgRn3rWyigM + dialogues.py: QmTT9dvFhWt6qvxjwBfMFDTrgEtgWbvgANYafyRg2BXwcR + handlers.py: QmZqPt8toGbJgTT6NZBLxjkusrQCZ8GmUEwcmqZ1sd7DpG + strategy.py: QmVXfQpk4cjDw576H2ELE12tEiN5brPkwvffvcTeMbsugA + fingerprint_ignore_patterns: [] + connections: [] + contracts: [] + protocols: + - fetchai/oef_search:1.1.7 + skills: [] + behaviours: + service: + args: + max_soef_registration_retries: 5 + services_interval: 30 + class_name: ServiceRegistrationBehaviour + handlers: + oef_search: + args: {} + class_name: OefSearchHandler + models: + oef_search_dialogues: + args: {} + class_name: OefSearchDialogues + strategy: + args: + classification: + piece: classification + value: seller + location: + latitude: 51.5194 + longitude: 0.127 + personality_data: + piece: genus + value: data + service_data: + key: seller_service + value: generic_service + class_name: Strategy + dependencies: {} + is_abstract: false + ``` ## Step 9: Run the Search AEA First, create the private key for the search AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` Then, in the search AEA, run this command (replace `SOME_ADDRESS` with the correct value as described above): + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -1100,6 +1108,7 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + This allows the search AEA to connect to the same local agent communication network as the service registration AEA. We can then launch our AEA. @@ -1112,8 +1121,7 @@ We can see that the AEA sends search requests to the SOE We stop the AEA with `CTRL + C`. -## Next steps - +## Next Steps ### Recommended @@ -1121,8 +1129,6 @@ We recommend you continue with the next step in the 'Getting Started' series: - Core components (Part 2) -### Relevant deep-dives - - This guide goes through a more elaborate scenario than the one on this page, where after finding each other, the two AEAs negotiate and trade via a ledger. +### Relevant Deep-Dives -
\ No newline at end of file + This guide goes through a more elaborate scenario than the one on this page, where after finding each other, the two AEAs negotiate and trade via a ledger. diff --git a/docs/skill-testing.md b/docs/skill-testing.md index 55bd92e7cc..535449770a 100644 --- a/docs/skill-testing.md +++ b/docs/skill-testing.md @@ -1,10 +1,12 @@ -In this guide we describe some of the tools the framework offers for testing skills. +# Testing Skills -## The `BaseSkillTestCase` class +In this guide, we describe some of the tools the framework offers for testing skills. -The framework offers a `BaseSkillTestCase` class which you can subclass and write your test cases with. +## The `BaseSkillTestCase` Class -Let us assume you want to test the `my_behaviour` behaviour of a `CustomSkill` skill you have developed. +The framework offers a `BaseSkillTestCase` class which you can subclass and write your test cases with. + +Let us assume you want to test the `my_behaviour` behaviour of a `CustomSkill` skill you have developed. You can create a `TestMyBehaviour` class which inherits `BaseSkillTestCase` as below: @@ -52,7 +54,7 @@ In the above, we make the `my_behaviour` behaviour object accessible for every t ### Skill and Skill Context -The skill object itself is exposed via a property. So you can access the skill object by `self.skill` and by extension all of its attributes. This crucially includes the complete `skill_context`. This means that for example, all of the components of the skill (e.g. behaviours, handlers, models) can be accessed via the skill context. +The skill object itself is exposed via a property. So you can access the skill object by `self.skill` and by extension all of its attributes. This crucially includes the complete `skill_context`. This means that for example, every component of the skill (e.g. behaviours, handlers, models) can be accessed via the skill context. In the above code snippet, `my_behavior` is accessed and exposed as a class attribute. Note accessing the skill context is slightly different in the above because it is a class method. If this was a test method, you could access the behaviour via `self.skill.skill_context.behaviours.my_behaviour`. @@ -85,19 +87,19 @@ agent_context = AgentContext( Some of the useful objects you can access in your test class for the loaded skill are below: -* `self.skill.skill_context.agent_address`: this is the agent identity the skill uses and is set to `"test_agent_address"`. -* `self.skill.skill_context.search_service_address`: this is the address of the search service and is set to `"dummy_search_service_address"`. -* `self.skill.skill_context.skill_id`: this is the id of the skill. -* `self.skill.skill_context.decision_maker_address`: this is the address of the decision maker and is set to `"dummy_decision_maker_address"`. +- `self.skill.skill_context.agent_address`: this is the agent identity the skill uses and is set to `"test_agent_address"`. +- `self.skill.skill_context.search_service_address`: this is the address of the search service and is set to `"dummy_search_service_address"`. +- `self.skill.skill_context.skill_id`: this is the id of the skill. +- `self.skill.skill_context.decision_maker_address`: this is the address of the decision maker and is set to `"dummy_decision_maker_address"`. ### Some Useful `BaseSkillTestCase` Methods There are a number of methods that `BaseSkillTestCase` offers to make testing skills easier. Some of these are mentioned below. For the rest, consult the API for `BaseSkillTestCase`: -* `self.get_quantity_in_outbox()`: gives you the number of messages which are in the outbox. After running a part of the skill which is expected to send messages, you can use this method to assert the correct number of messages are indeed sent. -* `self.get_message_from_outbox()`: gives you the last message in the outbox. Together with the above, you can use this method to grab the last message sent by the skill code you tested and check this is indeed the expected message. -* `self.message_has_attributes(actual_message: Message, message_type: Type[Message], **kwargs,)`: you can use this method in tandem with the above method to check that a message has the attributes you expect it to have. You have to supply it with the actual message (e.g. using `self.get_message_from_outbox()`), specify its expected type (e.g. `FipaMessage`), and any other attribute you expect the message to have (e.g. `message_id` is 1) may be provided via keyword arguments. -* `self.build_incoming_message`: this is an especially useful method to test handlers. Since handlers handle incoming messages, you can create an incoming message using this method to feed it to the handler and test its execution. +- `self.get_quantity_in_outbox()`: gives you the number of messages which are in the outbox. After running a part of the skill which is expected to send messages, you can use this method to assert the correct number of messages are indeed sent. +- `self.get_message_from_outbox()`: gives you the last message in the outbox. Together with the above, you can use this method to grab the last message sent by the skill code you tested and check this is indeed the expected message. +- `self.message_has_attributes(actual_message: Message, message_type: Type[Message], **kwargs,)`: you can use this method in tandem with the above method to check that a message has the attributes you expect it to have. You have to supply it with the actual message (e.g. using `self.get_message_from_outbox()`), specify its expected type (e.g. `FipaMessage`), and any other attribute you expect the message to have (e.g. `message_id` is 1) may be provided via keyword arguments. +- `self.build_incoming_message`: this is an especially useful method to test handlers. Since handlers handle incoming messages, you can create an incoming message using this method to feed it to the handler and test its execution. #### Checking Logger Output @@ -115,8 +117,8 @@ mock_logger.assert_any_call(logging.INFO, "some_logger_message") In the above, we mock the logger before running `my_behaviour`'s `act()` method and check that the string `"some_logger_message"` is indeed passed to the logger. -## Next steps +## Next Steps You can consult the `fetchai/generic_buyer` and `fetchai/generic_seller` skills and their associated tests here to study how `BaseSkillTestCase` can help you in testing your skills. -You can also refer to the API to study the different methods `BaseSkillTestCase` makes available to make testing your skills easier. +You can also refer to the API to study the different methods `BaseSkillTestCase` makes available to make testing your skills easier. diff --git a/docs/skill.md b/docs/skill.md index 3d21023e4a..bdec5e62bd 100644 --- a/docs/skill.md +++ b/docs/skill.md @@ -1,15 +1,17 @@ +# Skills + `Skills` are the core focus of the framework's extensibility as they implement business logic to deliver economic value for the AEA. They are self-contained capabilities that AEAs can dynamically take on board, in order to expand their effectiveness in different situations. Skill components of an AEA A skill encapsulates implementations of the three abstract base classes `Handler`, `Behaviour`, `Model`, and is closely related with the abstract base class `Task`: -* `Handler`: each skill has zero, one or more `Handler` objects, each responsible for the registered messaging protocol. Handlers implement AEAs' **reactive** behaviour. If the AEA understands the protocol referenced in a received `Envelope`, the `Handler` reacts appropriately to the corresponding message. Each `Handler` is responsible for only one protocol. A `Handler` is also capable of dealing with internal messages (see next section). -* `Behaviour`: zero, one or more `Behaviours` encapsulate actions which further the AEAs goal and are initiated by internals of the AEA, rather than external events. Behaviours implement AEAs' **pro-activeness**. The framework provides a number of abstract base classes implementing different types of behaviours (e.g. cyclic/one-shot/finite-state-machine/etc.). -* `Model`: zero, one or more `Models` that inherit from the `Model` class. `Models` encapsulate custom objects which are made accessible to any part of a skill via the `SkillContext`. -* `Task`: zero, one or more `Tasks` encapsulate background work internal to the AEA. `Task` differs from the other three in that it is not a part of skills, but `Task`s are declared in or from skills if a packaging approach for AEA creation is used. +- `Handler`: each skill has zero, one or more `Handler` objects, each responsible for the registered messaging protocol. Handlers implement AEAs' **reactive** behaviour. If the AEA understands the protocol referenced in a received `Envelope`, the `Handler` reacts appropriately to the corresponding message. Each `Handler` is responsible for only one protocol. A `Handler` is also capable of dealing with internal messages (see next section). +- `Behaviour`: zero, one or more `Behaviours` encapsulate actions which further the AEAs goal and are initiated by internals of the AEA, rather than external events. Behaviours implement AEAs' **pro-activeness**. The framework provides a number of abstract base classes implementing different types of behaviours (e.g. cyclic/one-shot/finite-state-machine/etc.). +- `Model`: zero, one or more `Models` that inherit from the `Model` class. `Models` encapsulate custom objects which are made accessible to any part of a skill via the `SkillContext`. +- `Task`: zero, one or more `Tasks` encapsulate background work internal to the AEA. `Task` differs from the other three in that it is not a part of skills, but `Task`s are declared in or from skills if a packaging approach for AEA creation is used. -A skill can read (parts of) the state of the the AEA (as summarised in the `AgentContext`), and suggest actions to the AEA according to its specific logic. As such, more than one skill could exist per protocol, competing with each other in suggesting to the AEA the best course of actions to take. In technical terms this means skills are horizontally arranged. +A skill can read (parts of) the state of the AEA (as summarised in the `AgentContext`), and propose actions to the AEA according to its specific logic. As such, more than one skill could exist per protocol, competing with each other in suggesting to the AEA the best course of actions to take. In technical terms this means skills are horizontally arranged. For instance, an AEA who is trading goods, could subscribe to more than one skill, where each skill corresponds to a different trading strategy. The skills could then read the preference and ownership state of the AEA, and independently suggest profitable transactions. @@ -17,7 +19,7 @@ The framework places no limits on the complexity of skills. They can implement s The framework provides one default skill, called `error`. Additional skills can be added as packages. -## Independence of skills +## Independence of Skills Skills are `horizontally layered`, that is they run independently of each other. They also cannot access each other's state. @@ -33,15 +35,15 @@ For example, in the `ErrorHandler(Handler)` class, the code often grabs a refere ``` python self.context.outbox.put_message(message=reply) -``` +``` Moreover, you can read/write to the _agent context namespace_ by accessing the attribute `SkillContext.namespace`. Importantly, however, a skill does not have access to the context of another skill or protected AEA components like the `DecisionMaker`. -## What to code +## What to Code -Each of the skill classes has three methods that must be implemented. All of them include a `setup()` and `teardown()` method which the developer must implement. +Each of the skill classes has three methods that must be implemented. All of them include a `setup()` and `teardown()` method which the developer must implement. Then there is a specific method that the framework requires for each class. @@ -51,7 +53,7 @@ There can be none, one or more `Handler` class per skill. `Handler` classes can receive `Message` objects of one protocol type only. However, `Handler` classes can send `Envelope` objects of any type of protocol they require. -* `handle(self, message: Message)`: is where the skill receives a `Message` of the specified protocol and decides what to do with it. +- `handle(self, message: Message)`: is where the skill receives a `Message` of the specified protocol and decides what to do with it. A handler can be registered in one way: @@ -71,7 +73,7 @@ Conceptually, a `Behaviour` class contains the business logic specific to initi There can be one or more `Behaviour` classes per skill. The developer must create a subclass from the abstract class `Behaviour` to create a new `Behaviour`. -* `act(self)`: is how the framework calls the `Behaviour` code. +- `act(self)`: is how the framework calls the `Behaviour` code. A behaviour can be registered in two ways: @@ -82,14 +84,13 @@ The framework supports different types of behaviours: - `OneShotBehaviour`: this behaviour is executed only once. - `TickerBehaviour`: the `act()` method is called every `tick_interval`. E.g. if the `TickerBehaviour` subclass is instantiated - + There is another category of behaviours, called `CompositeBehaviour`: -- `SequenceBehaviour`: a sequence of `Behaviour` classes, executed +- `SequenceBehaviour`: a sequence of `Behaviour` classes, executed one after the other. - `FSMBehaviour`: a state machine of `State` behaviours. A state is in charge of scheduling the next state. - If your behaviour fits one of the above, we suggest subclassing your behaviour class with that behaviour class. Otherwise, you can always subclass the general-purpose `Behaviour` class. @@ -123,6 +124,7 @@ self.context.new_behaviours.put(HelloWorldBehaviour(name="hello_world", skill_co ``` Or, equivalently to the previous two code blocks: + ``` python def hello(): print("Hello, World!") @@ -131,9 +133,9 @@ self.context.new_behaviours.put(OneShotBehaviour(act=hello, name="hello_world", ``` The callable passed to the `act` parameter is equivalent to the implementation -of the `act` method described above. +of the `act` method described above. -The framework is then in charge of registering the behaviour and scheduling it +The framework is then in charge of registering the behaviour and scheduling it for execution. ### `tasks.py` @@ -142,22 +144,23 @@ Conceptually, a `Task` is where the developer codes any internal tasks the AEA r There can be one or more `Task` classes per skill. The developer subclasses abstract class `Task` to create a new `Task`. -* `execute(self)`: is how the framework calls a `Task`. +- `execute(self)`: is how the framework calls a `Task`. The `Task` class implements the functor pattern. -An instance of the `Task` class can be invoked as if it +An instance of the `Task` class can be invoked as if it were an ordinary function. Once completed, it will store the result in the property `result`. Raises error if the task has not been executed yet, or an error occurred during computation. We suggest using the `task_manager`, accessible through the skill context, -to manage long-running tasks. The task manager uses `multiprocessing` to -schedule tasks, so be aware that the changes on the task object will +to manage long-running tasks. The task manager uses `multiprocessing` to +schedule tasks, so be aware that the changes on the task object will not be updated. Here's an example: In `tasks.py`: + ``` python from aea.skills.tasks import Task @@ -193,6 +196,7 @@ class LongTask(Task): ``` In `behaviours.py`: + ``` python from aea.skills.behaviours import TickerBehaviour @@ -228,17 +232,19 @@ class MyBehaviour(TickerBehaviour): The developer might want to add other classes on the context level which are shared equally across the `Handler`, `Behaviour` and `Task` classes. To this end, the developer can subclass an abstract `Model`. These models are made available on the context level upon initialization of the AEA. Say, the developer has a class called `SomeModel` + ``` python class SomeModel(Model): ... ``` Then, an instance of this class is available on the context level like so: + ``` python some_model = self.context.some_model -``` +``` -### Skill configuration +### Skill Configuration Each skill has a `skill.yaml` configuration file which lists all `Behaviour`, `Handler`, and `Task` objects pertaining to the skill. @@ -262,25 +268,23 @@ handlers: models: {} dependencies: {} protocols: -- fetchai/default:1.1.6 +- fetchai/default:1.1.7 ``` - -## Error skill +## Error Skill All AEAs have a default `error` skill that contains error handling code for a number of scenarios: -* Received envelopes with unsupported protocols -* Received envelopes with unsupported skills (i.e. protocols for which no handler is registered) -* Envelopes with decoding errors -* Invalid messages with respect to the registered protocol +- Received envelopes with unsupported protocols +- Received envelopes with unsupported skills (i.e. protocols for which no handler is registered) +- Envelopes with decoding errors +- Invalid messages with respect to the registered protocol The error skill relies on the `fetchai/default:1.0.0` protocol which provides error codes for the above. +## Custom Error Handler -## Custom Error handler - -The framework implements a default `ErrorHandler`. +The framework implements a default `ErrorHandler`. You can implement your own and mount it. The easiest way to do this is to run the following command to scaffold a custom `ErrorHandler`: ``` bash @@ -288,7 +292,4 @@ aea scaffold error-handler ``` Now you will see a file called `error_handler.py` in the AEA project root. -You can then implement your own custom logic to process messages. - - -
+You can then implement your own custom logic to process messages. diff --git a/docs/standalone-transaction.md b/docs/standalone-transaction.md index 64a141d2a4..e4eda05418 100644 --- a/docs/standalone-transaction.md +++ b/docs/standalone-transaction.md @@ -1,7 +1,10 @@ +# Create Stand-Alone Transaction + In this guide, we will generate some wealth for the Fetch.ai testnet and create a standalone transaction. After the completion of the transaction, we get the transaction digest. With this we can search for the transaction on the block explorer This guide requires the `aea-ledger-fetchai` plug-in installed in your Python environment: -```bash + +``` bash pip install aea-ledger-fetchai ``` @@ -24,7 +27,7 @@ FETCHAI_PRIVATE_KEY_FILE_1 = "fetchai_private_key_1.txt" FETCHAI_PRIVATE_KEY_FILE_2 = "fetchai_private_key_2.txt" ``` -## Create the private keys +## Create the Private Keys ``` python # Create a private keys @@ -36,7 +39,7 @@ FETCHAI_PRIVATE_KEY_FILE_2 = "fetchai_private_key_2.txt" ) ``` -## Create the wallets +## Create the Wallets Once we created the private keys we need to generate the wallets. @@ -46,10 +49,11 @@ Once we created the private keys we need to generate the wallets. wallet_2 = Wallet({FetchAICrypto.identifier: FETCHAI_PRIVATE_KEY_FILE_2}) ``` -## Generate wealth +## Generate Wealth Since we want to send funds from `wallet_1` to `wallet_2`, we need to generate some wealth for the `wallet_1`. We can do this with the following code + ``` python # Generate some wealth try_generate_testnet_wealth( @@ -57,7 +61,7 @@ do this with the following code ) ``` -## Send transaction +## Send Transaction Finally, we create a transaction that sends the funds to the `wallet_2` @@ -87,75 +91,74 @@ Finally, we create a transaction that sends the funds to the `wallet_2` logger.info("The transaction digest is {}".format(transaction_digest)) ``` -
Stand-alone transaction full code - -``` python -import logging - -from aea_ledger_fetchai import FetchAICrypto - -from aea.crypto.helpers import create_private_key, try_generate_testnet_wealth -from aea.crypto.ledger_apis import LedgerApis -from aea.crypto.wallet import Wallet - - -logger = logging.getLogger("aea") -logging.basicConfig(level=logging.INFO) - -FETCHAI_PRIVATE_KEY_FILE_1 = "fetchai_private_key_1.txt" -FETCHAI_PRIVATE_KEY_FILE_2 = "fetchai_private_key_2.txt" - - -def run(): - """Run demo.""" - - # Create a private keys - create_private_key( - FetchAICrypto.identifier, private_key_file=FETCHAI_PRIVATE_KEY_FILE_1 - ) - create_private_key( - FetchAICrypto.identifier, private_key_file=FETCHAI_PRIVATE_KEY_FILE_2 - ) - - # Set up the wallets - wallet_1 = Wallet({FetchAICrypto.identifier: FETCHAI_PRIVATE_KEY_FILE_1}) - wallet_2 = Wallet({FetchAICrypto.identifier: FETCHAI_PRIVATE_KEY_FILE_2}) - - # Generate some wealth - try_generate_testnet_wealth( - FetchAICrypto.identifier, wallet_1.addresses[FetchAICrypto.identifier] - ) - - logger.info( - "Sending amount to {}".format(wallet_2.addresses.get(FetchAICrypto.identifier)) - ) - - # Create the transaction and send it to the ledger. - tx_nonce = LedgerApis.generate_tx_nonce( - FetchAICrypto.identifier, - wallet_2.addresses.get(FetchAICrypto.identifier), - wallet_1.addresses.get(FetchAICrypto.identifier), - ) - transaction = LedgerApis.get_transfer_transaction( - identifier=FetchAICrypto.identifier, - sender_address=wallet_1.addresses.get(FetchAICrypto.identifier), - destination_address=wallet_2.addresses.get(FetchAICrypto.identifier), - amount=1, - tx_fee=1, - tx_nonce=tx_nonce, - ) - signed_transaction = wallet_1.sign_transaction( - FetchAICrypto.identifier, transaction - ) - transaction_digest = LedgerApis.send_signed_transaction( - FetchAICrypto.identifier, signed_transaction - ) - - logger.info("Transaction complete.") - logger.info("The transaction digest is {}".format(transaction_digest)) - - -if __name__ == "__main__": - run() -``` -
+??? note "Stand-alone transaction full code:" + + ``` python + import logging + + from aea_ledger_fetchai import FetchAICrypto + + from aea.crypto.helpers import create_private_key, try_generate_testnet_wealth + from aea.crypto.ledger_apis import LedgerApis + from aea.crypto.wallet import Wallet + + + logger = logging.getLogger("aea") + logging.basicConfig(level=logging.INFO) + + FETCHAI_PRIVATE_KEY_FILE_1 = "fetchai_private_key_1.txt" + FETCHAI_PRIVATE_KEY_FILE_2 = "fetchai_private_key_2.txt" + + + def run(): + """Run demo.""" + + # Create a private keys + create_private_key( + FetchAICrypto.identifier, private_key_file=FETCHAI_PRIVATE_KEY_FILE_1 + ) + create_private_key( + FetchAICrypto.identifier, private_key_file=FETCHAI_PRIVATE_KEY_FILE_2 + ) + + # Set up the wallets + wallet_1 = Wallet({FetchAICrypto.identifier: FETCHAI_PRIVATE_KEY_FILE_1}) + wallet_2 = Wallet({FetchAICrypto.identifier: FETCHAI_PRIVATE_KEY_FILE_2}) + + # Generate some wealth + try_generate_testnet_wealth( + FetchAICrypto.identifier, wallet_1.addresses[FetchAICrypto.identifier] + ) + + logger.info( + "Sending amount to {}".format(wallet_2.addresses.get(FetchAICrypto.identifier)) + ) + + # Create the transaction and send it to the ledger. + tx_nonce = LedgerApis.generate_tx_nonce( + FetchAICrypto.identifier, + wallet_2.addresses.get(FetchAICrypto.identifier), + wallet_1.addresses.get(FetchAICrypto.identifier), + ) + transaction = LedgerApis.get_transfer_transaction( + identifier=FetchAICrypto.identifier, + sender_address=wallet_1.addresses.get(FetchAICrypto.identifier), + destination_address=wallet_2.addresses.get(FetchAICrypto.identifier), + amount=1, + tx_fee=1, + tx_nonce=tx_nonce, + ) + signed_transaction = wallet_1.sign_transaction( + FetchAICrypto.identifier, transaction + ) + transaction_digest = LedgerApis.send_signed_transaction( + FetchAICrypto.identifier, signed_transaction + ) + + logger.info("Transaction complete.") + logger.info("The transaction digest is {}".format(transaction_digest)) + + + if __name__ == "__main__": + run() + ``` diff --git a/docs/step-one.md b/docs/step-one.md index f5e818e7fe..bb6b5bdabe 100644 --- a/docs/step-one.md +++ b/docs/step-one.md @@ -1,14 +1,12 @@ +# Ways to Build an AEA + There are a number of ways to build an AEA: -
    -
  • To start with, we recommended you build an AEA project step-by-step with the CLI tool as demonstrated in the quick start guide and described here. -
  • Using the CLI aea fetch command, pull in an already built project and run as is or extend it to your needs.
  • -
  • The last option is to build an AEA programmatically as described here.
  • -
+ +- To start with, we recommended you build an AEA project step-by-step with the CLI tool as demonstrated in the quick start guide and described here. +- Using the CLI `aea fetch` command, pull in an already built project and run as is or extend it to your needs. +- The last option is to build an AEA programmatically as described here. Sometimes, an AEA is more than is required for the task at hand. In particular, an AEA is much more than just an agent. In those cases, we suggest you have a look at the following two guides: -
    -
  • the AEA vs Agents guide shows the difference between an agent and an AEA in code, -
  • the Use multiplexer standalone guide shows how to use the multiplexer on its own to receive and send envelopes. -
-
\ No newline at end of file +- the AEA vs Agents guide shows the difference between an agent and an AEA in code, +- the Use multiplexer standalone guide shows how to use the multiplexer on its own to receive and send envelopes. diff --git a/docs/tac-skills-contract.md b/docs/tac-skills-contract.md index 909369e23c..b1cacd8089 100644 --- a/docs/tac-skills-contract.md +++ b/docs/tac-skills-contract.md @@ -1,13 +1,15 @@ +# TAC Skills Ledger-Based + The AEA TAC - trading agent competition - skills demonstrate an interaction between multiple AEAs in a game. There are two types of AEAs: -* The `tac_controller` which coordinates the game. -* The `tac_participant` AEAs which compete in the game. The `tac_participant` AEAs trade tokens with each other to maximize their utility. +- The `tac_controller` which coordinates the game. +- The `tac_participant` AEAs which compete in the game. The `tac_participant` AEAs trade tokens with each other to maximize their utility. ## Discussion -This demo shows how agents negotiate autonomously with each other while they pursue their goals by participating in the Trading Agents Competition (TAC). +This demo shows how agents negotiate autonomously with each other while they pursue their goals by participating in the Trading Agents Competition (TAC). The demo can be run against Fetchai or Ethereum ledger. Transactions are validated on an ERC1155 smart contract on the Fetchai Dorado or a local Ganache Ethereum testnet. @@ -18,13 +20,15 @@ In the following video we discuss the framework and TAC in more detail: ## Communication There are two types of interactions: + - between the controller and participants (game management communication) - between the participants (negotiations) -### Registration communication -This diagram shows the communication between the various entities during the registration phase. +### Registration Communication -
+This diagram shows the communication between the various entities during the registration phase. + +``` mermaid sequenceDiagram participant Agent_2 participant Agent_1 @@ -50,12 +54,13 @@ This diagram shows the communication between the various entities during the reg deactivate Agent_2 deactivate Search deactivate Controller -
+``` -### Transaction communication -This diagram shows the communication between two AEAs and a controller. In this case, we have a `Seller_Agent` which is set up as a seller (and registers itself as such with the controller during the registration phase). We also have the `Searching_Agent` which is set up to search for sellers. +### Transaction Communication -
+This diagram shows the communication between two AEAs and a controller. In this case, we have a `Seller_Agent` which is set up as a seller (and registers itself as such with the controller during the registration phase). We also have the `Searching_Agent` which is set up to search for sellers. + +``` mermaid sequenceDiagram participant Buyer_Agent participant Seller_Agent @@ -83,188 +88,185 @@ This diagram shows the communication between two AEAs and a controller. In this deactivate Seller_Agent deactivate Search deactivate Controller - -
+``` In the above case, the proposal received contains a set of goods to sell and an associated price. The buyer AEA needs to determine if this is a good deal for them, and if so, it accepts. -There is an equivalent diagram for seller AEAs set up to search for buyers and their interaction with AEAs which are registered as buyers. In that scenario, the proposal will instead be a list of goods that the buyer wishes to buy and the price it is willing to pay for them. - +There is an equivalent diagram for seller AEAs set up to search for buyers and their interaction with AEAs which are registered as buyers. In that scenario, the proposal will instead be a list of goods that the buyer wishes to buy and the price it is willing to pay for them. -## Preparation instructions +## Preparation Instructions ### Dependencies Follow the Preliminaries and Installation sections from the AEA quick start. -## Demo instructions (Fetchai): +## Demo Instructions (Fetchai) Follow this instruction to run TAC against the fetch.ai Dorado testnet. -### Fetch TAC controller AEA +### Fetch TAC Controller AEA In the root directory, fetch the controller AEA: -``` bash -aea fetch fetchai/tac_controller_contract:0.32.4 -cd tac_controller_contract -aea install -aea build -``` - -
Alternatively, create from scratch. -

-The following steps create the controller from scratch: ``` bash -aea create tac_controller_contract +aea fetch fetchai/tac_controller_contract:0.32.5 cd tac_controller_contract -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_control_contract:0.27.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_ledger fetchai -aea config set vendor.fetchai.connections.soef.config.chain_identifier fetchai_v2_misc -aea config set --type bool vendor.fetchai.skills.tac_control.is_abstract true -aea config set --type dict agent.default_routing \ -'{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' -aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ -'[{"identifier": "acn", "ledger_id": "fetchai", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' aea install aea build ``` -

-
- -### Fetch the TAC participant AEAs +??? note "Alternatively, create from scratch:" + The following steps create the controller from scratch: + + ``` bash + aea create tac_controller_contract + cd tac_controller_contract + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/tac_control_contract:0.27.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set agent.default_ledger fetchai + aea config set vendor.fetchai.connections.soef.config.chain_identifier fetchai_v2_misc + aea config set --type bool vendor.fetchai.skills.tac_control.is_abstract true + aea config set --type dict agent.default_routing \ + '{ + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ + '[{"identifier": "acn", "ledger_id": "fetchai", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' + aea install + aea build + ``` + +### Fetch the TAC Participant AEAs In separate terminals, in the root directory, fetch at least two participants: -``` bash -aea fetch fetchai/tac_participant_contract:0.22.4 --alias tac_participant_one -cd tac_participant_one -aea install -aea build -cd .. -aea fetch fetchai/tac_participant_contract:0.22.4 --alias tac_participant_two -cd tac_participant_two -aea install -aea build -``` - -
Alternatively, create from scratch. -

- -In a separate terminal, in the root directory, create at least two tac participant AEAs: -``` bash -aea create tac_participant_one -aea create tac_participant_two -``` -Build participant one: ``` bash +aea fetch fetchai/tac_participant_contract:0.22.5 --alias tac_participant_one cd tac_participant_one -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_ledger fetchai -aea config set vendor.fetchai.connections.soef.config.chain_identifier fetchai_v2_misc -aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool -aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool -aea config set --type dict agent.default_routing \ -'{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' -aea config set --type dict agent.decision_maker_handler \ -'{ - "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", - "file_path": null -}' -aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ -'''[{"identifier": "acn", "ledger_id": "fetchai", "message_format": "'{public_key}'", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]''' aea install aea build -``` - -Then, build participant two: -``` bash +cd .. +aea fetch fetchai/tac_participant_contract:0.22.5 --alias tac_participant_two cd tac_participant_two -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_ledger fetchai -aea config set vendor.fetchai.connections.soef.config.chain_identifier fetchai_v2_misc -aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool -aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool -aea config set --type dict agent.default_routing \ -'{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' -aea config set --type dict agent.decision_maker_handler \ -'{ - "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", - "file_path": null -}' -aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ -'''[{"identifier": "acn", "ledger_id": "fetchai", "message_format": "'{public_key}'", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]''' aea install aea build ``` -

-
- -### Add keys for all AEAs +??? note "Alternatively, create from scratch:" + In a separate terminal, in the root directory, create at least two tac participant AEAs: + + ``` bash + aea create tac_participant_one + aea create tac_participant_two + ``` + + Build participant one: + + ``` bash + cd tac_participant_one + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/tac_participation:0.25.6 + aea add skill fetchai/tac_negotiation:0.29.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set agent.default_ledger fetchai + aea config set vendor.fetchai.connections.soef.config.chain_identifier fetchai_v2_misc + aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool + aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool + aea config set --type dict agent.default_routing \ + '{ + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea config set --type dict agent.decision_maker_handler \ + '{ + "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", + "file_path": null + }' + aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ + '''[{"identifier": "acn", "ledger_id": "fetchai", "message_format": "'{public_key}'", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]''' + aea install + aea build + ``` + + Then, build participant two: + + ``` bash + cd tac_participant_two + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/tac_participation:0.25.6 + aea add skill fetchai/tac_negotiation:0.29.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set agent.default_ledger fetchai + aea config set vendor.fetchai.connections.soef.config.chain_identifier fetchai_v2_misc + aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool + aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool + aea config set --type dict agent.default_routing \ + '{ + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea config set --type dict agent.decision_maker_handler \ + '{ + "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", + "file_path": null + }' + aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ + '''[{"identifier": "acn", "ledger_id": "fetchai", "message_format": "'{public_key}'", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]''' + aea install + aea build + ``` + +### Add Keys for All AEAs For every AEA in the competition (controller and participants): First generate and add a private key: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Then create and add a separate private key for secure communication: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -### Update the game parameters in the controller +### Update the Game Parameters in the Controller In the tac controller project, get and set the registration start time (set it to at least 5 minutes in the future): @@ -274,23 +276,23 @@ aea config set vendor.fetchai.skills.tac_control_contract.models.parameters.args ``` To set the registration time, you may find handy the following command: + ``` bash aea config set vendor.fetchai.skills.tac_control_contract.models.parameters.args.registration_start_time "$(date -d "5 minutes" +'%d %m %Y %H:%M')" ``` - -### Update the connection parameters +### Update the Connection Parameters Update the connection parameters of the TAC participants to allow them to connect to the same local agent communication network as the TAC controller. First, retrieve controller's local ACN address by running the following in the controller agent's project terminal: -```bash -aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri +``` bash +aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri ``` - Then, in participant one, run this command (replace `SOME_ADDRESS` with the value you retrieved above): + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -303,6 +305,7 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ ``` Do the same in participant two (beware of the different port numbers): + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -314,11 +317,11 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ }' ``` -## Fund agents' accounts +## Fund Agents' Accounts Retrieve the address of each agent (in each terminal): -```bash +``` bash aea get-address fetchai ``` @@ -333,13 +336,15 @@ aea get-wealth fetchai ### Run the AEAs First, launch the `tac_contract_controller` then the participants by executing the following from their respective terminals: + ``` bash aea run ``` -The CLI tool supports launching several agents at once. +The CLI tool supports launching several agents at once. For example, assuming you followed the tutorial, you can launch both TAC participant agents as follows from the root directory (ensure you run the controller agent first as above): + ``` bash aea launch tac_participant_one tac_participant_two ``` @@ -351,191 +356,191 @@ in the same process. ### Cleaning up When you're finished, delete your AEAs: + ``` bash aea delete tac_controller_contract aea delete tac_participant_one aea delete tac_participant_two ``` -## Demo instructions (Ethereum): +## Demo Instructions (Ethereum) Follow this instruction to run TAC against a local Ganache Ethereum test-net. -### Create TAC controller AEA +### Create TAC Controller AEA In the root directory, fetch the controller AEA: -``` bash -aea fetch fetchai/tac_controller_contract:0.32.4 -cd tac_controller_contract -aea install -aea build -``` - -
Alternatively, create from scratch. -

-The following steps create the controller from scratch: ``` bash -aea create tac_controller_contract +aea fetch fetchai/tac_controller_contract:0.32.5 cd tac_controller_contract -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_control_contract:0.27.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_ledger ethereum -aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum -aea config set --type bool vendor.fetchai.skills.tac_control.is_abstract true -aea config set --type dict agent.default_routing \ -'{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' -aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ -'[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' aea install aea build ``` -

-
- -### Fetch the TAC participant AEAs +??? note "Alternatively, create from scratch:" + The following steps create the controller from scratch: + + ``` bash + aea create tac_controller_contract + cd tac_controller_contract + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/tac_control_contract:0.27.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set agent.default_ledger ethereum + aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum + aea config set --type bool vendor.fetchai.skills.tac_control.is_abstract true + aea config set --type dict agent.default_routing \ + '{ + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ + '[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' + aea install + aea build + ``` + +### Fetch the TAC Participant AEAs In separate terminals, in the root directory, fetch at least two participants: -``` bash -aea fetch fetchai/tac_participant_contract:0.22.4 --alias tac_participant_one -cd tac_participant_one -aea install -aea build -cd .. -aea fetch fetchai/tac_participant_contract:0.22.4 --alias tac_participant_two -cd tac_participant_two -aea install -aea build -``` -
Alternatively, create from scratch. -

- -In a separate terminal, in the root directory, create at least two tac participant AEAs: -``` bash -aea create tac_participant_one -aea create tac_participant_two -``` - -Build participant one: ``` bash +aea fetch fetchai/tac_participant_contract:0.22.5 --alias tac_participant_one cd tac_participant_one -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_ledger ethereum -aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum -aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool -aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool -aea config set --type dict agent.default_routing \ -'{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' -aea config set --type dict agent.decision_maker_handler \ -'{ - "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", - "file_path": null -}' -aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ -'''[{"identifier": "acn", "ledger_id": "ethereum", "message_format": "'{public_key}'", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]''' aea install aea build -``` - -Then, build participant two: -``` bash +cd .. +aea fetch fetchai/tac_participant_contract:0.22.5 --alias tac_participant_two cd tac_participant_two -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, - "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_ledger ethereum -aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum -aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool -aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool -aea config set --type dict agent.default_routing \ -'{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' -aea config set --type dict agent.decision_maker_handler \ -'{ - "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", - "file_path": null -}' -aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ -'''[{"identifier": "acn", "ledger_id": "ethereum", "message_format": "'{public_key}'", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]''' aea install aea build ``` -

-
- -### Configure the agents to use Ethereum +??? note "Alternatively, create from scratch:" + In a separate terminal, in the root directory, create at least two tac participant AEAs: + + ``` bash + aea create tac_participant_one + aea create tac_participant_two + ``` + + Build participant one: + + ``` bash + cd tac_participant_one + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/tac_participation:0.25.6 + aea add skill fetchai/tac_negotiation:0.29.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set agent.default_ledger ethereum + aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum + aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool + aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool + aea config set --type dict agent.default_routing \ + '{ + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea config set --type dict agent.decision_maker_handler \ + '{ + "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", + "file_path": null + }' + aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ + '''[{"identifier": "acn", "ledger_id": "ethereum", "message_format": "'{public_key}'", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]''' + aea install + aea build + ``` + + Then, build participant two: + + ``` bash + cd tac_participant_two + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/tac_participation:0.25.6 + aea add skill fetchai/tac_negotiation:0.29.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, + "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set agent.default_ledger ethereum + aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum + aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool + aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool + aea config set --type dict agent.default_routing \ + '{ + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea config set --type dict agent.decision_maker_handler \ + '{ + "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", + "file_path": null + }' + aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ + '''[{"identifier": "acn", "ledger_id": "ethereum", "message_format": "'{public_key}'", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]''' + aea install + aea build + ``` + +### Configure the Agents to Use Ethereum Run the following in every AEA's terminal: -```bash +``` bash aea config set agent.default_ledger ethereum json=$(printf '[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "message_format": "{public_key}", "save_path": ".certs/conn_cert.txt"}]') aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests "$json" aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum ``` -### Add keys for all AEAs +### Add Keys for All AEAs For every AEA in the competition (controller and participants): First generate and add a private key: + ``` bash aea generate-key ethereum aea add-key ethereum ethereum_private_key.txt ``` Then create and add a separate private key for secure communication: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -### Update the game parameters in the controller +### Update the Game Parameters in the Controller In the tac controller project, get and set the registration start time (set it to at least 5 minutes in the future): @@ -545,22 +550,23 @@ aea config set vendor.fetchai.skills.tac_control_contract.models.parameters.args ``` To set the registration time, you may find handy the following command: + ``` bash aea config set vendor.fetchai.skills.tac_control_contract.models.parameters.args.registration_start_time "$(date -d "5 minutes" +'%d %m %Y %H:%M')" ``` - -### Update the connection parameters +### Update the Connection Parameters Update the connection parameters of the TAC participants to allow them to connect to the same local agent communication network as the TAC controller. First, retrieve controller's local ACN address by running the following in the controller agent's project terminal: -```bash -aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri +``` bash +aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri ``` Then, in participant one, run this command (replace `SOME_ADDRESS` with the value you retrieved above): + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -573,6 +579,7 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ ``` Do the same in participant two (beware of the different port numbers): + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -584,9 +591,10 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ }' ``` -## Fund agents' accounts +## Fund Agents' Accounts Run a local Ganache Ethereum test-net with funds for the addresses of the three AEAs in this demo: + ``` bash docker run -p 8545:8545 trufflesuite/ganache-cli:latest --verbose --gasPrice=0 --gasLimit=0x1fffffffffffff --account="$(cat tac_controller_contract/ethereum_private_key.txt),1000000000000000000000" --account="$(cat tac_participant_one/ethereum_private_key.txt),1000000000000000000000" --account="$(cat tac_participant_two/ethereum_private_key.txt),1000000000000000000000" ``` @@ -602,13 +610,15 @@ You should get `1000000000000000000000`. ### Run the AEAs First, launch the `tac_contract_controller` then the participants by executing the following from their respective terminals: + ``` bash aea run ``` -The CLI tool supports launching several agents at once. +The CLI tool supports launching several agents at once. For example, assuming you followed the tutorial, you can launch both TAC participant agents as follows from the root directory (ensure you run the controller agent first as above): + ``` bash aea launch tac_participant_one tac_participant_two ``` @@ -620,6 +630,7 @@ in the same process. ### Cleaning up When you're finished, delete your AEAs: + ``` bash aea delete tac_controller_contract aea delete tac_participant_one diff --git a/docs/tac-skills.md b/docs/tac-skills.md index 2154767d12..fc1bd69f71 100644 --- a/docs/tac-skills.md +++ b/docs/tac-skills.md @@ -1,25 +1,28 @@ +# TAC Skills + The AEA TAC - trading agent competition - skills demonstrate an interaction between multiple AEAs in a game. There are two types of AEAs: -* The `tac_controller` which coordinates the game. -* The `tac_participant` AEAs which compete in the game. The `tac_participant` AEAs trade tokens with each other to maximize their utility. +- The `tac_controller` which coordinates the game. +- The `tac_participant` AEAs which compete in the game. The `tac_participant` AEAs trade tokens with each other to maximize their utility. ## Discussion -The scope of this specific demo is to demonstrate how the agents negotiate autonomously with each other while they pursue their goals by playing a game of TAC. Another AEA has the role of the controller and it's responsible for calculating the revenue for each participant and if the transaction messages are valid. Transactions are settled with the controller agent rather than against a public ledger. +The scope of this specific demo is to demonstrate how the agents negotiate autonomously with each other while they pursue their goals by playing a game of TAC. Another AEA has the role of the controller, responsible for calculating the revenue for each participant and checking if the transaction messages are valid. Transactions are settled with the controller agent rather than against a public ledger. ## Communication There are two types of interactions: + - between the participants and the controller, the game communication - between the participants, the negotiation -### Registration communication +### Registration Communication -This diagram shows the communication between the various entities during the registration phase. +This diagram shows the communication between the various entities during the registration phase. -
+``` mermaid sequenceDiagram participant Agent_2 participant Agent_1 @@ -46,13 +49,13 @@ This diagram shows the communication between the various entities during the reg deactivate Agent_2 deactivate Search deactivate Controller -
+``` -### Transaction communication +### Transaction Communication This diagram shows the communication between two AEAs and the controller. In this case, we have an AEA in the role of the seller, referred to as `Seller_Agent`. We also have an AEA in the role of the buyer, referred to as `Buyer_Agent`. During a given TAC, an AEA can be in both roles simultaneously in different bilateral interactions. -
+``` mermaid sequenceDiagram participant Buyer_Agent participant Seller_Agent @@ -80,22 +83,21 @@ This diagram shows the communication between two AEAs and the controller. In thi deactivate Seller_Agent deactivate Search deactivate Controller - -
+``` In the above case, the proposal received contains a set of good which the seller wishes to sell and a cost of them. The buyer AEA needs to determine if this is a good deal for them and if so, it accepts. -There is an equivalent diagram for seller AEAs set up to search for buyers and their interaction with AEAs which are registered as buyers. In that scenario, the proposal will instead, be a list of goods that the buyer wishes to buy and the price it is willing to pay for them. +There is an equivalent diagram for seller AEAs set up to search for buyers and their interaction with AEAs which are registered as buyers. In that scenario, the proposal will instead, be a list of goods that the buyer wishes to buy and the price it is willing to pay for them. -## Option 1: AEA Manager approach +## Option 1: AEA Manager Approach -Follow this approach when using the AEA Manager Desktop app. Otherwise, skip and follow the CLI approach below. +Follow this approach when using the AEA Manager Desktop app. Otherwise, skip and follow the CLI approach below. -### Preparation instructions +### Preparation Instructions Install the AEA Manager. -### Demo instructions +### Demo Instructions The following steps assume you have launched the AEA Manager Desktop app. @@ -109,187 +111,189 @@ The following steps assume you have launched the AEA Manager Desktop app. 5. Run the `controller` AEA. Navigate to its logs and copy the multiaddress displayed. Stop the `controller`. -5. Navigate to the settings of `participant_1` and under `components > connection >` `fetchai/p2p_libp2p:0.22.0` update as follows (make sure to replace the placeholder with the multiaddress): -``` bash -{ - "delegate_uri": "127.0.0.1:11001", - "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], - "local_uri": "127.0.0.1:9001", - "log_file": "libp2p_node.log", - "public_uri": "127.0.0.1:9001" -} -``` +6. Navigate to the settings of `participant_1` and under `components > connection >` `fetchai/p2p_libp2p:0.22.0` update as follows (make sure to replace the placeholder with the multiaddress): -6. Navigate to the settings of `participant_2` and under `components > connection >` `fetchai/p2p_libp2p:0.22.0` update as follows (make sure to replace the placeholder with the multiaddress): -``` bash -{ - "delegate_uri": "127.0.0.1:11002", - "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], - "local_uri": "127.0.0.1:9002", - "log_file": "libp2p_node.log", - "public_uri": "127.0.0.1:9002" -} -``` + ``` bash + { + "delegate_uri": "127.0.0.1:11001", + "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], + "local_uri": "127.0.0.1:9001", + "log_file": "libp2p_node.log", + "public_uri": "127.0.0.1:9001" + } + ``` + +7. Navigate to the settings of `participant_2` and under `components > connection >` `fetchai/p2p_libp2p:0.22.0` update as follows (make sure to replace the placeholder with the multiaddress): -7. You may add more participants by repeating steps 3 (with an updated name) and 6 (bumping the port numbers. See the difference between steps 5 and 6). + ``` bash + { + "delegate_uri": "127.0.0.1:11002", + "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], + "local_uri": "127.0.0.1:9002", + "log_file": "libp2p_node.log", + "public_uri": "127.0.0.1:9002" + } + ``` -8. Run the `controller`, then `participant_1` and `participant_2` (and any other participants you added). +8. You may add more participants by repeating steps 3 (with an updated name) and 6 (bumping the port numbers. See the difference between steps 5 and 6). + +9. Run the `controller`, then `participant_1` and `participant_2` (and any other participants you added). In the `controller`'s log, you should see the details of the transactions participants submit as well as changes in their scores and holdings. In participants' logs, you should see the agents trading. -
-## Option 2: CLI approach +## Option 2: CLI Approach Follow this approach when using the `aea` CLI. -## Preparation instructions +## Preparation Instructions ### Dependencies Follow the Preliminaries and Installation sections from the AEA quick start. -## Demo instructions: +## Demo Instructions -### Create TAC controller AEA +### Create TAC Controller AEA In the root directory, fetch the controller AEA: -``` bash -aea fetch fetchai/tac_controller:0.30.4 -cd tac_controller -aea install -aea build -``` - -
Alternatively, create from scratch. -

-The following steps create the controller from scratch: ``` bash -aea create tac_controller +aea fetch fetchai/tac_controller:0.30.5 cd tac_controller -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_control:0.25.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_ledger fetchai -aea config set --type dict agent.default_routing \ -'{ - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' aea install aea build ``` -

-
- -### Create the TAC participant AEAs +??? note "Alternatively, create from scratch:" + + The following steps create the controller from scratch: + + ``` bash + aea create tac_controller + cd tac_controller + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/tac_control:0.25.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set agent.default_ledger fetchai + aea config set --type dict agent.default_routing \ + '{ + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea install + aea build + ``` + +### Create the TAC Participant AEAs In a separate terminal, in the root directory, fetch at least two participants: -``` bash -aea fetch fetchai/tac_participant:0.32.4 --alias tac_participant_one -cd tac_participant_one -aea install -aea build -cd .. -aea fetch fetchai/tac_participant:0.32.4 --alias tac_participant_two -cd tac_participant_two -aea build -``` - -
Alternatively, create from scratch. -

-In a separate terminal, in the root directory, create at least two tac participant AEAs: -``` bash -aea create tac_participant_one -aea create tac_participant_two -``` - -Build participant one: ``` bash +aea fetch fetchai/tac_participant:0.32.5 --alias tac_participant_one cd tac_participant_one -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_ledger fetchai -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' -aea config set --type dict agent.decision_maker_handler \ -'{ - "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", - "file_path": null -}' aea install aea build -``` - -Then, build participant two: -``` bash +cd .. +aea fetch fetchai/tac_participant:0.32.5 --alias tac_participant_two cd tac_participant_two -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_ledger fetchai -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' -aea config set --type dict agent.decision_maker_handler \ -'{ - "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", - "file_path": null -}' -aea install aea build ``` -

-
- -### Add keys for all AEAs +??? note "Alternatively, create from scratch:" + + In a separate terminal, in the root directory, create at least two tac participant AEAs: + + ``` bash + aea create tac_participant_one + aea create tac_participant_two + ``` + + Build participant one: + + ``` bash + cd tac_participant_one + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/tac_participation:0.25.6 + aea add skill fetchai/tac_negotiation:0.29.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set agent.default_ledger fetchai + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea config set --type dict agent.decision_maker_handler \ + '{ + "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", + "file_path": null + }' + aea install + aea build + ``` + + Then, build participant two: + + ``` bash + cd tac_participant_two + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/tac_participation:0.25.6 + aea add skill fetchai/tac_negotiation:0.29.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set agent.default_ledger fetchai + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea config set --type dict agent.decision_maker_handler \ + '{ + "dotted_path": "aea.decision_maker.gop:DecisionMakerHandler", + "file_path": null + }' + aea install + aea build + ``` + +### Add Keys for All AEAs Create the private key for the AEA for Fetch.ai `Dorado`: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -### Update the game parameters in the controller +### Update the Game Parameters in the Controller Navigate to the tac controller project, then use the command line to get and set the start time (set it to at least two minutes in the future): @@ -299,11 +303,12 @@ aea config set vendor.fetchai.skills.tac_control.models.parameters.args.registra ``` To set the registration time, you may find handy the following command: + ``` bash aea config set vendor.fetchai.skills.tac_control.models.parameters.args.registration_start_time "$(date -d "2 minutes" +'%d %m %Y %H:%M')" ``` -### Update the connection parameters +### Update the Connection Parameters Briefly run the controller AEA: @@ -311,9 +316,10 @@ Briefly run the controller AEA: aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` to retrieve the address.) +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` to retrieve the address.) Then, in the participant one, run this command (replace `SOME_ADDRESS` with the correct value as described above): + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -326,6 +332,7 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ ``` Do the same in participant two (beware of the different port numbers): + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -339,10 +346,10 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ This allows the TAC participants to connect to the same local agent communication network as the TAC controller. - ### Run the AEAs First, launch the `tac_controller`: + ``` bash aea run ``` @@ -352,6 +359,7 @@ at once. For example, assuming you followed the tutorial, you can launch both the TAC agents as follows from the root directory: + ``` bash aea launch tac_participant_one tac_participant_two ``` @@ -363,8 +371,9 @@ in the same process. ### Cleaning up When you're finished, delete your AEAs: + ``` bash aea delete tac_controller aea delete tac_participant_one aea delete tac_participant_two -``` \ No newline at end of file +``` diff --git a/docs/tac.md b/docs/tac.md index 74b60dc6ac..bc060cbd7d 100644 --- a/docs/tac.md +++ b/docs/tac.md @@ -1,16 +1,19 @@ -The original TAC has its own repo. +# TAC External App -Follow the instructions below to build and run the TAC demo. +!!! note + This app is no longer maintained. + +The original TAC has its own repo. +Follow the instructions below to build and run the TAC demo. ## Requirements Make sure you are running Docker and Docker Compose. +## Quick Start -## Quick start - -Clone the repo to include sub-modules. +Clone the repo to include submodules. ``` bash git clone git@github.com:fetchai/agents-tac.git --recursive && cd agents-tac @@ -24,7 +27,6 @@ which pipenv If you don't have it, install it. Instructions are here. - Create and launch a virtual environment. ``` bash @@ -37,13 +39,12 @@ Install the dependencies. pipenv install ``` - Install the package. + ``` bash python setup.py install ``` - Run the launch script. This may take a while. ``` bash @@ -58,7 +59,7 @@ In the Environment tab, make sure you have the `tac_controller` environment sele AEA Visdom UI -## Alternative build and run +## Alternative Build and Run In a new terminal window, clone the repo, build the sandbox, and launch it. @@ -79,7 +80,7 @@ python templates/v1/basic.py --name my_agent --dashboard Click through to the controller GUI. -## Possible gotchas +## Possible Gotchas Stop all running containers before restart. @@ -93,7 +94,3 @@ To remove all images, run the following command. # mac docker ps -q | xargs docker stop ; docker system prune -a ``` - - - -
\ No newline at end of file diff --git a/docs/thermometer-skills.md b/docs/thermometer-skills.md index 679eaaac19..855ff04051 100644 --- a/docs/thermometer-skills.md +++ b/docs/thermometer-skills.md @@ -1,7 +1,9 @@ -The AEA thermometer skills demonstrate an interaction between two AEAs, one purchasing temperature data from the other. +# Thermometer Skills -* The provider of thermometer data (the `thermometer`). -* The buyer of thermometer data (the `thermometer_client`). +The AEA thermometer skills demonstrate an interaction between two AEAs, one purchasing temperature data from the other. + +- The provider of thermometer data (the `thermometer`). +- The buyer of thermometer data (the `thermometer_client`). ## Discussion @@ -9,9 +11,9 @@ This demo aims to demonstrate how to create a very simple AEA with the usage of ## Communication -This diagram shows the communication between the various entities as data is successfully sold by the thermometer AEA to the client AEA. +This diagram shows the communication between the various entities as data is successfully sold by the thermometer AEA to the client AEA. -
+``` mermaid sequenceDiagram participant Search participant Client_AEA @@ -39,169 +41,168 @@ This diagram shows the communication between the various entities as data is suc deactivate Search deactivate Thermometer_AEA deactivate Blockchain - -
-
+``` -## Option 1: AEA Manager approach +## Option 1: AEA Manager Approach -Follow this approach when using the AEA Manager Desktop app. Otherwise, skip and follow the CLI approach below. +Follow this approach when using the AEA Manager Desktop app. Otherwise, skip and follow the CLI approach below. -### Preparation instructions +### Preparation Instructions Install the AEA Manager. -### Demo instructions +### Demo Instructions The following steps assume you have launched the AEA Manager Desktop app. -1. Add a new AEA called `my_thermometer_aea` with public id `fetchai/thermometer_aea:0.30.4`. +1. Add a new AEA called `my_thermometer_aea` with public id `fetchai/thermometer_aea:0.30.5`. -2. Add another new AEA called `my_thermometer_client` with public id `fetchai/thermometer_client:0.32.4`. +2. Add another new AEA called `my_thermometer_client` with public id `fetchai/thermometer_client:0.32.5`. 3. Copy the address from the `my_thermometer_client` into your clip board. Then go to the Dorado block explorer and request some test tokens via `Get Funds`. 4. Run the `my_thermometer_aea` AEA. Navigate to its logs and copy the multiaddress displayed. 5. Navigate to the settings of the `my_thermometer_client` and under `components > connection >` `fetchai/p2p_libp2p:0.22.0` update as follows (make sure to replace the placeholder with the multiaddress): -``` bash -{ - "delegate_uri": "127.0.0.1:11001", - "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], - "local_uri": "127.0.0.1:9001", - "log_file": "libp2p_node.log", - "public_uri": "127.0.0.1:9001" -} -``` + + ``` bash + { + "delegate_uri": "127.0.0.1:11001", + "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], + "local_uri": "127.0.0.1:9001", + "log_file": "libp2p_node.log", + "public_uri": "127.0.0.1:9001" + } + ``` 6. Run the `my_thermometer_client`. In the AEA's logs, you should see the agent trading successfully. -
-## Option 2: CLI approach +## Option 2: CLI Approach Follow this approach when using the `aea` CLI. -### Preparation instructions - +### Preparation Instructions + #### Dependencies Follow the Preliminaries and Installation sections from the AEA quick start. -### Demo instructions +### Demo Instructions A demo to run the thermometer scenario with a true ledger transaction This demo assumes the buyer trusts the seller AEA to send the data upon successful payment. -#### Create thermometer AEA +#### Create Thermometer AEA First, fetch the thermometer AEA: -``` bash -aea fetch fetchai/thermometer_aea:0.30.4 --alias my_thermometer_aea -cd my_thermometer_aea -aea install -aea build -``` -
Alternatively, create from scratch. -

- -The following steps create the thermometer AEA from scratch: ``` bash -aea create my_thermometer_aea +aea fetch fetchai/thermometer_aea:0.30.5 --alias my_thermometer_aea cd my_thermometer_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/thermometer:0.27.5 aea install aea build -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' ``` -

-
- -#### Create thermometer client +??? note "Alternatively, create from scratch:" + The following steps create the thermometer AEA from scratch: + + ``` bash + aea create my_thermometer_aea + cd my_thermometer_aea + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/thermometer:0.27.6 + aea install + aea build + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + ``` + +#### Create Thermometer Client Then, fetch the thermometer client AEA: -``` bash -aea fetch fetchai/thermometer_client:0.32.4 --alias my_thermometer_client -cd my_thermometer_client -aea install -aea build -``` - -
Alternatively, create from scratch. -

-The following steps create the thermometer client from scratch: ``` bash -aea create my_thermometer_client +aea fetch fetchai/thermometer_client:0.32.5 --alias my_thermometer_client cd my_thermometer_client -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/thermometer_client:0.26.5 aea install aea build -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' ``` -

-
- -#### Add keys for the thermometer AEA +??? note "Alternatively, create from scratch:" + The following steps create the thermometer client from scratch: + + ``` bash + aea create my_thermometer_client + cd my_thermometer_client + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/thermometer_client:0.26.6 + aea install + aea build + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + ``` + +#### Add Keys for the Thermometer AEA First, create the private key for the thermometer AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -#### Add keys and generate wealth for the thermometer client AEA +#### Add Keys and Generate Wealth for the Thermometer Client AEA The thermometer client needs to have some wealth to purchase the thermometer information. First, create the private key for the thermometer client AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Then, create some wealth for your thermometer client based on the network you want to transact with. On the Fetch.ai `testnet` network: + ``` bash aea generate-wealth fetchai ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` @@ -216,9 +217,10 @@ First, run the thermometer AEA: aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the thermometer AEA. +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the thermometer AEA. Then, in the thermometer client, run this command (replace `SOME_ADDRESS` with the correct value as described above): + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -229,9 +231,11 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + This allows the thermometer client to connect to the same local agent communication network as the thermometer AEA. Then run the thermometer client AEA: + ``` bash aea run ``` @@ -247,5 +251,3 @@ cd .. aea delete my_thermometer_aea aea delete my_thermometer_client ``` - -
\ No newline at end of file diff --git a/docs/trust.md b/docs/trust.md index b7d20f5d92..1bccb3428a 100644 --- a/docs/trust.md +++ b/docs/trust.md @@ -1,11 +1,11 @@ +# Trust Minimisation + AEA applications have different requirements for _trustlessness_ or _trust minimisation_. For example, using the AEA weather skills demo _without_ ledger payments means that the client has to trust the weather station to send the weather data it purchased and that this data is in fact valid. Similarly, the weather station must trust that the client somehow sends the payment amount to which they agreed. -A step up, if you run the weather skills demo with a ledger (e.g. Fetch.ai or Ethereum) then the client must still trust that the weather station sends valid data. However, all payment transactions are executed via the public ledger. This means the weather station no longer needs to trust the client for payment and can verify whether the transactions take place on the public ledger. +A step-up, if you run the weather skills demo with a ledger (e.g. Fetch.ai or Ethereum) then the client must still trust that the weather station sends valid data. However, all payment transactions are executed via the public ledger. This means the weather station no longer needs to trust the client for payment and can verify whether the transactions take place on the public ledger. We can further minimise trust requirements by incorporating a third party as an arbitrator or escrow implemented in a smart contract to further reduce trust requirements. However, in the current weather skills demo, there are limits to trustlessness as the station ultimately offers unverifiable data. Another example of minimising trust, is applications with (non-fungible) token transactions involving atomic swaps where trustlessness is clearly satisfied (e.g. in the TAC demo). - -
diff --git a/docs/upgrading.md b/docs/upgrading.md index 78fc5f6940..7fc1ae037f 100644 --- a/docs/upgrading.md +++ b/docs/upgrading.md @@ -1,3 +1,5 @@ +# Upgrading + This page provides some tips on how to upgrade AEA projects between different versions of the AEA framework. For full release notes check the AEA repo. The primary tool for upgrading AEA projects is the `aea upgrade` command in the CLI. @@ -20,7 +22,6 @@ Update the packages to the latest versions (especially protocols). Regenerate your own written protocols (protocol generator was updated) - ## `v1.1.1` to `v1.2.0` Ensure you update the plugins to their latest version (fetchai and cosmos plugins are changed in this release) @@ -89,7 +90,7 @@ Take special care when upgrading to `v0.11.0`. We introduced several breaking ch We removed the CLI GUI. It was not used by anyone as far as we know and needs to be significantly improved. Soon we will release the AEA Manager App to make up for this. -### Message routing +### Message Routing Routing has been completely revised and simplified. The new message routing logic is described here. @@ -99,7 +100,7 @@ When upgrading take the following steps: - For component-to-component communication: there is now only one single way to route component to component (skill to skill, skill to connection, connection to skill) messages, this is by specifying the component id in string form in the `sender`/`to` field. The `EnvelopeContext` can no longer be used, messages are routed based on their target (`to` field). Ensure that dialogues in skills set the `skill_id` as the `self_address` (in connections they need to set the `connection_id`). -### Agent configuration and ledger plugins +### Agent Configuration and Ledger Plugins Agent configuration files have a new optional field, `dependencies`, analogous to `dependencies` field in other AEA packages. The default value is the empty object `{}`. The field will be made mandatory in the next release. @@ -110,7 +111,8 @@ Crypto modules have been extracted and released as independent plug-ins, release - Cosmos crypto classes have been released in the `aea-ledger-cosmos` package. If an AEA project, or an AEA package, makes use of crypto functionalities, it will be needed to add the above packages as PyPI dependencies with version specifiers ranging from the latest minor and the latest minor + 1 (excluded). E.g. if the latest version if `0.1.0`, the version specifier should be `<0.2.0,>=0.1.0`: -```yaml + +``` yaml dependencies: aea-ledger-cosmos: version: <2.0.0,>=1.0.0 @@ -119,6 +121,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 ``` + The version specifier sets are important, as these plug-ins, at version `0.1.0`, depend on a specific range of the `aea` package. Then, running `aea install` inside the AEA project should install them in the current Python environment. @@ -131,7 +134,7 @@ No backwards incompatible changes for skill and connection development. ## `v0.9.2` to `v0.10.0` -Skill development sees no backward incompatible changes. +Skill development sees no backward incompatible changes. Connection development requires updating the keyword arguments of the constructor: the new `data_dir` argument must be defined. @@ -208,11 +211,11 @@ from aea.configurations.base import PublicId PUBLIC_ID = PublicId.from_str("author/name:0.1.0") ``` + - The `fetchai/http` protocol's `bodyy` field has been renamed to `body`. - Skills can now specify `connections` as dependencies in the configuration YAML. - ## `v0.6.2` to `v0.6.3` A new `upgrade` command is introduced to upgrade agent projects and components to their latest versions on the registry. To use the command first upgrade the AEA PyPI package to the latest version, then enter your project and run `aea upgrade`. The project's vendor dependencies will be updated where possible. @@ -227,11 +230,12 @@ The `soef` connection and `oef_search` protocol have backward incompatible chang ## `v0.5.4` to `v0.6.0` -### `Dialogue` and `Dialogues` API updates +### `Dialogue` and `Dialogues` API Updates The dialogue and dialogues APIs have changed significantly. The constructor is different for both classes and there are now four primary methods for the developer: - `Dialogues.create`: this method is used to create a new dialogue and message: + ``` python cfp_msg, fipa_dialogue = fipa_dialogues.create( counterparty=opponent_address, @@ -239,26 +243,32 @@ cfp_msg, fipa_dialogue = fipa_dialogues.create( query=query, ) ``` + The method will raise if the provided arguments are inconsistent. - `Dialogues.create_with_message`: this method is used to create a new dialogue from a message: + ``` python fipa_dialogue = fipa_dialogues.create_with_message( counterparty=opponent_address, initial_message=cfp_msg ) ``` + The method will raise if the provided arguments are inconsistent. - `Dialogues.update`: this method is used to handle messages passed by the framework: + ``` python fipa_dialogue = fipa_dialogues.update( message=cfp_msg ) ``` + The method will return a valid dialogue if it is a valid message, otherwise it will return `None`. - `Dialogue.reply`: this method is used to reply within a dialogue: + ``` python proposal_msg = fipa_dialogue.reply( performative=FipaMessage.Performative.PROPOSE, @@ -266,23 +276,24 @@ proposal_msg = fipa_dialogue.reply( proposal=proposal, ) ``` + The method will raise if the provided arguments are inconsistent. The new methods significantly reduce the lines of code needed to maintain a dialogue. They also make it easier for the developer to construct valid dialogues and messages. -### `FetchAICrypto` - default crypto +### `FetchAICrypto` - Default Crypto The `FetchAICrypto` has been upgraded to the default crypto. Update your `default_ledger` to `fetchai`. -### Private key file naming +### Private Key File Naming The private key files are now consistently named with the `ledger_id` followed by `_private_key.txt` (e.g. `fetchai_private_key.txt`). Rename your existing files to match this pattern. -### Type in package YAML +### Type in Package YAML The package YAML files now contain a type field. This must be added for the loading mechanism to work properly. -### Moved address type +### Moved Address Type The address type has moved to `aea.common`. The import paths must be updated. @@ -321,65 +332,63 @@ Connections are now added via - +- Message sending in the skills has been updated. In the past you had to construct messages, then serialize them and place them in an envelope: + + ``` python + cfp_msg = FipaMessage(...) + self.context.outbox.put_message( + to=opponent_addr, + sender=self.context.agent_address, + protocol_id=FipaMessage.protocol_id, + message=FipaSerializer().encode(cfp_msg), + ) + # or + cfp_msg = FipaMessage(...) + envelope = Envelope( + to=opponent_addr, + sender=self.context.agent_address, + protocol_id=FipaMessage.protocol_id, + message=FipaSerializer().encode(cfp_msg), + ) + self.context.outbox.put(envelope) + ``` + + Now this has been simplified to: + + ``` python + cfp_msg = FipaMessage(...) + cfp_msg.counterparty = opponent_addr + self.context.outbox.put_message(message=cfp_msg) + ``` + + You must update your skills as the old implementation is no longer supported. + +- Connection constructors have been simplified. In the past you had to implement both the `__init__` as well as the `from_config` methods of a Connection. Now you only have to implement the `__init__` method which by default at load time now receives the following keyword arguments: `configuration: ConnectionConfig, identity: Identity, crypto_store: CryptoStore`. See for example in the scaffold connection: + + ``` python + class MyScaffoldConnection(Connection): + """Proxy to the functionality of the SDK or API.""" + + connection_id = PublicId.from_str("fetchai/scaffold:0.1.0") + + def __init__( + self, + configuration: ConnectionConfig, + identity: Identity, + crypto_store: CryptoStore, + ): + """ + Initialize a connection to an SDK or API. + + :param configuration: the connection configuration. + :param crypto_store: object to access the connection crypto objects. + :param identity: the identity object. + """ + super().__init__( + configuration=configuration, crypto_store=crypto_store, identity=identity + ) + ``` + + As a result of this feature, you are now able to pass key-pairs to your connections via the `CryptoStore`. + + You must update your connections as the old implementation is no longer supported. diff --git a/docs/version.md b/docs/version.md index e41a3bd1ec..a44a6123ec 100644 --- a/docs/version.md +++ b/docs/version.md @@ -1,6 +1,8 @@ +# Version + The latest version of the Python implementation of the AEA Framework: -PyPI. +PyPI. The framework is under rapid development with frequent breaking changes in the run-up to version `1.0` which is due in Q1 2021. diff --git a/docs/vision.md b/docs/vision.md index 11cce3e5a4..a7384e2c64 100644 --- a/docs/vision.md +++ b/docs/vision.md @@ -1,19 +1,19 @@ +# Vision + Our vision is that the AEA framework enables businesses of all sizes, from single independent developers to large corporations and consortiums, to create and deploy agent-based solutions in different domains, thus contributing to and advancing a decentralized agent economy as envisaged by Fetch.ai. -## Open source technology for everyone +## Open Source Technology for Everyone -We are creating infrastructure for developers to build their own agent-based solutions. +We are creating infrastructure for developers to build their own agent-based solutions. AEA users include, amongst others: -* Data scientists -* Economists -* Researchers (Artificial Intelligence, Machine Learning, Multi-Agent Systems) -* Engineers -* Machine learning experts -* Independent developers -* Students and academics -* Crypto connoisseurs and enthusiasts -* Web developers - -
\ No newline at end of file +- Data scientists +- Economists +- Researchers (Artificial Intelligence, Machine Learning, Multi-Agent Systems) +- Engineers +- Machine learning experts +- Independent developers +- Students and academics +- Crypto connoisseurs and enthusiasts +- Web developers diff --git a/docs/wealth.md b/docs/wealth.md index 3ee782d841..6c009f073b 100644 --- a/docs/wealth.md +++ b/docs/wealth.md @@ -1,41 +1,47 @@ +# Generating Wealth To fund an AEA for testing on a test-net you need to request some test tokens from a faucet. First, make sure you have installed the crypto plugin of the target test-net. E.g. for Fetch.AI: + ``` bash pip install aea-ledger-fetchai ``` And for Ethereum: + ``` bash pip install aea-ledger-ethereum ``` Add a private key to the agent + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + or + ``` bash aea generate-key ethereum aea add-key ethereum ethereum_private_key.txt ``` -
-

Note

-

If you already have keys in your project, the commands will prompt you for confirmation whether or not to replace the existing keys. -

-
+!!! note + If you already have keys in your project, the commands prompt you to confirm whether to replace the existing keys. -## Using a faucet website +## Using a Faucet Website First, print the address: + ``` bash aea get-address fetchai ``` -or + +or + ``` bash aea get-address ethereum ``` @@ -43,10 +49,13 @@ aea get-address ethereum This will print the address to the console. Copy the address into the clipboard and request test tokens from the faucet here for Fetch.ai or here for Ethereum. It will take a while for the tokens to become available. Second, after some time, check the wealth associated with the address: + ``` bash aea get-wealth fetchai ``` + or + ``` bash aea get-wealth ethereum ``` @@ -54,18 +63,16 @@ aea get-wealth ethereum ## Using the CLI Simply generate wealth via the CLI: + ``` bash aea generate-wealth fetchai ``` -or + +or + ``` bash aea generate-wealth ethereum ``` -
-

Note

-

This approach can be unreliable for non-fetchai test nets. -

-
- -
+!!! note + This approach can be unreliable for non-fetchai test nets. diff --git a/docs/weather-skills.md b/docs/weather-skills.md index 1ce4784be7..a74e429a92 100644 --- a/docs/weather-skills.md +++ b/docs/weather-skills.md @@ -1,7 +1,9 @@ +# Weather Skills + The AEA weather skills demonstrate an interaction between two AEAs. -* The provider of weather data (the `weather_station`). -* The buyer of weather data (the `weather_client`). +- The provider of weather data (the `weather_station`). +- The buyer of weather data (the `weather_client`). ## Discussion @@ -13,9 +15,9 @@ You can use this AEA as an example of how to read data from a database and adver ## Communication -This diagram shows the communication between the various entities as data is successfully sold by the weather station AEA to the client. +This diagram shows the communication between the various entities as data is successfully sold by the weather station AEA to the client. -
+``` mermaid sequenceDiagram participant Search participant Client_AEA @@ -42,181 +44,178 @@ This diagram shows the communication between the various entities as data is suc deactivate Client_AEA deactivate Search deactivate Weather_AEA - deactivate Blockchain - -
-
+ deactivate Blockchain +``` -## Option 1: AEA Manager approach +## Option 1: AEA Manager Approach -Follow this approach when using the AEA Manager Desktop app. Otherwise, skip and follow the CLI approach below. +Follow this approach when using the AEA Manager Desktop app. Otherwise, skip and follow the CLI approach below. -### Preparation instructions +### Preparation Instructions Install the AEA Manager. -### Demo instructions +### Demo Instructions The following steps assume you have launched the AEA Manager Desktop app. -1. Add a new AEA called `my_weather_station` with public id `fetchai/weather_station:0.32.4`. +1. Add a new AEA called `my_weather_station` with public id `fetchai/weather_station:0.32.5`. -2. Add another new AEA called `my_weather_client` with public id `fetchai/weather_client:0.33.4`. +2. Add another new AEA called `my_weather_client` with public id `fetchai/weather_client:0.33.5`. 3. Copy the address from the `my_weather_client` into your clip board. Then go to the Dorado block explorer and request some test tokens via `Get Funds`. 4. Run the `my_weather_station` AEA. Navigate to its logs and copy the multiaddress displayed. 5. Navigate to the settings of the `my_weather_client` and under `components > connection >` `fetchai/p2p_libp2p:0.22.0` update as follows (make sure to replace the placeholder with the multiaddress): -``` bash -{ - "delegate_uri": "127.0.0.1:11001", - "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], - "local_uri": "127.0.0.1:9001", - "log_file": "libp2p_node.log", - "public_uri": "127.0.0.1:9001" -} -``` + + ``` bash + { + "delegate_uri": "127.0.0.1:11001", + "entry_peers": ["REPLACE_WITH_MULTI_ADDRESS_HERE"], + "local_uri": "127.0.0.1:9001", + "log_file": "libp2p_node.log", + "public_uri": "127.0.0.1:9001" + } + ``` 6. Run the `my_weather_client`. In the AEA's logs, you should see the agent trading successfully. -
-## Option 2: CLI approach +## Option 2: CLI Approach Follow this approach when using the `aea` CLI. -### Preparation instructions +### Preparation Instructions #### Dependencies Follow the Preliminaries and Installation sections from the AEA quick start. -### Demo instructions: +### Demo Instructions A demo to run the same scenario but with a true ledger transaction on Fetch.ai `testnet` or Ethereum `ropsten` network. This demo assumes the buyer trusts the seller AEA to send the data upon successful payment. -#### Create the weather station +#### Create the Weather Station First, fetch the AEA that will provide weather measurements: -``` bash -aea fetch fetchai/weather_station:0.32.4 --alias my_weather_station -cd my_weather_station -aea install -aea build -``` -
Alternatively, create from scratch. -

- -The following steps create the weather station from scratch: ``` bash -aea create my_weather_station +aea fetch fetchai/weather_station:0.32.5 --alias my_weather_station cd my_weather_station -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/weather_station:0.27.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' aea install aea build ``` -

-
- - -#### Create the weather client +??? note "Alternatively, create from scratch:" + The following steps create the weather station from scratch: + + ``` bash + aea create my_weather_station + cd my_weather_station + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/weather_station:0.27.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea install + aea build + ``` + +#### Create the Weather Client In another terminal, fetch the AEA that will query the weather station: -``` bash -aea fetch fetchai/weather_client:0.33.4 --alias my_weather_client -cd my_weather_client -aea install -aea build -``` - -
Alternatively, create from scratch. -

-The following steps create the weather client from scratch: ``` bash -aea create my_weather_client +aea fetch fetchai/weather_client:0.33.5 --alias my_weather_client cd my_weather_client -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/weather_client:0.26.5 -aea config set --type dict agent.dependencies \ -'{ - "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} -}' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 -aea config set --type dict agent.default_routing \ -'{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" -}' aea install aea build ``` -

-
- - -#### Add keys for the weather station AEA +??? note "Alternatively, create from scratch:" + The following steps create the weather client from scratch: + + ``` bash + aea create my_weather_client + cd my_weather_client + aea add connection fetchai/p2p_libp2p:0.27.5 + aea add connection fetchai/soef:0.27.6 + aea add connection fetchai/ledger:0.21.5 + aea add skill fetchai/weather_client:0.26.6 + aea config set --type dict agent.dependencies \ + '{ + "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} + }' + aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 + aea config set --type dict agent.default_routing \ + '{ + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" + }' + aea install + aea build + ``` + +#### Add Keys for the Weather Station AEA First, create the private key for the weather station AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` -#### Add keys and generate wealth for the weather client AEA +#### Add Keys and Generate Wealth for the Weather Client AEA The weather client needs to have some wealth to purchase the service from the weather station. First, create the private key for the weather client AEA based on the network you want to transact. To generate and add a private-public key pair for Fetch.ai `Dorado` use: + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` Then, create some wealth for your weather client based on the network you want to transact with. On the Fetch.ai `Dorado` network: + ``` bash aea generate-wealth fetchai ``` Next, create a private key used to secure the AEA's communications: + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` Finally, certify the key for use by the connections that request that: + ``` bash aea issue-certificates ``` @@ -231,9 +230,10 @@ First, run the weather station AEA: aea run ``` -Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the weather station. +Once you see a message of the form `To join its network use multiaddr 'SOME_ADDRESS'` take note of the address. (Alternatively, use `aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` to retrieve the address.) This is the entry peer address for the local agent communication network created by the weather station. Then, in the weather client, run this command (replace `SOME_ADDRESS` with the correct value as described above): + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -244,9 +244,11 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + This allows the weather client to connect to the same local agent communication network as the weather station. Then run the weather client AEA: + ``` bash aea run ``` @@ -262,5 +264,3 @@ cd .. aea delete my_weather_station aea delete my_weather_client ``` - -
\ No newline at end of file diff --git a/examples/__init__.py b/examples/__init__.py index 4dc5005403..6175f2bfd6 100644 --- a/examples/__init__.py +++ b/examples/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/aealite_go/README.md b/examples/aealite_go/README.md index e4a7f4d588..0707ae2e56 100644 --- a/examples/aealite_go/README.md +++ b/examples/aealite_go/README.md @@ -1 +1 @@ -# A simple example using the Golang `aealite` module \ No newline at end of file +#  A simple example using the Golang `aealite` module diff --git a/examples/gym_ex/README.md b/examples/gym_ex/README.md index 9dc9519601..068503c4b8 100644 --- a/examples/gym_ex/README.md +++ b/examples/gym_ex/README.md @@ -12,4 +12,4 @@ From root execute: python examples/gym_ex/train.py ` -which has the usual RL setup (that is, the `fit` method of the `RLAgent` has the typical signature and familiar implementation). \ No newline at end of file +which has the usual RL setup (that is, the `fit` method of the `RLAgent` has the typical signature and familiar implementation). diff --git a/examples/gym_ex/gyms/__init__.py b/examples/gym_ex/gyms/__init__.py index e9c52f29dd..236ddeda19 100644 --- a/examples/gym_ex/gyms/__init__.py +++ b/examples/gym_ex/gyms/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/gym_ex/gyms/env.py b/examples/gym_ex/gyms/env.py index 34b692fcc0..b43a719697 100644 --- a/examples/gym_ex/gyms/env.py +++ b/examples/gym_ex/gyms/env.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/gym_ex/proxy/__init__.py b/examples/gym_ex/proxy/__init__.py index 5b623dd03f..61bcc7413d 100644 --- a/examples/gym_ex/proxy/__init__.py +++ b/examples/gym_ex/proxy/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/gym_ex/proxy/agent.py b/examples/gym_ex/proxy/agent.py index 35bec89765..c98121f177 100644 --- a/examples/gym_ex/proxy/agent.py +++ b/examples/gym_ex/proxy/agent.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/gym_ex/proxy/env.py b/examples/gym_ex/proxy/env.py index bbfef3014c..38c89785f2 100755 --- a/examples/gym_ex/proxy/env.py +++ b/examples/gym_ex/proxy/env.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/gym_ex/rl/__init__.py b/examples/gym_ex/rl/__init__.py index 40b54f1a2e..bbee95a4b4 100644 --- a/examples/gym_ex/rl/__init__.py +++ b/examples/gym_ex/rl/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/gym_ex/rl/agent.py b/examples/gym_ex/rl/agent.py index 879dbd23a6..6b6bf0751f 100644 --- a/examples/gym_ex/rl/agent.py +++ b/examples/gym_ex/rl/agent.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/gym_ex/train.py b/examples/gym_ex/train.py index 34c10d8f7e..5c5ff784c7 100644 --- a/examples/gym_ex/train.py +++ b/examples/gym_ex/train.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/tac_deploy/README.md b/examples/tac_deploy/README.md index ef71ade2fe..6de8ae24d3 100644 --- a/examples/tac_deploy/README.md +++ b/examples/tac_deploy/README.md @@ -2,11 +2,12 @@ The TAC deployment deploys one controller and `n` tac participants. -### Build the image +## Build the image First, ensure the specifications in `.env` match your requirements. Then, to build the image run: + ``` bash docker build -t tac-deploy -f Dockerfile . --no-cache ``` @@ -14,11 +15,13 @@ docker build -t tac-deploy -f Dockerfile . --no-cache ## Run locally Specify preferred amount of tac participants agents in `.env` file, e.g.: -``` + +``` bash PARTICIPANTS_AMOUNT=5 ``` Run: + ``` bash docker run --env-file .env -v "$(pwd)/data:/data" -ti tac-deploy ``` @@ -30,11 +33,13 @@ GCloud should be [configured](https://cloud.google.com/sdk/docs/initializing) fi ### Push image Tag the image first with the latest tag: + ``` bash docker image tag tac-deploy gcr.io/fetch-ai-sandbox/tac_deploy:0.0.14 ``` Push it to remote repo: + ``` bash docker push gcr.io/fetch-ai-sandbox/tac_deploy:0.0.14 ``` @@ -42,11 +47,13 @@ docker push gcr.io/fetch-ai-sandbox/tac_deploy:0.0.14 ### Run it manually Run it + ``` bash kubectl run tac-deploy-{SOMETHING} --image=gcr.io/fetch-ai-sandbox/tac_deploy:0.0.13 --env="PARTICIPANTS_AMOUNT=5" --attach ``` Or simply restart existing deployment and latest image will be used with default configurations (see below): + ``` bash kubectl delete pod tac-deploy-{SOMETHING} ``` @@ -54,44 +61,51 @@ kubectl delete pod tac-deploy-{SOMETHING} ### Manipulate container To access the container run: + ``` bash kubectl exec tac-deploy-{SOMETHING} -ti -- /bin/sh ``` To remove all logs and all keys: + ``` bash cd ../../data find . -name \*.log -type f -delete find . -name \*.txt -type f -delete ``` -### Full deployment: +### Full deployment First, push the latest image, as per above. Second, update the `tac-deployment.yaml` file with the correct image tag and configurations and then run: + ``` bash kubectl apply -f ./tac-deployment.yaml ``` Check for pods list: + ``` bash kubectl get pods ``` To fetch logs: + ``` bash kubectl cp tac-deploy-{SOMETHING}:/data ./output_dir ``` To delete deployment: + ``` bash kubectl delete deployment tac-deploy ``` -### Analysing Logs: +### Analysing Logs Handy commands to analyse logs: + ``` bash grep -rl 'TAKE CARE! Circumventing controller identity check!' output_dir/ | sort grep -rl 'TAKE CARE! Circumventing controller identity check!' output_dir/ | wc -l diff --git a/examples/tac_deploy/packages/__init__.py b/examples/tac_deploy/packages/__init__.py index 8a394679c2..a8ed758ec3 100644 --- a/examples/tac_deploy/packages/__init__.py +++ b/examples/tac_deploy/packages/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/examples/tac_deploy/tac_run.sh b/examples/tac_deploy/tac_run.sh index 72cc4f98f6..e36d5f7118 100755 --- a/examples/tac_deploy/tac_run.sh +++ b/examples/tac_deploy/tac_run.sh @@ -168,7 +168,7 @@ set_PEER(){ # do nothing ;; local) - PEER=`aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri` + PEER=`aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri` ;; esac } diff --git a/install_packages.py b/install_packages.py index 48c9a4fac9..16bec7a7f6 100755 --- a/install_packages.py +++ b/install_packages.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libs/go/aea_end2end/pexpect_popen.py b/libs/go/aea_end2end/pexpect_popen.py index 3d9fdac612..3b0f66d48a 100644 --- a/libs/go/aea_end2end/pexpect_popen.py +++ b/libs/go/aea_end2end/pexpect_popen.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libs/go/aea_end2end/test_fipa_end2end.py b/libs/go/aea_end2end/test_fipa_end2end.py index a4905e156a..a5512f86e7 100644 --- a/libs/go/aea_end2end/test_fipa_end2end.py +++ b/libs/go/aea_end2end/test_fipa_end2end.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libs/go/aealite/README.md b/libs/go/aealite/README.md index fc00481bf7..a0524f0604 100644 --- a/libs/go/aealite/README.md +++ b/libs/go/aealite/README.md @@ -2,74 +2,73 @@ `aealite` is a lightweight implementation of an AEA library in Golang. - ## Usage example ``` golang package main import ( - "log" - "os" - "os/signal" + "log" + "os" + "os/signal" - aea "aealite" - connections "aealite/connections" + aea "aealite" + connections "aealite/connections" ) func main() { - var err error - - // env file - if len(os.Args) != 2 { - log.Print("Usage: main ENV_FILE") - os.Exit(1) - } - envFile := os.Args[1] - - log.Print("Agent starting ...") - - - // Create agent - agent := aea.Agent{} - - // Set connection - agent.Connection = &connections.P2PClientApi{} - - // Initialise agent from environment file (first arg to process) - err = agent.InitFromEnv(envFile) - if err != nil { - log.Fatal("Failed to initialise agent", err) - } - log.Print("successfully initialized AEA!") - - err = agent.Start() - if err != nil { - log.Fatal("Failed to start agent", err) - } - log.Print("successfully started AEA!") - - // // Send envelope to target - // agent.Put(envel) - // // Print out received envelopes - // go func() { - // for envel := range agent.Queue() { - // envelope := envel - // logger.Info().Msgf("received envelope: %s", envelope) - // } - // }() - - // Wait until Ctrl+C or a termination call is done. - c := make(chan os.Signal, 1) - signal.Notify(c, os.Interrupt) - <-c - - err = agent.Stop() - if err != nil { - log.Fatal("Failed to stop agent", err) - } - log.Print("Agent stopped") + var err error + + // env file + if len(os.Args) != 2 { + log.Print("Usage: main ENV_FILE") + os.Exit(1) + } + envFile := os.Args[1] + + log.Print("Agent starting ...") + + + // Create agent + agent := aea.Agent{} + + // Set connection + agent.Connection = &connections.P2PClientApi{} + + // Initialise agent from environment file (first arg to process) + err = agent.InitFromEnv(envFile) + if err != nil { + log.Fatal("Failed to initialise agent", err) + } + log.Print("successfully initialized AEA!") + + err = agent.Start() + if err != nil { + log.Fatal("Failed to start agent", err) + } + log.Print("successfully started AEA!") + + // // Send envelope to target + // agent.Put(envel) + // // Print out received envelopes + // go func() { + // for envel := range agent.Queue() { + // envelope := envel + // logger.Info().Msgf("received envelope: %s", envelope) + // } + // }() + + // Wait until Ctrl+C or a termination call is done. + c := make(chan os.Signal, 1) + signal.Notify(c, os.Interrupt) + <-c + + err = agent.Stop() + if err != nil { + log.Fatal("Failed to stop agent", err) + } + log.Print("Agent stopped") } ``` @@ -95,4 +94,4 @@ cd .. protoc -I="aealite/protocols/" --go_out="." aealite/protocols/acn.proto protoc -I="aealite/protocols/" --go_out="." aealite/protocols/base.proto cd aealite -``` \ No newline at end of file +``` diff --git a/libs/go/aealite_agent_example/tests/pexpect_popen.py b/libs/go/aealite_agent_example/tests/pexpect_popen.py index 3d9fdac612..3b0f66d48a 100644 --- a/libs/go/aealite_agent_example/tests/pexpect_popen.py +++ b/libs/go/aealite_agent_example/tests/pexpect_popen.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libs/go/aealite_agent_example/tests/test_build_and_run.py b/libs/go/aealite_agent_example/tests/test_build_and_run.py index 6c147e89a4..e1d1788fed 100644 --- a/libs/go/aealite_agent_example/tests/test_build_and_run.py +++ b/libs/go/aealite_agent_example/tests/test_build_and_run.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/libs/go/libp2p_node/README.md b/libs/go/libp2p_node/README.md index 6bac84ad3c..8a75d073a9 100644 --- a/libs/go/libp2p_node/README.md +++ b/libs/go/libp2p_node/README.md @@ -1,3 +1,4 @@ +# Libp2p Node The `libp2p_node` is an integral part of the ACN. @@ -24,7 +25,7 @@ staticcheck ./... ``` For mocks generation: -check https://github.com/golang/mock +check ## Messaging patterns @@ -35,8 +36,7 @@ ___ TCP/UDP/... ___ -### Messaging patterns inwards ACN: - +### Messaging patterns inwards ACN Connection (`p2p_libp2p_client`) > Delegate Client > Relay Peer > Peer (Discouraged!) @@ -46,10 +46,8 @@ Connection (`p2p_libp2p`) > Relay Peer > Peer Connection (`p2p_libp2p`) > Peer - ### Messaging patterns outwards ACN - Peer > Relay Peer > Delegate Client > Connection (`p2p_libp2p_client`) (Discouraged!) Peer > Relay Peer > Connection (`p2p_libp2p`) @@ -58,14 +56,13 @@ Peer > Delegate Client > Connection (`p2p_libp2p_client`) Peer > Connection (`p2p_libp2p`) - In total 4*4 = 16 patterns (practically: 3*3 = 9 patterns) ## Guarantees ACN should guarantee total ordering of messages for all agent pairs, independent of the type of connection and ACN messaging pattern used. -## Advanced feature (post `v1`): +## Advanced feature (post `v1`) Furthermore, there is the agent mobility. An agent can move between entry-points (Relay Peer/Peer/Delegate Client). The ACN must ensure that all messaging patterns maintain total ordering of messages for agent pairs during the move. diff --git a/mkdocs.yml b/mkdocs.yml index 5f42ec3d1a..18b93a9e87 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,14 +1,11 @@ -site_name: aea -site_url: https://docs.fetch.ai/ -site_description: Everything you need to know about AEAs. -repo_url: https://github.com/agents-aea/docs +site_name: AEA Framework Documentation +site_url: https://docs.fetch.ai/aea +site_description: Everything you need to know about the Autonomous Economic Agents. +repo_url: https://github.com/fetchai/agents-aea +repo_name: fetchai/agents-aea +edit_uri: "" site_author: developer@fetch.ai - -theme: - name: 'material' - logo: assets/logo.png - feature: - tabs: true +copyright: Copyright © 2018 - 2023 Fetch.ai # Copyright notice in footer strict: true @@ -32,10 +29,9 @@ nav: - Gym skill: 'gym-skill.md' - ML skills: 'ml-skills.md' - Oracle skills: 'oracle-demo.md' - - Aggegation skill: 'aggregation-demo.md' + - Aggregation skill: 'aggregation-demo.md' - TAC skills: 'tac-skills.md' - TAC skills ledger-based: 'tac-skills-contract.md' - - TAC external app: 'tac.md' - Thermometer skills: 'thermometer-skills.md' - Weather skills: 'weather-skills.md' - Development - Beginner: @@ -245,7 +241,7 @@ nav: - Helper: 'api/plugins/aea_ledger_fetchai/_cosmos.md' - Development - Use Case: - Generic skills: 'generic-skills.md' - - Front-end intergration: 'connect-a-frontend.md' + - Front-end integration: 'connect-a-frontend.md' - HTTP Connection: 'http-connection-and-skill.md' - ORM integration: 'orm-integration.md' - Contract deploy and interact: 'erc1155-skills.md' @@ -253,17 +249,86 @@ nav: - Build an AEA on a Raspberry Pi: 'raspberry-set-up.md' - Glossary: 'glossary.md' - Q&A: 'questions-and-answers.md' + - Archives: + - TAC external app: 'tac.md' -plugins: - - markdownmermaid - -markdown_extensions: - - pymdownx.superfences - - pymdownx.highlight - - admonition +theme: + name: material + language: en + palette: # Set light/dark theme button next to the search bar + - media: "(prefers-color-scheme: light)" + scheme: default + toggle: + icon: material/weather-night + name: Switch to dark mode + - media: "(prefers-color-scheme: dark)" + scheme: slate + toggle: + icon: material/weather-sunny + name: Switch to light mode + logo: assets/images/logo.png # Set Fetch Logo top left + favicon: assets/images/favicon.ico # Set Fetch favicon + icon: + repo: fontawesome/brands/github + features: + - navigation.instant # Fast page loading + - navigation.tracking # URL automatically updated with the currently active anchor + - navigation.top # Back-to-top button + - search.suggest # Completion for the searched word (can be accepted with ->). + - search.highlight # Highlight all occurrences after following a search result link + - search.share # Show share button for copying deep link to the current search query and result + - toc.follow # Follow the table of content + - content.action.view # Shows button to "view the source of this page" + - content.code.copy # Shows a button next to code blocks to copy the code into clipboard +# custom_dir: docs/overrides # Uncomment to enable announcements bar at the top extra_css: - css/my-styles.css -extra_javascript: - - https://unpkg.com/mermaid@8.10.1/dist/mermaid.min.js +markdown_extensions: + - admonition # Required by admonitions + - pymdownx.superfences: # Required by admonitions, annotations, tabs. Enables arbitrary nesting of code and content blocks + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.highlight: # Required by code blocks + anchor_linenums: true + - pymdownx.inlinehilite # Required by code blocks + - pymdownx.snippets # Required by code blocks + - pymdownx.superfences # Required by admonitions, code blocks + - pymdownx.details # Required by admonitions, code blocks + - attr_list # Required by annotations + - md_in_html # Required by annotations + - pymdownx.tabbed: # Required by tabs + alternate_style: true + - tables # # Required by tables + - toc: + permalink: true + +plugins: + - search # Enables search + +extra: + social: + - icon: fontawesome/brands/twitter + link: https://bit.ly/3oDuI3f + name: fetch.ai on twitter + - icon: fontawesome/brands/telegram + link: https://t.me/fetch_ai + name: fetch.ai on telegram + - icon: fontawesome/brands/discord + link: https://bit.ly/3ra5uMI + name: fetch.ai on discord + - icon: fontawesome/brands/github + link: https://bit.ly/3AFCWxl + name: fetch.ai on github + - icon: fontawesome/brands/reddit + link: https://bit.ly/30zS1Tg + name: fetch.ai on reddit + - icon: fontawesome/brands/youtube + link: https://bit.ly/3DxFazs + name: fetch.ai on youtube + - icon: fontawesome/brands/linkedin + link: https://bit.ly/3kNO70p + name: fetch.ai on linkedin \ No newline at end of file diff --git a/packages/__init__.py b/packages/__init__.py index 8a394679c2..a8ed758ec3 100644 --- a/packages/__init__.py +++ b/packages/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/__init__.py b/packages/fetchai/__init__.py index eb027dd672..78d62c578f 100644 --- a/packages/fetchai/__init__.py +++ b/packages/fetchai/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/agents/aries_alice/README.md b/packages/fetchai/agents/aries_alice/README.md index 8f17b0438a..743582a218 100644 --- a/packages/fetchai/agents/aries_alice/README.md +++ b/packages/fetchai/agents/aries_alice/README.md @@ -6,10 +6,10 @@ This agent represents the Alice actor in AEA Aries Demo -* Hyperledger Demo +- AEA Aries Demo +- Hyperledger Demo diff --git a/packages/fetchai/agents/aries_alice/aea-config.yaml b/packages/fetchai/agents/aries_alice/aea-config.yaml index ffbb9887de..2e815be2f0 100644 --- a/packages/fetchai/agents/aries_alice/aea-config.yaml +++ b/packages/fetchai/agents/aries_alice/aea-config.yaml @@ -1,26 +1,26 @@ agent_name: aries_alice author: fetchai -version: 0.32.4 +version: 0.32.5 description: An AEA representing Alice in the Aries demo. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 -- fetchai/webhook:0.20.5 +- fetchai/http_client:0.24.6 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 +- fetchai/webhook:0.20.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/http:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/http:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/aries_alice:0.26.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/aries_alice:0.26.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -29,8 +29,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/http:1.1.6: fetchai/http_client:0.24.5 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/http:1.1.7: fetchai/http_client:0.24.6 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/aries_faber/README.md b/packages/fetchai/agents/aries_faber/README.md index f45848656a..06d7822631 100644 --- a/packages/fetchai/agents/aries_faber/README.md +++ b/packages/fetchai/agents/aries_faber/README.md @@ -5,15 +5,16 @@ This agent represents the Faber actor in AEA Aries Demo -* Hyperledger Demo +- AEA Aries Demo +- Hyperledger Demo diff --git a/packages/fetchai/agents/aries_faber/aea-config.yaml b/packages/fetchai/agents/aries_faber/aea-config.yaml index 9e47c25e38..976fbe50c8 100644 --- a/packages/fetchai/agents/aries_faber/aea-config.yaml +++ b/packages/fetchai/agents/aries_faber/aea-config.yaml @@ -1,26 +1,26 @@ agent_name: aries_faber author: fetchai -version: 0.32.4 +version: 0.32.5 description: An AEA representing Faber in the Aries demo. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 -- fetchai/webhook:0.20.5 +- fetchai/http_client:0.24.6 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 +- fetchai/webhook:0.20.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/http:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/http:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/aries_faber:0.24.4 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/aries_faber:0.24.5 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -29,8 +29,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/http:1.1.6: fetchai/http_client:0.24.5 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/http:1.1.7: fetchai/http_client:0.24.6 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/car_data_buyer/README.md b/packages/fetchai/agents/car_data_buyer/README.md index 6756753fd2..95fc889f32 100644 --- a/packages/fetchai/agents/car_data_buyer/README.md +++ b/packages/fetchai/agents/car_data_buyer/README.md @@ -4,10 +4,10 @@ This agent purchases information on available car parking spaces in a vicinity. ## Description -This agent is part of the Fetch.ai car park demo. It uses its primary skill, the `fetchai/carpark_client` skill, to find an agent on the `SOEF` service that sells car park availability data in a vicinity. +This agent is part of the Fetch.ai car park demo. It uses its primary skill, the `fetchai/carpark_client` skill, to find an agent on the `SOEF` service that sells car park availability data in a vicinity. -Once found, it requests this data, negotiates the price using the `fetchai/fipa` protocol, and if an agreement is reached, pays the proposed amount and receives the data. +Once found, it requests this data, negotiates the price using the `fetchai/fipa` protocol, and if an agreement is reached, pays the proposed amount and receives the data. ## Links -* Car Park Demo +- Car Park Demo diff --git a/packages/fetchai/agents/car_data_buyer/aea-config.yaml b/packages/fetchai/agents/car_data_buyer/aea-config.yaml index c9d06354fd..e5bdaeeb23 100644 --- a/packages/fetchai/agents/car_data_buyer/aea-config.yaml +++ b/packages/fetchai/agents/car_data_buyer/aea-config.yaml @@ -1,6 +1,6 @@ agent_name: car_data_buyer author: fetchai -version: 0.33.4 +version: 0.33.5 description: An agent which searches for an instance of a `car_detector` agent and attempts to purchase car park data from it. license: Apache-2.0 @@ -8,21 +8,21 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/carpark_client:0.27.5 -- fetchai/generic_buyer:0.27.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/carpark_client:0.27.6 +- fetchai/generic_buyer:0.27.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -31,8 +31,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/car_detector/README.md b/packages/fetchai/agents/car_detector/README.md index 67dd3c2e88..36a6b44d82 100644 --- a/packages/fetchai/agents/car_detector/README.md +++ b/packages/fetchai/agents/car_detector/README.md @@ -4,10 +4,10 @@ This agent sells information on the number of car parking spaces available in a ## Description -This agent is part of the Fetch.ai car park demo. It uses its primary skill, the `fetchai/carpark_detection` skill, to register its car park availability data selling service on the `SOEF`. It can then be contacted by another agent (for example the `fetchai/carpark_client` agent) to provide its data. +This agent is part of the Fetch.ai car park demo. It uses its primary skill, the `fetchai/carpark_detection` skill, to register its car park availability data selling service on the `SOEF`. It can then be contacted by another agent (for example the `fetchai/carpark_client` agent) to provide its data. Once such a request is made, this agent negotiates the terms of trade using the `fetchai/fipa` protocol, and if an agreement is reached, it delivers the data after receiving payment. ## Links -* Car Park Demo +- Car Park Demo diff --git a/packages/fetchai/agents/car_detector/aea-config.yaml b/packages/fetchai/agents/car_detector/aea-config.yaml index 955410364d..d0b9555be7 100644 --- a/packages/fetchai/agents/car_detector/aea-config.yaml +++ b/packages/fetchai/agents/car_detector/aea-config.yaml @@ -1,27 +1,27 @@ agent_name: car_detector author: fetchai -version: 0.32.4 +version: 0.32.5 description: An agent which sells car park data to instances of `car_data_buyer` agents. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/carpark_detection:0.27.5 -- fetchai/generic_seller:0.28.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/carpark_detection:0.27.6 +- fetchai/generic_seller:0.28.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -30,8 +30,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/coin_price_feed/README.md b/packages/fetchai/agents/coin_price_feed/README.md index 342354a985..2ad498cc1d 100644 --- a/packages/fetchai/agents/coin_price_feed/README.md +++ b/packages/fetchai/agents/coin_price_feed/README.md @@ -1,6 +1,6 @@ # Coin Price Feed AEA -An agent that fetches a coin price from an API and makes it available by http request. +An agent that fetches a coin price from an API and makes it available by http request. ## Description diff --git a/packages/fetchai/agents/coin_price_feed/aea-config.yaml b/packages/fetchai/agents/coin_price_feed/aea-config.yaml index 3eb7b0f973..36604924b8 100644 --- a/packages/fetchai/agents/coin_price_feed/aea-config.yaml +++ b/packages/fetchai/agents/coin_price_feed/aea-config.yaml @@ -1,31 +1,31 @@ agent_name: coin_price_feed author: fetchai -version: 0.15.4 +version: 0.15.5 license: Apache-2.0 description: An AEA providing a coin price feed. aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 -- fetchai/http_server:0.23.5 -- fetchai/prometheus:0.9.5 +- fetchai/http_client:0.24.6 +- fetchai/http_server:0.23.6 +- fetchai/prometheus:0.9.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/http:1.1.6 -- fetchai/prometheus:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/http:1.1.7 +- fetchai/prometheus:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/advanced_data_request:0.7.5 -default_connection: fetchai/http_server:0.23.5 +- fetchai/advanced_data_request:0.7.6 +default_connection: fetchai/http_server:0.23.6 default_ledger: fetchai required_ledgers: - fetchai default_routing: - fetchai/http:1.1.6: fetchai/http_client:0.24.5 - fetchai/prometheus:1.1.6: fetchai/prometheus:0.9.5 + fetchai/http:1.1.7: fetchai/http_client:0.24.6 + fetchai/prometheus:1.1.7: fetchai/prometheus:0.9.6 connection_private_key_paths: {} private_key_paths: {} logging_config: @@ -35,13 +35,13 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/http_server:0.23.5 +public_id: fetchai/http_server:0.23.6 type: connection config: api_spec_path: vendor/fetchai/skills/advanced_data_request/api_spec.yaml - target_skill_id: fetchai/advanced_data_request:0.7.5 + target_skill_id: fetchai/advanced_data_request:0.7.6 --- -public_id: fetchai/advanced_data_request:0.7.5 +public_id: fetchai/advanced_data_request:0.7.6 type: skill models: advanced_data_request_model: diff --git a/packages/fetchai/agents/coin_price_oracle/README.md b/packages/fetchai/agents/coin_price_oracle/README.md index ddf42ac958..9122d69135 100644 --- a/packages/fetchai/agents/coin_price_oracle/README.md +++ b/packages/fetchai/agents/coin_price_oracle/README.md @@ -1,8 +1,7 @@ # Coin Price Oracle AEA -An agent that fetches a coin price from an API and makes it available by request to an oracle smart contract. +An agent that fetches a coin price from an API and makes it available by request to an oracle smart contract. ## Description This agent uses the `fetchai/simple_oracle` skill to deploy an oracle smart contract to a ledger and updates this contract with the latest value of a coin price fetched using the `fetchai/advanced_data_request` skill. - diff --git a/packages/fetchai/agents/coin_price_oracle/aea-config.yaml b/packages/fetchai/agents/coin_price_oracle/aea-config.yaml index 4e11d20f11..06ffca15c2 100644 --- a/packages/fetchai/agents/coin_price_oracle/aea-config.yaml +++ b/packages/fetchai/agents/coin_price_oracle/aea-config.yaml @@ -1,37 +1,37 @@ agent_name: coin_price_oracle author: fetchai -version: 0.17.5 +version: 0.17.6 license: Apache-2.0 description: An AEA providing a coin price oracle service. aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 -- fetchai/ledger:0.21.4 -- fetchai/prometheus:0.9.5 +- fetchai/http_client:0.24.6 +- fetchai/ledger:0.21.5 +- fetchai/prometheus:0.9.6 contracts: -- fetchai/oracle:0.12.2 +- fetchai/oracle:0.12.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/http:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/prometheus:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/http:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/prometheus:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/advanced_data_request:0.7.5 -- fetchai/simple_oracle:0.16.4 -default_connection: fetchai/ledger:0.21.4 +- fetchai/advanced_data_request:0.7.6 +- fetchai/simple_oracle:0.16.5 +default_connection: fetchai/ledger:0.21.5 default_ledger: fetchai required_ledgers: - fetchai default_routing: - fetchai/contract_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/http:1.1.6: fetchai/http_client:0.24.5 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/prometheus:1.1.6: fetchai/prometheus:0.9.5 + fetchai/contract_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/http:1.1.7: fetchai/http_client:0.24.6 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/prometheus:1.1.7: fetchai/prometheus:0.9.6 connection_private_key_paths: {} private_key_paths: {} logging_config: @@ -41,7 +41,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/advanced_data_request:0.7.5 +public_id: fetchai/advanced_data_request:0.7.6 type: skill models: advanced_data_request_model: @@ -51,7 +51,7 @@ models: - name: price json_path: fetch-ai.usd --- -public_id: fetchai/simple_oracle:0.16.4 +public_id: fetchai/simple_oracle:0.16.5 type: skill models: strategy: diff --git a/packages/fetchai/agents/coin_price_oracle_client/README.md b/packages/fetchai/agents/coin_price_oracle_client/README.md index e6b02830cc..2307d0cf8e 100644 --- a/packages/fetchai/agents/coin_price_oracle_client/README.md +++ b/packages/fetchai/agents/coin_price_oracle_client/README.md @@ -5,4 +5,3 @@ An agent that deploys an oracle client contract that can request a coin price fr ## Description This agent uses the `fetchai/simple_oracle_client` skill to deploy an oracle client smart contract to a ledger and periodically calls the contract function that requests the latest value of a coin price from a deployed oracle smart contract. - diff --git a/packages/fetchai/agents/coin_price_oracle_client/aea-config.yaml b/packages/fetchai/agents/coin_price_oracle_client/aea-config.yaml index 06d6c886c3..7219fd03e5 100644 --- a/packages/fetchai/agents/coin_price_oracle_client/aea-config.yaml +++ b/packages/fetchai/agents/coin_price_oracle_client/aea-config.yaml @@ -1,35 +1,35 @@ agent_name: coin_price_oracle_client author: fetchai -version: 0.12.5 +version: 0.12.6 license: Apache-2.0 description: An AEA providing a coin price oracle client service. aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 -- fetchai/ledger:0.21.4 +- fetchai/http_client:0.24.6 +- fetchai/ledger:0.21.5 contracts: -- fetchai/fet_erc20:0.9.1 -- fetchai/oracle_client:0.11.2 +- fetchai/fet_erc20:0.9.2 +- fetchai/oracle_client:0.11.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/http:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/http:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/simple_oracle_client:0.13.4 -default_connection: fetchai/ledger:0.21.4 +- fetchai/simple_oracle_client:0.13.5 +default_connection: fetchai/ledger:0.21.5 default_ledger: fetchai required_ledgers: - fetchai - ethereum default_routing: - fetchai/contract_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/http:1.1.6: fetchai/http_client:0.24.5 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 + fetchai/contract_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/http:1.1.7: fetchai/http_client:0.24.6 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 connection_private_key_paths: {} private_key_paths: {} logging_config: @@ -41,7 +41,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/simple_oracle_client:0.13.4 +public_id: fetchai/simple_oracle_client:0.13.5 type: skill models: strategy: diff --git a/packages/fetchai/agents/confirmation_aea_aw1/aea-config.yaml b/packages/fetchai/agents/confirmation_aea_aw1/aea-config.yaml index 280e6897c1..b11b981d12 100644 --- a/packages/fetchai/agents/confirmation_aea_aw1/aea-config.yaml +++ b/packages/fetchai/agents/confirmation_aea_aw1/aea-config.yaml @@ -7,30 +7,30 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: -- fetchai/staking_erc20:0.10.2 +- fetchai/staking_erc20:0.10.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/register:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/register:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/confirmation_aw1:0.15.5 -- fetchai/simple_service_registration:0.23.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/confirmation_aw1:0.15.6 +- fetchai/simple_service_registration:0.23.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai default_routing: - fetchai/contract_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/contract_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} private_key_paths: {} logging_config: @@ -70,7 +70,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null @@ -78,13 +78,13 @@ config: entry_peers: - /dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: fetchai_v2_testnet_incentivised token_storage_path: /data/soef_key.txt --- -public_id: fetchai/ledger:0.21.4 +public_id: fetchai/ledger:0.21.5 type: connection config: ledger_apis: @@ -94,7 +94,7 @@ config: address: https://rest-dorado.fetch.ai:443 chain_id: dorado-1 --- -public_id: fetchai/simple_service_registration:0.23.5 +public_id: fetchai/simple_service_registration:0.23.6 type: skill models: strategy: @@ -106,7 +106,7 @@ models: key: registration_service value: aw1-registration --- -public_id: fetchai/confirmation_aw1:0.15.5 +public_id: fetchai/confirmation_aw1:0.15.6 type: skill models: registration_db: diff --git a/packages/fetchai/agents/confirmation_aea_aw2/aea-config.yaml b/packages/fetchai/agents/confirmation_aea_aw2/aea-config.yaml index 9c415ed031..4cbe8d0bf0 100644 --- a/packages/fetchai/agents/confirmation_aea_aw2/aea-config.yaml +++ b/packages/fetchai/agents/confirmation_aea_aw2/aea-config.yaml @@ -8,26 +8,26 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/confirmation_aw2:0.13.5 -- fetchai/generic_buyer:0.27.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/confirmation_aw2:0.13.6 +- fetchai/generic_buyer:0.27.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} private_key_paths: {} logging_config: @@ -67,7 +67,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null @@ -75,13 +75,13 @@ config: entry_peers: - /dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: fetchai_v2_testnet_incentivised token_storage_path: /data/soef_key.txt --- -public_id: fetchai/ledger:0.21.4 +public_id: fetchai/ledger:0.21.5 type: connection config: ledger_apis: @@ -91,7 +91,7 @@ config: address: https://rest-dorado.fetch.ai:443 chain_id: dorado-1 --- -public_id: fetchai/confirmation_aw2:0.13.5 +public_id: fetchai/confirmation_aw2:0.13.6 type: skill behaviours: search: diff --git a/packages/fetchai/agents/confirmation_aea_aw3/aea-config.yaml b/packages/fetchai/agents/confirmation_aea_aw3/aea-config.yaml index d933c290d0..0a7fe9dfbf 100644 --- a/packages/fetchai/agents/confirmation_aea_aw3/aea-config.yaml +++ b/packages/fetchai/agents/confirmation_aea_aw3/aea-config.yaml @@ -8,31 +8,31 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/http_client:0.24.6 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/http:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/http:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/confirmation_aw3:0.12.5 -- fetchai/generic_buyer:0.27.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/confirmation_aw3:0.12.6 +- fetchai/generic_buyer:0.27.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai default_routing: - fetchai/http:1.1.6: fetchai/http_client:0.24.5 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/http:1.1.7: fetchai/http_client:0.24.6 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} private_key_paths: {} logging_config: @@ -72,7 +72,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null @@ -80,13 +80,13 @@ config: entry_peers: - /dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: fetchai_v2_testnet_incentivised token_storage_path: /data/soef_key.txt --- -public_id: fetchai/ledger:0.21.4 +public_id: fetchai/ledger:0.21.5 type: connection config: ledger_apis: @@ -96,7 +96,7 @@ config: address: https://rest-dorado.fetch.ai:443 chain_id: dorado-1 --- -public_id: fetchai/confirmation_aw3:0.12.5 +public_id: fetchai/confirmation_aw3:0.12.6 type: skill behaviours: search: diff --git a/packages/fetchai/agents/confirmation_aea_aw5/aea-config.yaml b/packages/fetchai/agents/confirmation_aea_aw5/aea-config.yaml index 89fc465d41..27e1854c23 100644 --- a/packages/fetchai/agents/confirmation_aea_aw5/aea-config.yaml +++ b/packages/fetchai/agents/confirmation_aea_aw5/aea-config.yaml @@ -7,29 +7,29 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: -- fetchai/staking_erc20:0.10.2 +- fetchai/staking_erc20:0.10.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/register:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/register:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/confirmation_aw1:0.15.5 -- fetchai/simple_service_registration:0.23.5 +- fetchai/confirmation_aw1:0.15.6 +- fetchai/simple_service_registration:0.23.6 default_ledger: fetchai required_ledgers: - fetchai default_routing: - fetchai/contract_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/contract_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} private_key_paths: {} logging_config: @@ -66,9 +66,9 @@ logging_config: dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 -default_connection: fetchai/p2p_libp2p:0.27.4 +default_connection: fetchai/p2p_libp2p:0.27.5 --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null @@ -76,13 +76,13 @@ config: entry_peers: - /dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: fetchai_v2_testnet_incentivised token_storage_path: soef_key.txt --- -public_id: fetchai/ledger:0.21.4 +public_id: fetchai/ledger:0.21.5 type: connection config: ledger_apis: @@ -92,7 +92,7 @@ config: address: https://rest-dorado.fetch.ai:443 chain_id: dorado-1 --- -public_id: fetchai/simple_service_registration:0.23.5 +public_id: fetchai/simple_service_registration:0.23.6 type: skill models: strategy: @@ -104,7 +104,7 @@ models: key: registration_service value: aw5-registration --- -public_id: fetchai/confirmation_aw1:0.15.5 +public_id: fetchai/confirmation_aw1:0.15.6 type: skill models: registration_db: diff --git a/packages/fetchai/agents/erc1155_client/README.md b/packages/fetchai/agents/erc1155_client/README.md index a39124f5b5..458659cc0d 100644 --- a/packages/fetchai/agents/erc1155_client/README.md +++ b/packages/fetchai/agents/erc1155_client/README.md @@ -5,9 +5,9 @@ An agent that purchases data via a smart contract. ## Description This agent uses its primary skill, the `fetchai/erc1155_client` skill, to find an agent selling data on the `SOEF` service. - + Once found, it requests specific data, negotiates the price using the `fetchai/fipa` protocol, and if an agreement is reached, pays the proposed amount via a deployed smart contract and receives the data. ## Links -* Contract Deployment Guide +- Contract Deployment Guide diff --git a/packages/fetchai/agents/erc1155_client/aea-config.yaml b/packages/fetchai/agents/erc1155_client/aea-config.yaml index 53ebbfe1c5..751da060c1 100644 --- a/packages/fetchai/agents/erc1155_client/aea-config.yaml +++ b/packages/fetchai/agents/erc1155_client/aea-config.yaml @@ -1,28 +1,28 @@ agent_name: erc1155_client author: fetchai -version: 0.34.4 +version: 0.34.5 description: An AEA to interact with the ERC1155 deployer AEA license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/erc1155_client:0.29.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/erc1155_client:0.29.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: ethereum required_ledgers: - fetchai @@ -32,9 +32,9 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/contract_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/contract_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-cosmos: @@ -44,12 +44,12 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: ethereum --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection cert_requests: - identifier: acn diff --git a/packages/fetchai/agents/erc1155_deployer/README.md b/packages/fetchai/agents/erc1155_deployer/README.md index 03b2bf9caa..699affb08a 100644 --- a/packages/fetchai/agents/erc1155_deployer/README.md +++ b/packages/fetchai/agents/erc1155_deployer/README.md @@ -4,10 +4,10 @@ An agent that deploys a smart contract sells data using it. ## Description -This agent uses its primary skill, the `fetchai/erc1155_deploy` skill, to deploy a smart contract, create and mint tokens, and register its 'data-selling' service on the `SOEF`. It can then be contacted by another agent (for example the `fetchai/erc1155_client` agent) to provide specific data. +This agent uses its primary skill, the `fetchai/erc1155_deploy` skill, to deploy a smart contract, create and mint tokens, and register its 'data-selling' service on the `SOEF`. It can then be contacted by another agent (for example the `fetchai/erc1155_client` agent) to provide specific data. Once such a request is made, this agent negotiates the terms of trade using the `fetchai/fipa` protocol, and if an agreement is reached, it delivers the data after receiving payment via the deployed smart contract. ## Links -* Contract Deployment Guide +- Contract Deployment Guide diff --git a/packages/fetchai/agents/erc1155_deployer/aea-config.yaml b/packages/fetchai/agents/erc1155_deployer/aea-config.yaml index a1893eda4c..8b169bf898 100644 --- a/packages/fetchai/agents/erc1155_deployer/aea-config.yaml +++ b/packages/fetchai/agents/erc1155_deployer/aea-config.yaml @@ -1,28 +1,28 @@ agent_name: erc1155_deployer author: fetchai -version: 0.34.4 +version: 0.34.5 description: An AEA to deploy and interact with an ERC1155 license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/erc1155_deploy:0.31.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/erc1155_deploy:0.31.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: ethereum required_ledgers: - fetchai @@ -32,9 +32,9 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/contract_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/contract_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-cosmos: @@ -44,12 +44,12 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: ethereum --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection cert_requests: - identifier: acn diff --git a/packages/fetchai/agents/error_test/aea-config.yaml b/packages/fetchai/agents/error_test/aea-config.yaml index b644ce455d..d475abd818 100644 --- a/packages/fetchai/agents/error_test/aea-config.yaml +++ b/packages/fetchai/agents/error_test/aea-config.yaml @@ -7,12 +7,12 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/stub:0.21.2 +- fetchai/stub:0.21.3 contracts: [] protocols: [] skills: -- fetchai/error_test_skill:0.1.1 -default_connection: fetchai/stub:0.21.2 +- fetchai/error_test_skill:0.1.2 +default_connection: fetchai/stub:0.21.3 default_ledger: fetchai required_ledgers: - fetchai diff --git a/packages/fetchai/agents/fipa_dummy_buyer/README.md b/packages/fetchai/agents/fipa_dummy_buyer/README.md index 97ba212b7f..01074508f9 100644 --- a/packages/fetchai/agents/fipa_dummy_buyer/README.md +++ b/packages/fetchai/agents/fipa_dummy_buyer/README.md @@ -3,5 +3,5 @@ A sample agent for FIPA protocol interaction. ## Description -Dummy agent that tries to communicate with FIPA seller agent over libp2p connection. +Dummy agent that tries to communicate with FIPA seller agent over libp2p connection. diff --git a/packages/fetchai/agents/fipa_dummy_buyer/aea-config.yaml b/packages/fetchai/agents/fipa_dummy_buyer/aea-config.yaml index 8876cbe85d..719a55bbfe 100644 --- a/packages/fetchai/agents/fipa_dummy_buyer/aea-config.yaml +++ b/packages/fetchai/agents/fipa_dummy_buyer/aea-config.yaml @@ -1,19 +1,19 @@ agent_name: fipa_dummy_buyer author: fetchai -version: 0.5.4 +version: 0.5.5 description: Sample agent for FIPA interaction license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/p2p_libp2p:0.27.4 +- fetchai/p2p_libp2p:0.27.5 protocols: -- fetchai/fipa:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/fipa:1.1.7 +- fetchai/signing:1.1.7 skills: -- fetchai/fipa_dummy_buyer:0.3.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/fipa_dummy_buyer:0.3.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai contracts: [] required_ledgers: @@ -28,7 +28,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null diff --git a/packages/fetchai/agents/generic_buyer/README.md b/packages/fetchai/agents/generic_buyer/README.md index 2193c18a3c..ceaba24c1b 100644 --- a/packages/fetchai/agents/generic_buyer/README.md +++ b/packages/fetchai/agents/generic_buyer/README.md @@ -4,11 +4,11 @@ A generic agent for buying data. ## Description -This agent uses its primary skill, the `fetchai/generic_buyer` skill, to find an agent selling data on the `SOEF` service. +This agent uses its primary skill, the `fetchai/generic_buyer` skill, to find an agent selling data on the `SOEF` service. Once found, it requests specific data, negotiates the price using the `fetchai/fipa` protocol, and if an agreement is reached, pays the proposed amount and receives the data. ## Links -* Generic Skills -* Generic Skill Step by Step Guide +- Generic Skills +- Generic Skill Step by Step Guide diff --git a/packages/fetchai/agents/generic_buyer/aea-config.yaml b/packages/fetchai/agents/generic_buyer/aea-config.yaml index 24f52127c1..688a064f54 100644 --- a/packages/fetchai/agents/generic_buyer/aea-config.yaml +++ b/packages/fetchai/agents/generic_buyer/aea-config.yaml @@ -1,26 +1,26 @@ agent_name: generic_buyer author: fetchai -version: 0.30.4 +version: 0.30.5 description: The buyer AEA purchases the services offered by the seller AEA. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/generic_buyer:0.27.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -29,8 +29,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/generic_seller/README.md b/packages/fetchai/agents/generic_seller/README.md index aa8be1c442..7cab3097e4 100644 --- a/packages/fetchai/agents/generic_seller/README.md +++ b/packages/fetchai/agents/generic_seller/README.md @@ -4,11 +4,11 @@ A generic agent for selling data. ## Description -This agent uses its primary skill, the `fetchai/generic_seller` skill, to register its 'data-selling' service on the `SOEF`. It can then be contacted by another agent (for example the `fetchai/generic_buyer` agent) to provide specific data. +This agent uses its primary skill, the `fetchai/generic_seller` skill, to register its 'data-selling' service on the `SOEF`. It can then be contacted by another agent (for example the `fetchai/generic_buyer` agent) to provide specific data. Once such a request is made, this agent negotiates the terms of trade using the `fetchai/fipa` protocol, and if an agreement is reached, it delivers the data after receiving payment. ## Links -* Generic Skills -* Generic Skill Step by Step Guide +- Generic Skills +- Generic Skill Step by Step Guide diff --git a/packages/fetchai/agents/generic_seller/aea-config.yaml b/packages/fetchai/agents/generic_seller/aea-config.yaml index ea09c9da06..fca0f136f7 100644 --- a/packages/fetchai/agents/generic_seller/aea-config.yaml +++ b/packages/fetchai/agents/generic_seller/aea-config.yaml @@ -1,6 +1,6 @@ agent_name: generic_seller author: fetchai -version: 0.29.4 +version: 0.29.5 description: The seller AEA sells the services specified in the `skill.yaml` file and delivers them upon payment to the buyer. license: Apache-2.0 @@ -8,20 +8,20 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/generic_seller:0.28.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/generic_seller:0.28.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -30,8 +30,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/gym_aea/README.md b/packages/fetchai/agents/gym_aea/README.md index 2de7c9c696..6b606777fb 100644 --- a/packages/fetchai/agents/gym_aea/README.md +++ b/packages/fetchai/agents/gym_aea/README.md @@ -4,12 +4,12 @@ This agent trains an RL algorithm using OpenAI Gym. ## Description -This agent is part of the Fetch.ai Gym demo. It uses its primary skill, the `fetchai/gym` skill, to train a reinforcement learning (RL) algorithm using OpenAI Gym. +This agent is part of the Fetch.ai Gym demo. It uses its primary skill, the `fetchai/gym` skill, to train a reinforcement learning (RL) algorithm using OpenAI Gym. It demonstrate how an RL agent can be wrapped inside a skill by decoupling the RL agent from the gym environment, allowing them to run in separate execution environments. ## Links -* Gym Demo -* Gym Example -* OpenAI Gym \ No newline at end of file +- Gym Demo +- Gym Example +- OpenAI Gym diff --git a/packages/fetchai/agents/gym_aea/aea-config.yaml b/packages/fetchai/agents/gym_aea/aea-config.yaml index 1e1be9ecd7..5bf13cf0e3 100644 --- a/packages/fetchai/agents/gym_aea/aea-config.yaml +++ b/packages/fetchai/agents/gym_aea/aea-config.yaml @@ -1,6 +1,6 @@ agent_name: gym_aea author: fetchai -version: 0.26.4 +version: 0.26.5 description: The gym aea demos the interaction between a skill containing a RL agent and a gym connection. license: Apache-2.0 @@ -8,16 +8,16 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/gym:0.20.5 +- fetchai/gym:0.20.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/gym:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/gym:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/gym:0.21.5 -default_connection: fetchai/gym:0.20.5 +- fetchai/gym:0.21.6 +default_connection: fetchai/gym:0.20.6 default_ledger: fetchai required_ledgers: - fetchai diff --git a/packages/fetchai/agents/hello_world/README.md b/packages/fetchai/agents/hello_world/README.md index 32be067f2f..28cf566d69 100644 --- a/packages/fetchai/agents/hello_world/README.md +++ b/packages/fetchai/agents/hello_world/README.md @@ -4,5 +4,5 @@ This is a "Hello World" agent! ## Description -This agent uses its primary `fetchai/hello_world` skill to print `Hello World!` on the screen. -The message to be printed can be configured to be any string. +This agent uses its primary `fetchai/hello_world` skill to print `Hello World!` on the screen. +The message to be printed can be configured to be any string. diff --git a/packages/fetchai/agents/hello_world/aea-config.yaml b/packages/fetchai/agents/hello_world/aea-config.yaml index d9237ced97..939120d444 100644 --- a/packages/fetchai/agents/hello_world/aea-config.yaml +++ b/packages/fetchai/agents/hello_world/aea-config.yaml @@ -1,6 +1,6 @@ agent_name: hello_world author: fetchai -version: 0.1.6 +version: 0.1.7 license: Apache-2.0 description: A hello world agent. An agent that prints a message on the screen. aea_version: '>=1.2.0, <2.0.0' @@ -9,9 +9,9 @@ fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/signing:1.1.6 +- fetchai/signing:1.1.7 skills: -- fetchai/hello_world:0.1.4 +- fetchai/hello_world:0.1.5 default_ledger: fetchai required_ledgers: - fetchai @@ -25,7 +25,7 @@ dependencies: aea-ledger-fetchai: {} default_connection: null --- -public_id: fetchai/hello_world:0.1.4 +public_id: fetchai/hello_world:0.1.5 type: skill behaviours: hello_world: diff --git a/packages/fetchai/agents/latest_block_feed/README.md b/packages/fetchai/agents/latest_block_feed/README.md index a5f7052743..0f067fd979 100644 --- a/packages/fetchai/agents/latest_block_feed/README.md +++ b/packages/fetchai/agents/latest_block_feed/README.md @@ -1,6 +1,6 @@ # Random Beacon Feed AEA -An agent that fetches the latest block from the Fetch ledger. +An agent that fetches the latest block from the Fetch ledger. ## Description diff --git a/packages/fetchai/agents/latest_block_feed/aea-config.yaml b/packages/fetchai/agents/latest_block_feed/aea-config.yaml index b7f67a49dc..365089be56 100644 --- a/packages/fetchai/agents/latest_block_feed/aea-config.yaml +++ b/packages/fetchai/agents/latest_block_feed/aea-config.yaml @@ -1,22 +1,22 @@ agent_name: latest_block_feed author: fetchai -version: 0.11.4 +version: 0.11.5 license: Apache-2.0 description: An agent that retrieves the latest block data from the Fetch ledger. aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/fetch_block:0.12.5 -default_connection: fetchai/ledger:0.21.4 +- fetchai/fetch_block:0.12.6 +default_connection: fetchai/ledger:0.21.5 default_ledger: fetchai required_ledgers: - fetchai @@ -30,7 +30,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/ledger:0.21.4 +public_id: fetchai/ledger:0.21.5 type: connection config: ledger_apis: diff --git a/packages/fetchai/agents/ml_data_provider/README.md b/packages/fetchai/agents/ml_data_provider/README.md index 8601515d03..db123ec2ed 100644 --- a/packages/fetchai/agents/ml_data_provider/README.md +++ b/packages/fetchai/agents/ml_data_provider/README.md @@ -4,12 +4,12 @@ This agent sells ML data for training. ## Description -This agent is part of the Fetch.ai ML skill demo. It uses its primary skill, the `fetchai/ml_data_provider` skill, to register its 'ML-data-selling' service on the `SOEF`. +This agent is part of the Fetch.ai ML skill demo. It uses its primary skill, the `fetchai/ml_data_provider` skill, to register its 'ML-data-selling' service on the `SOEF`. -It can be contacted by another agent (for example the `fetchai/ml_train` agent) to provide specific data samples. +It can be contacted by another agent (for example the `fetchai/ml_train` agent) to provide specific data samples. Once such a request is made and the terms of trade are agreed by both agents, it delivers the data after receiving payment. ## Links -* ML Demo +- ML Demo diff --git a/packages/fetchai/agents/ml_data_provider/aea-config.yaml b/packages/fetchai/agents/ml_data_provider/aea-config.yaml index 6444ca75d4..b5b2751399 100644 --- a/packages/fetchai/agents/ml_data_provider/aea-config.yaml +++ b/packages/fetchai/agents/ml_data_provider/aea-config.yaml @@ -1,27 +1,27 @@ agent_name: ml_data_provider author: fetchai -version: 0.32.4 +version: 0.32.5 description: An agent that sells data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/ml_trade:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/ml_trade:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/generic_seller:0.28.5 -- fetchai/ml_data_provider:0.27.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/generic_seller:0.28.6 +- fetchai/ml_data_provider:0.27.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -30,8 +30,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/ml_model_trainer/README.md b/packages/fetchai/agents/ml_model_trainer/README.md index 5ebc2a08f5..7eb40dd456 100644 --- a/packages/fetchai/agents/ml_model_trainer/README.md +++ b/packages/fetchai/agents/ml_model_trainer/README.md @@ -4,10 +4,10 @@ This agent buys ML data for training. ## Description -This skill is part of the Fetch.ai ML skill demo. It uses its primary skill, the `fetchai/ml_train` skill, to find an agent selling ML data on the `SOEF` service (for example a `fetchai/ml_data_provider` agent). +This skill is part of the Fetch.ai ML skill demo. It uses its primary skill, the `fetchai/ml_train` skill, to find an agent selling ML data on the `SOEF` service (for example a `fetchai/ml_data_provider` agent). Once found, it requests specific data samples. If both parties agree with the terms of trade, it pays the proposed amount and trains an ML model using the data bought. ## Links -* ML Demo \ No newline at end of file +- ML Demo diff --git a/packages/fetchai/agents/ml_model_trainer/aea-config.yaml b/packages/fetchai/agents/ml_model_trainer/aea-config.yaml index acbc44ac78..a32bcd84ec 100644 --- a/packages/fetchai/agents/ml_model_trainer/aea-config.yaml +++ b/packages/fetchai/agents/ml_model_trainer/aea-config.yaml @@ -1,27 +1,27 @@ agent_name: ml_model_trainer author: fetchai -version: 0.33.4 +version: 0.33.5 description: An agent buying data and training a model from it. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/ml_trade:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/ml_trade:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 -- fetchai/ml_train:0.29.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/generic_buyer:0.27.6 +- fetchai/ml_train:0.29.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -30,8 +30,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/my_first_aea/README.md b/packages/fetchai/agents/my_first_aea/README.md index 54777073b9..036b68d9d9 100644 --- a/packages/fetchai/agents/my_first_aea/README.md +++ b/packages/fetchai/agents/my_first_aea/README.md @@ -8,5 +8,5 @@ This agent uses its primary skill, the `fetchai/echo` skill, to sends back the c ## Links -* Quick Start -* Programmatically Build an AEA \ No newline at end of file +- Quick Start +- Programmatically Build an AEA diff --git a/packages/fetchai/agents/my_first_aea/aea-config.yaml b/packages/fetchai/agents/my_first_aea/aea-config.yaml index 3f252d5d42..07067c564d 100644 --- a/packages/fetchai/agents/my_first_aea/aea-config.yaml +++ b/packages/fetchai/agents/my_first_aea/aea-config.yaml @@ -1,21 +1,21 @@ agent_name: my_first_aea author: fetchai -version: 0.28.4 +version: 0.28.5 description: A simple agent to demo the echo skill. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/stub:0.21.2 +- fetchai/stub:0.21.3 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/echo:0.20.5 -default_connection: fetchai/stub:0.21.2 +- fetchai/echo:0.20.6 +default_connection: fetchai/stub:0.21.3 default_ledger: fetchai required_ledgers: - fetchai diff --git a/packages/fetchai/agents/registration_aea_aw1/aea-config.yaml b/packages/fetchai/agents/registration_aea_aw1/aea-config.yaml index fec906f56c..9bf7cacfc6 100644 --- a/packages/fetchai/agents/registration_aea_aw1/aea-config.yaml +++ b/packages/fetchai/agents/registration_aea_aw1/aea-config.yaml @@ -7,26 +7,26 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/register:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/register:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/registration_aw1:0.13.5 -- fetchai/simple_service_registration:0.23.5 -- fetchai/simple_service_search:0.11.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/registration_aw1:0.13.6 +- fetchai/simple_service_registration:0.23.6 +- fetchai/simple_service_search:0.11.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai default_routing: - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} private_key_paths: {} logging_config: @@ -60,7 +60,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/registration_aw1:0.13.5 +public_id: fetchai/registration_aw1:0.13.6 type: skill models: strategy: @@ -72,7 +72,7 @@ models: whitelist: - PUT_WHITELIST_ADDRESSES_HERE --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null @@ -80,12 +80,12 @@ config: entry_peers: - /dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: fetchai_v2_testnet_incentivised --- -public_id: fetchai/ledger:0.21.4 +public_id: fetchai/ledger:0.21.5 type: connection config: ledger_apis: @@ -93,7 +93,7 @@ config: address: https://rest-dorado.fetch.ai:443 chain_id: dorado-1 --- -public_id: fetchai/simple_service_registration:0.23.5 +public_id: fetchai/simple_service_registration:0.23.6 type: skill models: strategy: @@ -105,7 +105,7 @@ models: key: agentworld-1 value: PUT_YOUR_DEVELOPER_HANDLE_HERE --- -public_id: fetchai/simple_service_search:0.11.5 +public_id: fetchai/simple_service_search:0.11.6 type: skill models: strategy: diff --git a/packages/fetchai/agents/simple_aggregator/README.md b/packages/fetchai/agents/simple_aggregator/README.md index e4d4316fad..12ede6af92 100644 --- a/packages/fetchai/agents/simple_aggregator/README.md +++ b/packages/fetchai/agents/simple_aggregator/README.md @@ -5,4 +5,3 @@ An agent that aggregates individual observations for an oracle network ## Description This agent uses the `fetchai/oracle_aggregation` skill to find peers and aggregate values. - diff --git a/packages/fetchai/agents/simple_aggregator/aea-config.yaml b/packages/fetchai/agents/simple_aggregator/aea-config.yaml index 7b4d93fece..48cfb97827 100644 --- a/packages/fetchai/agents/simple_aggregator/aea-config.yaml +++ b/packages/fetchai/agents/simple_aggregator/aea-config.yaml @@ -1,30 +1,30 @@ agent_name: simple_aggregator author: fetchai -version: 0.5.4 +version: 0.5.5 license: Apache-2.0 description: AEA that aggregates observations aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 -- fetchai/http_server:0.23.5 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/prometheus:0.9.5 -- fetchai/soef:0.27.5 +- fetchai/http_client:0.24.6 +- fetchai/http_server:0.23.6 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/prometheus:0.9.6 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/aggregation:0.2.6 -- fetchai/default:1.1.6 -- fetchai/http:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/prometheus:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/aggregation:0.2.7 +- fetchai/default:1.1.7 +- fetchai/http:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/prometheus:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/advanced_data_request:0.7.5 -- fetchai/simple_aggregation:0.3.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/advanced_data_request:0.7.6 +- fetchai/simple_aggregation:0.3.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -38,7 +38,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/advanced_data_request:0.7.5 +public_id: fetchai/advanced_data_request:0.7.6 type: skill models: advanced_data_request_model: @@ -46,12 +46,12 @@ models: decimals: 0 use_http_server: false --- -public_id: fetchai/http_server:0.23.5 +public_id: fetchai/http_server:0.23.6 type: connection config: - target_skill_id: fetchai/advanced_data_request:0.7.5 + target_skill_id: fetchai/advanced_data_request:0.7.6 --- -public_id: fetchai/simple_aggregation:0.3.5 +public_id: fetchai/simple_aggregation:0.3.6 type: skill models: strategy: diff --git a/packages/fetchai/agents/simple_buyer_aw2/aea-config.yaml b/packages/fetchai/agents/simple_buyer_aw2/aea-config.yaml index 472b9c84dc..e063f27d5d 100644 --- a/packages/fetchai/agents/simple_buyer_aw2/aea-config.yaml +++ b/packages/fetchai/agents/simple_buyer_aw2/aea-config.yaml @@ -7,28 +7,28 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 -- fetchai/simple_buyer:0.13.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/generic_buyer:0.27.6 +- fetchai/simple_buyer:0.13.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} private_key_paths: {} logging_config: @@ -60,7 +60,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/simple_buyer:0.13.5 +public_id: fetchai/simple_buyer:0.13.6 type: skill models: strategy: @@ -77,7 +77,7 @@ models: search_radius: 50.0 service_id: weather_data --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null @@ -85,12 +85,12 @@ config: entry_peers: - /dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: fetchai_v2_testnet_incentivised --- -public_id: fetchai/ledger:0.21.4 +public_id: fetchai/ledger:0.21.5 type: connection config: ledger_apis: diff --git a/packages/fetchai/agents/simple_buyer_aw5/aea-config.yaml b/packages/fetchai/agents/simple_buyer_aw5/aea-config.yaml index c86af59ecb..c648bd56ae 100644 --- a/packages/fetchai/agents/simple_buyer_aw5/aea-config.yaml +++ b/packages/fetchai/agents/simple_buyer_aw5/aea-config.yaml @@ -8,30 +8,30 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/http_client:0.24.6 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/http:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/http:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/confirmation_aw3:0.12.5 -- fetchai/generic_buyer:0.27.5 +- fetchai/confirmation_aw3:0.12.6 +- fetchai/generic_buyer:0.27.6 default_ledger: fetchai required_ledgers: - fetchai default_routing: - fetchai/http:1.1.6: fetchai/http_client:0.24.5 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/http:1.1.7: fetchai/http_client:0.24.6 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} private_key_paths: {} logging_config: @@ -68,9 +68,9 @@ logging_config: dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 -default_connection: fetchai/p2p_libp2p:0.27.4 +default_connection: fetchai/p2p_libp2p:0.27.5 --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null @@ -78,13 +78,13 @@ config: entry_peers: - /dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: fetchai_v2_testnet_incentivised token_storage_path: soef_key.txt --- -public_id: fetchai/ledger:0.21.4 +public_id: fetchai/ledger:0.21.5 type: connection config: ledger_apis: @@ -94,7 +94,7 @@ config: address: https://rest-dorado.fetch.ai:443 chain_id: dorado-1 --- -public_id: fetchai/confirmation_aw3:0.12.5 +public_id: fetchai/confirmation_aw3:0.12.6 type: skill behaviours: search: diff --git a/packages/fetchai/agents/simple_seller_aw2/aea-config.yaml b/packages/fetchai/agents/simple_seller_aw2/aea-config.yaml index 2b475fc22b..08d15a8954 100644 --- a/packages/fetchai/agents/simple_seller_aw2/aea-config.yaml +++ b/packages/fetchai/agents/simple_seller_aw2/aea-config.yaml @@ -7,25 +7,25 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/http_client:0.24.6 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/http:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/http:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/generic_seller:0.28.5 -- fetchai/simple_data_request:0.14.5 -- fetchai/simple_seller:0.14.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/generic_seller:0.28.6 +- fetchai/simple_data_request:0.14.6 +- fetchai/simple_seller:0.14.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -56,15 +56,15 @@ logging_config: propagate: false private_key_paths: {} default_routing: - fetchai/http:1.1.6: fetchai/http_client:0.24.5 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/http:1.1.7: fetchai/http_client:0.24.6 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/simple_seller:0.14.5 +public_id: fetchai/simple_seller:0.14.6 type: skill models: strategy: @@ -79,7 +79,7 @@ models: shared_state_key: my_data unit_price: 10 --- -public_id: fetchai/simple_data_request:0.14.5 +public_id: fetchai/simple_data_request:0.14.6 type: skill behaviours: http_request: @@ -93,7 +93,7 @@ handlers: args: shared_state_key: my_data --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null @@ -101,12 +101,12 @@ config: entry_peers: - /dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: fetchai_v2_testnet_incentivised --- -public_id: fetchai/ledger:0.21.4 +public_id: fetchai/ledger:0.21.5 type: connection config: ledger_apis: diff --git a/packages/fetchai/agents/simple_seller_aw5/aea-config.yaml b/packages/fetchai/agents/simple_seller_aw5/aea-config.yaml index e4bd62e8d8..5f09273dd9 100644 --- a/packages/fetchai/agents/simple_seller_aw5/aea-config.yaml +++ b/packages/fetchai/agents/simple_seller_aw5/aea-config.yaml @@ -7,36 +7,36 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/http_client:0.24.6 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/http:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/register:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/http:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/register:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/generic_seller:0.28.5 -- fetchai/registration_aw1:0.13.5 -- fetchai/simple_data_request:0.14.5 -- fetchai/simple_seller:0.14.5 -- fetchai/simple_service_registration:0.23.5 -- fetchai/simple_service_search:0.11.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/generic_seller:0.28.6 +- fetchai/registration_aw1:0.13.6 +- fetchai/simple_data_request:0.14.6 +- fetchai/simple_seller:0.14.6 +- fetchai/simple_service_registration:0.23.6 +- fetchai/simple_service_search:0.11.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai default_routing: - fetchai/http:1.1.6: fetchai/http_client:0.24.5 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/http:1.1.7: fetchai/http_client:0.24.6 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} private_key_paths: {} logging_config: @@ -70,7 +70,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/registration_aw1:0.13.5 +public_id: fetchai/registration_aw1:0.13.6 type: skill models: strategy: @@ -81,7 +81,7 @@ models: whitelist: - PUT_WHITELIST_ADDRESSES_HERE --- -public_id: fetchai/simple_service_registration:0.23.5 +public_id: fetchai/simple_service_registration:0.23.6 type: skill models: strategy: @@ -93,7 +93,7 @@ models: key: agentworld-5 value: PUT_YOUR_DEVELOPER_HANDLE_HERE --- -public_id: fetchai/simple_service_search:0.11.5 +public_id: fetchai/simple_service_search:0.11.6 type: skill models: strategy: @@ -106,7 +106,7 @@ models: search_key: registration_service search_value: aw5-registration --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null @@ -114,12 +114,12 @@ config: entry_peers: - /dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: fetchai_v2_testnet_incentivised --- -public_id: fetchai/ledger:0.21.4 +public_id: fetchai/ledger:0.21.5 type: connection config: ledger_apis: @@ -127,7 +127,7 @@ config: address: https://rest-dorado.fetch.ai:443 chain_id: dorado-1 --- -public_id: fetchai/simple_seller:0.14.5 +public_id: fetchai/simple_seller:0.14.6 type: skill models: strategy: @@ -142,7 +142,7 @@ models: shared_state_key: my_data unit_price: 10 --- -public_id: fetchai/simple_data_request:0.14.5 +public_id: fetchai/simple_data_request:0.14.6 type: skill behaviours: http_request: diff --git a/packages/fetchai/agents/simple_service_registration/README.md b/packages/fetchai/agents/simple_service_registration/README.md index a6a49d0a32..6bb9990129 100644 --- a/packages/fetchai/agents/simple_service_registration/README.md +++ b/packages/fetchai/agents/simple_service_registration/README.md @@ -8,4 +8,4 @@ This agent is used in the "Guide on Writing a Skill" section of the documentatio ## Links -* Guide on Building a Skill +- Guide on Building a Skill diff --git a/packages/fetchai/agents/simple_service_registration/aea-config.yaml b/packages/fetchai/agents/simple_service_registration/aea-config.yaml index 34182a363b..ece7d5adfe 100644 --- a/packages/fetchai/agents/simple_service_registration/aea-config.yaml +++ b/packages/fetchai/agents/simple_service_registration/aea-config.yaml @@ -1,24 +1,24 @@ agent_name: simple_service_registration author: fetchai -version: 0.32.4 +version: 0.32.5 description: A simple example of service registration. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/simple_service_registration:0.23.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/simple_service_registration:0.23.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -27,7 +27,7 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/simple_service_search/README.md b/packages/fetchai/agents/simple_service_search/README.md index 5ad78e1591..99c801de44 100644 --- a/packages/fetchai/agents/simple_service_search/README.md +++ b/packages/fetchai/agents/simple_service_search/README.md @@ -8,4 +8,4 @@ This agent is used in the "Guide on Writing a Skill" section of the documentatio ## Links -* Guide on Building a Skill +- Guide on Building a Skill diff --git a/packages/fetchai/agents/simple_service_search/aea-config.yaml b/packages/fetchai/agents/simple_service_search/aea-config.yaml index 1283a31f3e..bcee7d6a1d 100644 --- a/packages/fetchai/agents/simple_service_search/aea-config.yaml +++ b/packages/fetchai/agents/simple_service_search/aea-config.yaml @@ -1,24 +1,24 @@ agent_name: simple_service_search author: fetchai -version: 0.16.4 +version: 0.16.5 description: A simple example of service search. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/simple_service_search:0.11.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/simple_service_search:0.11.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -27,7 +27,7 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/tac_controller/README.md b/packages/fetchai/agents/tac_controller/README.md index b930623ea0..ca28101682 100644 --- a/packages/fetchai/agents/tac_controller/README.md +++ b/packages/fetchai/agents/tac_controller/README.md @@ -4,10 +4,10 @@ This is a controller agent for a Trading Agent Competition (TAC). ## Description -This agent is part of the Fetch.ai TAC demo. +This agent is part of the Fetch.ai TAC demo. It uses its `fetchai/tac_control` skill to manage the progression of a competition across various stages. ## Links -* TAC Demo +- TAC Demo diff --git a/packages/fetchai/agents/tac_controller/aea-config.yaml b/packages/fetchai/agents/tac_controller/aea-config.yaml index dfc752c435..f6498da62e 100644 --- a/packages/fetchai/agents/tac_controller/aea-config.yaml +++ b/packages/fetchai/agents/tac_controller/aea-config.yaml @@ -1,24 +1,24 @@ agent_name: tac_controller author: fetchai -version: 0.30.4 +version: 0.30.5 description: An AEA to manage an instance of the TAC (trading agent competition) license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 -- fetchai/tac:1.1.6 +- fetchai/default:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 +- fetchai/tac:1.1.7 skills: -- fetchai/tac_control:0.25.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/tac_control:0.25.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -27,7 +27,7 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/tac_controller_contract/README.md b/packages/fetchai/agents/tac_controller_contract/README.md index c2385e5b16..ddcca1779d 100644 --- a/packages/fetchai/agents/tac_controller_contract/README.md +++ b/packages/fetchai/agents/tac_controller_contract/README.md @@ -4,10 +4,10 @@ This is a controller agent for a Trading Agent Competition (TAC) using smart con ## Description -This agent is part of the Fetch.ai TAC demo. +This agent is part of the Fetch.ai TAC demo. It uses its `fetchai/tac_control` skill to manage the progression of a competition across various stages, and uses its `fetchai/tac_control_contract` skill to create and maintain a smart contract (for example, deploying the contract, creating and minting tokens, etc). ## Links -* TAC Demo +- TAC Demo diff --git a/packages/fetchai/agents/tac_controller_contract/aea-config.yaml b/packages/fetchai/agents/tac_controller_contract/aea-config.yaml index c5cb2e9ee1..11ad305abb 100644 --- a/packages/fetchai/agents/tac_controller_contract/aea-config.yaml +++ b/packages/fetchai/agents/tac_controller_contract/aea-config.yaml @@ -1,6 +1,6 @@ agent_name: tac_controller_contract author: fetchai -version: 0.32.4 +version: 0.32.5 description: An AEA to manage an instance of the TAC (trading agent competition) using an ERC1155 smart contract. license: Apache-2.0 @@ -8,23 +8,23 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 -- fetchai/tac:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 +- fetchai/tac:1.1.7 skills: -- fetchai/tac_control:0.25.5 -- fetchai/tac_control_contract:0.27.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/tac_control:0.25.6 +- fetchai/tac_control_contract:0.27.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -34,9 +34,9 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/contract_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/contract_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-ethereum: @@ -44,7 +44,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection cert_requests: - identifier: acn @@ -55,11 +55,11 @@ cert_requests: message_format: '{public_key}' save_path: .certs/conn_cert.txt --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: fetchai_v2_misc --- -public_id: fetchai/tac_control:0.25.5 +public_id: fetchai/tac_control:0.25.6 type: skill is_abstract: true diff --git a/packages/fetchai/agents/tac_participant/README.md b/packages/fetchai/agents/tac_participant/README.md index ceb9e91505..d53b9a5884 100644 --- a/packages/fetchai/agents/tac_participant/README.md +++ b/packages/fetchai/agents/tac_participant/README.md @@ -4,7 +4,7 @@ This is an agent that participates in a Trading Agent Competition (TAC). ## Description -This agent is part of the Fetch.ai TAC demo. +This agent is part of the Fetch.ai TAC demo. It uses its `fetchai/tac_participation` skill to find and register with a TAC by communicating with a controller agent. @@ -12,4 +12,4 @@ It then uses its `fetchai/tac_negotiation` skill to find trading partners, negot ## Links -* TAC Demo +- TAC Demo diff --git a/packages/fetchai/agents/tac_participant/aea-config.yaml b/packages/fetchai/agents/tac_participant/aea-config.yaml index de3693cee7..316fc205db 100644 --- a/packages/fetchai/agents/tac_participant/aea-config.yaml +++ b/packages/fetchai/agents/tac_participant/aea-config.yaml @@ -1,28 +1,28 @@ agent_name: tac_participant author: fetchai -version: 0.32.4 +version: 0.32.5 description: An AEA to participate in the TAC (trading agent competition) license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 -- fetchai/tac:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 +- fetchai/tac:1.1.7 skills: -- fetchai/tac_negotiation:0.29.5 -- fetchai/tac_participation:0.25.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/tac_negotiation:0.29.6 +- fetchai/tac_participation:0.25.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -31,8 +31,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} decision_maker_handler: dotted_path: aea.decision_maker.gop:DecisionMakerHandler diff --git a/packages/fetchai/agents/tac_participant_contract/README.md b/packages/fetchai/agents/tac_participant_contract/README.md index 28bc3c7f95..3e0ab85018 100644 --- a/packages/fetchai/agents/tac_participant_contract/README.md +++ b/packages/fetchai/agents/tac_participant_contract/README.md @@ -4,7 +4,7 @@ This is an agent that participates in a Trading Agent Competition (TAC) using a ## Description -This agent is part of the Fetch.ai TAC demo. +This agent is part of the Fetch.ai TAC demo. It uses its `fetchai/tac_participation` skill to find and register with a TAC by communicating with a controller agent. @@ -12,4 +12,4 @@ It then uses its `fetchai/tac_negotiation` skill to find trading partners, negot ## Links -* TAC Demo +- TAC Demo diff --git a/packages/fetchai/agents/tac_participant_contract/aea-config.yaml b/packages/fetchai/agents/tac_participant_contract/aea-config.yaml index c716a26866..c558be3bf2 100644 --- a/packages/fetchai/agents/tac_participant_contract/aea-config.yaml +++ b/packages/fetchai/agents/tac_participant_contract/aea-config.yaml @@ -1,6 +1,6 @@ agent_name: tac_participant_contract author: fetchai -version: 0.22.4 +version: 0.22.5 description: An AEA to participate in the TAC (trading agent competition) using an ERC1155 smart contract. license: Apache-2.0 @@ -8,22 +8,22 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 -- fetchai/tac:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 +- fetchai/tac:1.1.7 skills: -- fetchai/tac_negotiation:0.29.5 -- fetchai/tac_participation:0.25.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/tac_negotiation:0.29.6 +- fetchai/tac_participation:0.25.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -33,9 +33,9 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/contract_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/contract_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} decision_maker_handler: dotted_path: aea.decision_maker.gop:DecisionMakerHandler @@ -47,7 +47,7 @@ dependencies: aea-ledger-fetchai: version: <2.0.0,>=1.0.0 --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection cert_requests: - identifier: acn @@ -58,19 +58,19 @@ cert_requests: message_format: '{public_key}' save_path: .certs/conn_cert.txt --- -public_id: fetchai/soef:0.27.5 +public_id: fetchai/soef:0.27.6 type: connection config: chain_identifier: fetchai_v2_misc --- -public_id: fetchai/tac_participation:0.25.5 +public_id: fetchai/tac_participation:0.25.6 type: skill models: game: args: is_using_contract: true --- -public_id: fetchai/tac_negotiation:0.29.5 +public_id: fetchai/tac_negotiation:0.29.6 type: skill models: strategy: diff --git a/packages/fetchai/agents/thermometer_aea/README.md b/packages/fetchai/agents/thermometer_aea/README.md index 2200d07086..79f4187c20 100644 --- a/packages/fetchai/agents/thermometer_aea/README.md +++ b/packages/fetchai/agents/thermometer_aea/README.md @@ -4,12 +4,12 @@ This agent sells thermometer data. ## Description -This agent is part of the Fetch.ai thermometer demo. It uses its primary skill, the `fetchai/thermometer` skill, to register its 'thermometer-data-selling' service on the `SOEF`. +This agent is part of the Fetch.ai thermometer demo. It uses its primary skill, the `fetchai/thermometer` skill, to register its 'thermometer-data-selling' service on the `SOEF`. -It can be contacted by another agent (for example the `fetchai/thermometer_client` agent) to provide data from a thermometer reading. +It can be contacted by another agent (for example the `fetchai/thermometer_client` agent) to provide data from a thermometer reading. Once such a request is made, this agent negotiates the terms of trade using the `fetchai/fipa` protocol, and if an agreement is reached, it reads data from a (real or fake) thermometer, and delivers it after receiving payment. ## Links -* Thermometer Demo +- Thermometer Demo diff --git a/packages/fetchai/agents/thermometer_aea/aea-config.yaml b/packages/fetchai/agents/thermometer_aea/aea-config.yaml index 502db262dc..65aa60360a 100644 --- a/packages/fetchai/agents/thermometer_aea/aea-config.yaml +++ b/packages/fetchai/agents/thermometer_aea/aea-config.yaml @@ -1,27 +1,27 @@ agent_name: thermometer_aea author: fetchai -version: 0.30.4 +version: 0.30.5 description: An AEA to represent a thermometer and sell temperature data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/generic_seller:0.28.5 -- fetchai/thermometer:0.27.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/generic_seller:0.28.6 +- fetchai/thermometer:0.27.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -30,8 +30,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/thermometer_client/README.md b/packages/fetchai/agents/thermometer_client/README.md index 4f6d651cb5..b8a39742d4 100644 --- a/packages/fetchai/agents/thermometer_client/README.md +++ b/packages/fetchai/agents/thermometer_client/README.md @@ -4,10 +4,10 @@ This agent buys thermometer data. ## Description -This agent is part of the Fetch.ai thermometer demo. It uses its primary skill, the `fetchai/thermometer_client` skill, to find an agent selling thermometer data on the `SOEF` service. +This agent is part of the Fetch.ai thermometer demo. It uses its primary skill, the `fetchai/thermometer_client` skill, to find an agent selling thermometer data on the `SOEF` service. Once found, it requests data from a thermometer reading, negotiates the price using the `fetchai/fipa` protocol, and if an agreement is reached, pays the proposed amount and receives the data. ## Links -* Thermometer Demo +- Thermometer Demo diff --git a/packages/fetchai/agents/thermometer_client/aea-config.yaml b/packages/fetchai/agents/thermometer_client/aea-config.yaml index 101b3ad82c..c96b78fe43 100644 --- a/packages/fetchai/agents/thermometer_client/aea-config.yaml +++ b/packages/fetchai/agents/thermometer_client/aea-config.yaml @@ -1,27 +1,27 @@ agent_name: thermometer_client author: fetchai -version: 0.32.4 +version: 0.32.5 description: An AEA that purchases thermometer data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 -- fetchai/thermometer_client:0.26.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/generic_buyer:0.27.6 +- fetchai/thermometer_client:0.26.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -30,8 +30,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/weather_client/README.md b/packages/fetchai/agents/weather_client/README.md index b414d7f2e0..d19412e696 100644 --- a/packages/fetchai/agents/weather_client/README.md +++ b/packages/fetchai/agents/weather_client/README.md @@ -4,10 +4,10 @@ This agent buys dummy weather data. ## Description -This agent is part of the Fetch.ai weather demo. It uses its primary skill, the `fetchai/weather_client` skill, to find an agent selling weather data on the `SOEF` service. +This agent is part of the Fetch.ai weather demo. It uses its primary skill, the `fetchai/weather_client` skill, to find an agent selling weather data on the `SOEF` service. Once found, it requests weather data for specific dates, negotiates the price using the `fetchai/fipa` protocol, and if an agreement is reached, pays the proposed amount and receives the data. ## Links -* Weather Demo \ No newline at end of file +- Weather Demo diff --git a/packages/fetchai/agents/weather_client/aea-config.yaml b/packages/fetchai/agents/weather_client/aea-config.yaml index 362f39a63e..c7428fa63a 100644 --- a/packages/fetchai/agents/weather_client/aea-config.yaml +++ b/packages/fetchai/agents/weather_client/aea-config.yaml @@ -1,27 +1,27 @@ agent_name: weather_client author: fetchai -version: 0.33.4 +version: 0.33.5 description: This AEA purchases weather data from the weather station. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 -- fetchai/weather_client:0.26.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/generic_buyer:0.27.6 +- fetchai/weather_client:0.26.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -30,8 +30,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/agents/weather_station/README.md b/packages/fetchai/agents/weather_station/README.md index c2f0a5a964..7f73503b70 100644 --- a/packages/fetchai/agents/weather_station/README.md +++ b/packages/fetchai/agents/weather_station/README.md @@ -4,12 +4,12 @@ This agent sells dummy weather data. ## Description -This agent is part of the Fetch.ai weather demo. It uses its primary skill, the `fetchai/weather_station` skill, to registers its 'weather-data-selling' service on the `SOEF`. This data comes from a database that is populated with dummy data from a weather station. +This agent is part of the Fetch.ai weather demo. It uses its primary skill, the `fetchai/weather_station` skill, to registers its 'weather-data-selling' service on the `SOEF`. This data comes from a database that is populated with dummy data from a weather station. -It can be contacted by another agent (for example the `fetchai/weather_client` agent) to provide weather data for specific dates.. +It can be contacted by another agent (for example the `fetchai/weather_client` agent) to provide weather data for specific dates.. Once such a request is made, this agent negotiates the terms of trade using the `fetchai/fipa` protocol, and if an agreement is reached, it delivers the weather data after receiving payment. ## Links -* Weather Demo +- Weather Demo diff --git a/packages/fetchai/agents/weather_station/aea-config.yaml b/packages/fetchai/agents/weather_station/aea-config.yaml index 7c4c049919..40607bf2a6 100644 --- a/packages/fetchai/agents/weather_station/aea-config.yaml +++ b/packages/fetchai/agents/weather_station/aea-config.yaml @@ -1,27 +1,27 @@ agent_name: weather_station author: fetchai -version: 0.32.4 +version: 0.32.5 description: This AEA represents a weather station selling weather data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 -- fetchai/p2p_libp2p:0.27.4 -- fetchai/soef:0.27.5 +- fetchai/ledger:0.21.5 +- fetchai/p2p_libp2p:0.27.5 +- fetchai/soef:0.27.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: -- fetchai/generic_seller:0.28.5 -- fetchai/weather_station:0.27.5 -default_connection: fetchai/p2p_libp2p:0.27.4 +- fetchai/generic_seller:0.28.6 +- fetchai/weather_station:0.27.6 +default_connection: fetchai/p2p_libp2p:0.27.5 default_ledger: fetchai required_ledgers: - fetchai @@ -30,8 +30,8 @@ logging_config: version: 1 private_key_paths: {} default_routing: - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 connection_private_key_paths: {} dependencies: aea-ledger-fetchai: diff --git a/packages/fetchai/connections/__init__.py b/packages/fetchai/connections/__init__.py index 9e202f05c5..78c749f24c 100644 --- a/packages/fetchai/connections/__init__.py +++ b/packages/fetchai/connections/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/gym/README.md b/packages/fetchai/connections/gym/README.md index 17f7c22c9c..126e7f1975 100644 --- a/packages/fetchai/connections/gym/README.md +++ b/packages/fetchai/connections/gym/README.md @@ -1,9 +1,9 @@ # Gym connection -Connection providing access to the gym interface (https://github.com/openai/gym) for training reinforcement learning systems. +Connection providing access to the gym interface () for training reinforcement learning systems. The connection wraps a gym and allows the AEA to interact with the gym interface via the `gym` protocol. ## Usage -First, add the connection to your AEA project (`aea add connection fetchai/gym:0.20.5`). Then, update the `config` in `connection.yaml` by providing a dotted path to the gym module in the `env` field. +First, add the connection to your AEA project (`aea add connection fetchai/gym:0.20.6`). Then, update the `config` in `connection.yaml` by providing a dotted path to the gym module in the `env` field. diff --git a/packages/fetchai/connections/gym/__init__.py b/packages/fetchai/connections/gym/__init__.py index 736a14cd5a..2cff212115 100644 --- a/packages/fetchai/connections/gym/__init__.py +++ b/packages/fetchai/connections/gym/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/gym/connection.py b/packages/fetchai/connections/gym/connection.py index bdf25f30dc..8a88e965fd 100644 --- a/packages/fetchai/connections/gym/connection.py +++ b/packages/fetchai/connections/gym/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -43,7 +43,7 @@ _default_logger = logging.getLogger("aea.packages.fetchai.connections.gym") -PUBLIC_ID = PublicId.from_str("fetchai/gym:0.20.5") +PUBLIC_ID = PublicId.from_str("fetchai/gym:0.20.6") class GymDialogues(BaseGymDialogues): diff --git a/packages/fetchai/connections/gym/connection.yaml b/packages/fetchai/connections/gym/connection.yaml index ca9ec69e85..41ef5f73b2 100644 --- a/packages/fetchai/connections/gym/connection.yaml +++ b/packages/fetchai/connections/gym/connection.yaml @@ -1,24 +1,24 @@ name: gym author: fetchai -version: 0.20.5 +version: 0.20.6 type: connection description: The gym connection wraps an OpenAI gym. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: Qmc6XqGTME67UWxZZZbZi3pcZ636JYZ7jRXLNQNX7sma5T - __init__.py: QmZJEjVyTn5auLw9VJESKjCVHrz5w5qY2qLyZQXdzxeMkw - connection.py: QmSXHaMWWPioF1dimssUCjdgCDrkEFU9EQPnPAi6cRmmN5 + README.md: QmbQw2EjS2WJYrmf1H7AJkdJfewXAWyYkfGqL1k9DBe1hs + __init__.py: QmaxS1pbCJtyT7zjAamvEnwLyR1LdrHK6VDcfN45jFgwQH + connection.py: QmP316GNMBHiuFuPhcgLHdwYsoH7ejwxCtGJSNodnDhyWa fingerprint_ignore_patterns: [] connections: [] protocols: -- fetchai/gym:1.1.6 +- fetchai/gym:1.1.7 class_name: GymConnection config: env: '' excluded_protocols: [] restricted_to_protocols: -- fetchai/gym:1.1.6 +- fetchai/gym:1.1.7 dependencies: gym: {} is_abstract: false diff --git a/packages/fetchai/connections/http_client/README.md b/packages/fetchai/connections/http_client/README.md index ef243f8460..27c2110b95 100644 --- a/packages/fetchai/connections/http_client/README.md +++ b/packages/fetchai/connections/http_client/README.md @@ -4,4 +4,4 @@ This connection wraps an HTTP client. It consumes messages from the AEA, transla ## Usage -First, add the connection to your AEA project (`aea add connection fetchai/http_client:0.24.5`). Then, update the `config` in `connection.yaml` by providing a `host` and `port` of the server. +First, add the connection to your AEA project (`aea add connection fetchai/http_client:0.24.6`). Then, update the `config` in `connection.yaml` by providing a `host` and `port` of the server. diff --git a/packages/fetchai/connections/http_client/__init__.py b/packages/fetchai/connections/http_client/__init__.py index fbfebb173a..dc24720444 100644 --- a/packages/fetchai/connections/http_client/__init__.py +++ b/packages/fetchai/connections/http_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/http_client/connection.py b/packages/fetchai/connections/http_client/connection.py index 7a280b156e..a2db8cb6e3 100644 --- a/packages/fetchai/connections/http_client/connection.py +++ b/packages/fetchai/connections/http_client/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -48,7 +48,7 @@ NOT_FOUND = 404 REQUEST_TIMEOUT = 408 SERVER_ERROR = 500 -PUBLIC_ID = PublicId.from_str("fetchai/http_client:0.24.5") +PUBLIC_ID = PublicId.from_str("fetchai/http_client:0.24.6") _default_logger = logging.getLogger("aea.packages.fetchai.connections.http_client") diff --git a/packages/fetchai/connections/http_client/connection.yaml b/packages/fetchai/connections/http_client/connection.yaml index 9b451a4c27..f5a924e91a 100644 --- a/packages/fetchai/connections/http_client/connection.yaml +++ b/packages/fetchai/connections/http_client/connection.yaml @@ -1,26 +1,26 @@ name: http_client author: fetchai -version: 0.24.5 +version: 0.24.6 type: connection description: The HTTP_client connection that wraps a web-based client connecting to a RESTful API specification. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmVoyUN7KNoLYFRDbTSYgthB3XbTW9JieDQuVaZ5MKa7aC - __init__.py: QmarwVThv7y1RwFT721vRgPFVGnD9Wf9yHQ89FDQ3Unuuq - connection.py: QmU4Ktsb8fPRCViZoefVZNJZ4P7sG2wupL5RJ6RJtzUskn + README.md: QmaAq5Ed75yQRZaSPWMksAC6JWTzvWfo1ustNjuMQBJ1WX + __init__.py: QmNsJsfE93PYUGgj7GqndT4aRoZ39ruL9zF3MMrbFcuE9a + connection.py: QmRPbv2Rhw7akb9BsNsZWFDfk9wChkEi1xxnWfqhFoTfsP fingerprint_ignore_patterns: [] connections: [] protocols: -- fetchai/http:1.1.6 +- fetchai/http:1.1.7 class_name: HTTPClientConnection config: host: 127.0.0.1 port: 8000 excluded_protocols: [] restricted_to_protocols: -- fetchai/http:1.1.6 +- fetchai/http:1.1.7 dependencies: aiohttp: version: <3.8,>=3.7.4 diff --git a/packages/fetchai/connections/http_server/README.md b/packages/fetchai/connections/http_server/README.md index ad6db8563c..e354f54b1e 100644 --- a/packages/fetchai/connections/http_server/README.md +++ b/packages/fetchai/connections/http_server/README.md @@ -4,4 +4,4 @@ This connection wraps an HTTP server. It consumes requests from clients, transla ## Usage -First, add the connection to your AEA project (`aea add connection fetchai/http_server:0.23.5`). Then, update the `config` in `connection.yaml` by providing a `host` and `port` of the server. Optionally, provide a path to an [OpenAPI specification](https://swagger.io/docs/specification/about/) for request validation. \ No newline at end of file +First, add the connection to your AEA project (`aea add connection fetchai/http_server:0.23.6`). Then, update the `config` in `connection.yaml` by providing a `host` and `port` of the server. Optionally, provide a path to an [OpenAPI specification](https://swagger.io/docs/specification/about/) for request validation. diff --git a/packages/fetchai/connections/http_server/__init__.py b/packages/fetchai/connections/http_server/__init__.py index 8b3ab99d00..9f5e75fed7 100644 --- a/packages/fetchai/connections/http_server/__init__.py +++ b/packages/fetchai/connections/http_server/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/http_server/connection.py b/packages/fetchai/connections/http_server/connection.py index 39f84a0103..5afefee179 100644 --- a/packages/fetchai/connections/http_server/connection.py +++ b/packages/fetchai/connections/http_server/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -66,7 +66,7 @@ _default_logger = logging.getLogger("aea.packages.fetchai.connections.http_server") RequestId = DialogueLabel -PUBLIC_ID = PublicId.from_str("fetchai/http_server:0.23.5") +PUBLIC_ID = PublicId.from_str("fetchai/http_server:0.23.6") class HttpDialogues(BaseHttpDialogues): diff --git a/packages/fetchai/connections/http_server/connection.yaml b/packages/fetchai/connections/http_server/connection.yaml index 6d15720a23..ca51f06dfd 100644 --- a/packages/fetchai/connections/http_server/connection.yaml +++ b/packages/fetchai/connections/http_server/connection.yaml @@ -1,19 +1,19 @@ name: http_server author: fetchai -version: 0.23.5 +version: 0.23.6 type: connection description: The HTTP server connection that wraps http server implementing a RESTful API specification. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmYmnXv1Y7iDu8HJ7cSc8iexWjK8a6gwoD52C2azoCgcb8 - __init__.py: QmWwXeD7ZNHRNqiUUrvMvHrSsx5PCm786ABRFLYB8UGBDK - connection.py: QmQRCWyY5TaMvfvhUgBx6SRKhcUKnBs6fJt7faZqkpPSoC + README.md: QmQKVp9nw9xvQa36AbBQzwrwvvLeuSEE1poy1GNw5egBXG + __init__.py: QmPQbWNzuoYoaWQ35b4XUzGUZqwm2YYNg9XpngS4xqCdiZ + connection.py: QmaQj91PXE5X9BZBBtei7JAKRWuxjHo8X8oewX5rFKU7VR fingerprint_ignore_patterns: [] connections: [] protocols: -- fetchai/http:1.1.6 +- fetchai/http:1.1.7 class_name: HTTPServerConnection config: api_spec_path: null @@ -24,7 +24,7 @@ config: target_skill_id: null excluded_protocols: [] restricted_to_protocols: -- fetchai/http:1.1.6 +- fetchai/http:1.1.7 dependencies: aiohttp: version: <3.8,>=3.7.4 diff --git a/packages/fetchai/connections/ledger/README.md b/packages/fetchai/connections/ledger/README.md index c4a0975b1c..ed21ad5f60 100644 --- a/packages/fetchai/connections/ledger/README.md +++ b/packages/fetchai/connections/ledger/README.md @@ -8,4 +8,4 @@ The connection uses the ledger APIs registered in the ledger API registry. ## Usage -First, add the connection to your AEA project (`aea add connection fetchai/ledger:0.21.4`). Optionally, update the `ledger_apis` in `config` of `connection.yaml`. +First, add the connection to your AEA project (`aea add connection fetchai/ledger:0.21.5`). Optionally, update the `ledger_apis` in `config` of `connection.yaml`. diff --git a/packages/fetchai/connections/ledger/__init__.py b/packages/fetchai/connections/ledger/__init__.py index a936e7d121..f1f51a816a 100644 --- a/packages/fetchai/connections/ledger/__init__.py +++ b/packages/fetchai/connections/ledger/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/ledger/base.py b/packages/fetchai/connections/ledger/base.py index 442cfb6e8f..a3d366ab48 100644 --- a/packages/fetchai/connections/ledger/base.py +++ b/packages/fetchai/connections/ledger/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -33,7 +33,7 @@ from aea.protocols.dialogue.base import Dialogue, Dialogues -CONNECTION_ID = PublicId.from_str("fetchai/ledger:0.21.4") +CONNECTION_ID = PublicId.from_str("fetchai/ledger:0.21.5") class RequestDispatcher(ABC): diff --git a/packages/fetchai/connections/ledger/connection.py b/packages/fetchai/connections/ledger/connection.py index 44b43d9696..a845f7cb21 100644 --- a/packages/fetchai/connections/ledger/connection.py +++ b/packages/fetchai/connections/ledger/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/ledger/connection.yaml b/packages/fetchai/connections/ledger/connection.yaml index 7e6133c59b..16c15a0fbb 100644 --- a/packages/fetchai/connections/ledger/connection.yaml +++ b/packages/fetchai/connections/ledger/connection.yaml @@ -1,22 +1,22 @@ name: ledger author: fetchai -version: 0.21.4 +version: 0.21.5 type: connection description: A connection to interact with any ledger API and contract API. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmVZ9rtsuf2iSg3hWx3ap5nkqhsUyrPK3g7Pue6JxRAmE1 - __init__.py: QmY7cPhXj7suon5jahiWCZgsCtQr5zfwYtR7yu5CJ6y5nD - base.py: QmQSzmjjGbnz77QqDuLx2KfaQjeQqiJSQmMMmKbdxjFUMY - connection.py: QmbzG7jcRAashSNcso3reesk3E7jHZanBKm8QTjGT1iijq - contract_dispatcher.py: QmbPSej5n8jxWr9bNCVkN8a6byyDzeAQSuK5VLfdAnAZUw - ledger_dispatcher.py: QmQgwhDiweVaZ51V7Zc1vdsKaP9guKtaeGXq1cehfrttEH + README.md: QmSFv3KfHuN5dhUU5bo6Eem5Df6Ph77GgSP8ZPgKQrRQHN + __init__.py: QmaA7o9G1hT3fHtPDq6UYUyS5KY51uDkwMUGUc96odzSCX + base.py: QmexgSRbx7AbPP1dfRuqLiU5BYwanYzmLMkQ9ebxHctGqG + connection.py: Qmcu2SPDRdoT6jPAfuTAeEfugBppyEM4Ge5FM9hRNKNgzB + contract_dispatcher.py: QmaQjpMMUNZXGXUavhofVnaXCQAte7hj4zCmvhWzPPkc5V + ledger_dispatcher.py: QmQXRSCdQiYqdb7vX7S95Bhpr5V6sX15fb4f2gzQzvW148 fingerprint_ignore_patterns: [] connections: [] protocols: -- fetchai/contract_api:1.1.6 -- fetchai/ledger_api:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/ledger_api:1.1.7 class_name: LedgerConnection config: ledger_apis: @@ -29,7 +29,7 @@ config: chain_id: dorado-1 excluded_protocols: [] restricted_to_protocols: -- fetchai/contract_api:1.1.6 -- fetchai/ledger_api:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/ledger_api:1.1.7 dependencies: {} is_abstract: false diff --git a/packages/fetchai/connections/ledger/contract_dispatcher.py b/packages/fetchai/connections/ledger/contract_dispatcher.py index b7c39fd7e2..26c685f205 100644 --- a/packages/fetchai/connections/ledger/contract_dispatcher.py +++ b/packages/fetchai/connections/ledger/contract_dispatcher.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/ledger/ledger_dispatcher.py b/packages/fetchai/connections/ledger/ledger_dispatcher.py index 5de207d2e3..37b9b1f6c9 100644 --- a/packages/fetchai/connections/ledger/ledger_dispatcher.py +++ b/packages/fetchai/connections/ledger/ledger_dispatcher.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/local/__init__.py b/packages/fetchai/connections/local/__init__.py index 7679fc1f29..22daaee025 100644 --- a/packages/fetchai/connections/local/__init__.py +++ b/packages/fetchai/connections/local/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/local/connection.py b/packages/fetchai/connections/local/connection.py index a518a7b7c2..a7eeab8f56 100644 --- a/packages/fetchai/connections/local/connection.py +++ b/packages/fetchai/connections/local/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -52,7 +52,7 @@ RESPONSE_MESSAGE_ID = MESSAGE_ID + 1 STUB_DIALOGUE_ID = 0 -PUBLIC_ID = PublicId.from_str("fetchai/local:0.21.5") +PUBLIC_ID = PublicId.from_str("fetchai/local:0.21.6") OefSearchDialogue = BaseOefSearchDialogue diff --git a/packages/fetchai/connections/local/connection.yaml b/packages/fetchai/connections/local/connection.yaml index d61253e246..1127e8df0d 100644 --- a/packages/fetchai/connections/local/connection.yaml +++ b/packages/fetchai/connections/local/connection.yaml @@ -1,18 +1,18 @@ name: local author: fetchai -version: 0.21.5 +version: 0.21.6 type: connection description: The local connection provides a stub for an OEF node. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmbK7MtyAVqh2LmSh9TY6yBZqfWaAXURP4rQGATyP2hTKC - __init__.py: QmRFPAntprRgDCzKzcfV3gJCkovSPQcnVQLprML693qeBW - connection.py: QmYJCaNthMUzMs1Vjh6P2DfozSMFzNapNkQ9aCMJTexrx2 + __init__.py: QmUZgacY7XBWHCum6DrUkoy4r3xM3hkzKpqC49XFmKuYRQ + connection.py: QmWiVqkzLKTJNgXNKRKJSiR3CLZkJWvU9QYN691gTuCTZG fingerprint_ignore_patterns: [] connections: [] protocols: -- fetchai/oef_search:1.1.6 +- fetchai/oef_search:1.1.7 class_name: OEFLocalConnection config: {} excluded_protocols: [] diff --git a/packages/fetchai/connections/oef/README.md b/packages/fetchai/connections/oef/README.md index 363c6291a1..3e7bce84c6 100644 --- a/packages/fetchai/connections/oef/README.md +++ b/packages/fetchai/connections/oef/README.md @@ -1,7 +1,7 @@ # OEF connection -Connection to interact with an OEF node (https://fetchai.github.io/oef-sdk-python/user/introduction.html). +Connection to interact with an OEF node (). ## Usage -Register/unregister services, perform searches using `fetchai/oef_search:1.1.6` protocol and send messages of any protocol to other agents connected to the same node. \ No newline at end of file +Register/unregister services, perform searches using `fetchai/oef_search:1.1.7` protocol and send messages of any protocol to other agents connected to the same node. diff --git a/packages/fetchai/connections/oef/__init__.py b/packages/fetchai/connections/oef/__init__.py index 456917bef7..71197bf9ce 100644 --- a/packages/fetchai/connections/oef/__init__.py +++ b/packages/fetchai/connections/oef/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/oef/connection.py b/packages/fetchai/connections/oef/connection.py index 4daf59f4e4..46f792e5c3 100644 --- a/packages/fetchai/connections/oef/connection.py +++ b/packages/fetchai/connections/oef/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -59,7 +59,7 @@ STUB_MESSAGE_ID = 0 STUB_DIALOGUE_ID = 0 DEFAULT_OEF = "oef" -PUBLIC_ID = PublicId.from_str("fetchai/oef:0.22.5") +PUBLIC_ID = PublicId.from_str("fetchai/oef:0.22.6") OefSearchDialogue = BaseOefSearchDialogue diff --git a/packages/fetchai/connections/oef/connection.yaml b/packages/fetchai/connections/oef/connection.yaml index b37158a8bd..b7fe066c90 100644 --- a/packages/fetchai/connections/oef/connection.yaml +++ b/packages/fetchai/connections/oef/connection.yaml @@ -1,21 +1,21 @@ name: oef author: fetchai -version: 0.22.5 +version: 0.22.6 type: connection description: The oef connection provides a wrapper around the OEF SDK for connection with the OEF search and communication node. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmanfBiS9gD9MBXfNLr9RY7tFeVRhud5vxwEv3a64FnMAw - __init__.py: Qmd6emotQtJCuiN5P6peqzyhNJx9ZzHcqBXmkrLXy4BdBX - connection.py: QmadLNbXCiJdWyXJKSYHpyQh4sQsKgX3KzBxTjuN6b4Bys - object_translator.py: QmYab37Q97PFHtq6tJViEq1jYbdLZ2fDYSqrDfjZMLCrvR + README.md: QmWXtFDtByTYoLy5UKYbYQ9hfDUnDhLJzSy1svoAnHyKUp + __init__.py: QmPyDUmHgQdAtuq46GSQ75kpkeH3jg5LQoZm2xQi9j9PMk + connection.py: QmTKTZvUxTfL9qZ9on9h6WmiempZBbPsQ6yMiCvwt2jm3v + object_translator.py: QmTcyE7yVMzx72zr7JJoZDftL42aP5s3jQQBgMCGqgY6PW fingerprint_ignore_patterns: [] connections: [] protocols: -- fetchai/default:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/default:1.1.7 +- fetchai/oef_search:1.1.7 class_name: OEFConnection config: addr: 127.0.0.1 diff --git a/packages/fetchai/connections/oef/object_translator.py b/packages/fetchai/connections/oef/object_translator.py index 28a4ea6e69..b680ac9e7f 100644 --- a/packages/fetchai/connections/oef/object_translator.py +++ b/packages/fetchai/connections/oef/object_translator.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/p2p_libp2p/README.md b/packages/fetchai/connections/p2p_libp2p/README.md index 7127a920d8..d8ea525e7d 100644 --- a/packages/fetchai/connections/p2p_libp2p/README.md +++ b/packages/fetchai/connections/p2p_libp2p/README.md @@ -6,7 +6,7 @@ The DHT provides proper messages delivery by mapping agents addresses to their l ## Usage -First, add the connection to your AEA project: `aea add connection fetchai/p2p_libp2p:0.27.4`. +First, add the connection to your AEA project: `aea add connection fetchai/p2p_libp2p:0.27.5`. Next, ensure that the connection is properly configured by setting: @@ -15,4 +15,4 @@ Next, ensure that the connection is properly configured by setting: - `entry_peers` to a list of multiaddresses of already deployed nodes to join their network, should be empty for genesis node - `delegate_uri` to the IP address and port number for the delegate service, leave empty to disable the service -If the delegate service is enabled, then other AEAs can connect to the peer node using the `fetchai/p2p_libp2p_client:0.20.5` connection. +If the delegate service is enabled, then other AEAs can connect to the peer node using the `fetchai/p2p_libp2p_client:0.20.6` connection. diff --git a/packages/fetchai/connections/p2p_libp2p/__init__.py b/packages/fetchai/connections/p2p_libp2p/__init__.py index 571d63984d..50dc954379 100644 --- a/packages/fetchai/connections/p2p_libp2p/__init__.py +++ b/packages/fetchai/connections/p2p_libp2p/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/p2p_libp2p/check_dependencies.py b/packages/fetchai/connections/p2p_libp2p/check_dependencies.py index 788c35411a..9637945387 100644 --- a/packages/fetchai/connections/p2p_libp2p/check_dependencies.py +++ b/packages/fetchai/connections/p2p_libp2p/check_dependencies.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/p2p_libp2p/connection.py b/packages/fetchai/connections/p2p_libp2p/connection.py index 1ee3edff0a..ed3f25b52b 100644 --- a/packages/fetchai/connections/p2p_libp2p/connection.py +++ b/packages/fetchai/connections/p2p_libp2p/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -58,7 +58,7 @@ PIPE_CONN_TIMEOUT = 10.0 -PUBLIC_ID = PublicId.from_str("fetchai/p2p_libp2p:0.27.4") +PUBLIC_ID = PublicId.from_str("fetchai/p2p_libp2p:0.27.5") SUPPORTED_LEDGER_IDS = ["fetchai", "cosmos", "ethereum"] diff --git a/packages/fetchai/connections/p2p_libp2p/connection.yaml b/packages/fetchai/connections/p2p_libp2p/connection.yaml index f052833dec..29512defa3 100644 --- a/packages/fetchai/connections/p2p_libp2p/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p/connection.yaml @@ -1,6 +1,6 @@ name: p2p_libp2p author: fetchai -version: 0.27.4 +version: 0.27.5 type: connection description: The p2p libp2p connection implements an interface to standalone golang go-libp2p node that can exchange aea envelopes with other agents connected to the @@ -8,15 +8,15 @@ description: The p2p libp2p connection implements an interface to standalone gol license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmdkqMTGvvmv1ZG1sSj7M7xheSTviLrWiV8h3XePV1dxy2 - __init__.py: QmcibHXQV8uZnMRJe7jNGEFeUKns1ZF2QR9c6mxKMbV4oa - check_dependencies.py: QmXpT25ZDNrjJ7VPspLGipn9WP9j313cvhP439pzr5Gc3J - connection.py: QmXfAipE1a6XzUo7Gkm2PkF8vV3Qm6AkGJqgjo1D8EZVWq - consts.py: QmNbua6EsorAf3FS4fCmCHBZ9TRZ6ENkZoHTyA9TEJZqpy + README.md: Qmf8Gh38S4rtZVh2yPUTdHrAEpovt1ULg4bccaFNZfYxCt + __init__.py: Qmcwvb5isp1zoF57phgDHEPTNLuPa5zCkEC4JSsDUUHE78 + check_dependencies.py: QmXCg3mGhHzGxxbaTtHKY1HfumubPKryiaBeBMbJEZLQTE + connection.py: QmZxZagVYj9NVzAYtM9UyMPsiXjz6uPuF8Ywb2WnJnTDiZ + consts.py: QmXi6edKonz6SuAnRnMURRRU62GNZa9TRhqiDxmnwLB4Sp libp2p_node/.dockerignore: QmVwyNjya468nRTxSjFP73dSzQdSffp74osz5dGEAHHweA libp2p_node/Dockerfile: QmeZ6KJf4cpgL7DY6qdWetVfTPPijUvHxoCUbYgSS3SsWM libp2p_node/Makefile: Qmezxsp96mW85mJhjGAarLmwWJG9JvGJowcY5h56oPB9bt - libp2p_node/README.md: QmRBC7o5y1TBQGwviJ9XxywdeuSSz6dNgvGE9wQhFPES4D + libp2p_node/README.md: QmR1Lk6utZWxN1rEBmTodenwfyjTucv5akx9GGcFzxmPjb libp2p_node/acn/utils.go: Qmb39aDGu7N5a8JPdHeRsjSzJ9fyKp2jT3EkULocvGGYKV libp2p_node/aea/api.go: QmW7mHHShumfDHg9Ds1nxHZJN4EAHGLrr15jLX7kKYkcV9 libp2p_node/aea/envelope.pb.go: QmRfUNGpCeVJfsW3H1MzCN4pwDWgumfyWufVFp6xvUjjug @@ -59,7 +59,7 @@ fingerprint_ignore_patterns: [] build_entrypoint: check_dependencies.py connections: [] protocols: -- fetchai/acn:1.1.6 +- fetchai/acn:1.1.7 class_name: P2PLibp2pConnection config: delegate_uri: 127.0.0.1:11000 diff --git a/packages/fetchai/connections/p2p_libp2p/consts.py b/packages/fetchai/connections/p2p_libp2p/consts.py index c54b149ae7..eb405675b6 100644 --- a/packages/fetchai/connections/p2p_libp2p/consts.py +++ b/packages/fetchai/connections/p2p_libp2p/consts.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/p2p_libp2p/libp2p_node/README.md b/packages/fetchai/connections/p2p_libp2p/libp2p_node/README.md index 6bac84ad3c..8a75d073a9 100644 --- a/packages/fetchai/connections/p2p_libp2p/libp2p_node/README.md +++ b/packages/fetchai/connections/p2p_libp2p/libp2p_node/README.md @@ -1,3 +1,4 @@ +# Libp2p Node The `libp2p_node` is an integral part of the ACN. @@ -24,7 +25,7 @@ staticcheck ./... ``` For mocks generation: -check https://github.com/golang/mock +check ## Messaging patterns @@ -35,8 +36,7 @@ ___ TCP/UDP/... ___ -### Messaging patterns inwards ACN: - +### Messaging patterns inwards ACN Connection (`p2p_libp2p_client`) > Delegate Client > Relay Peer > Peer (Discouraged!) @@ -46,10 +46,8 @@ Connection (`p2p_libp2p`) > Relay Peer > Peer Connection (`p2p_libp2p`) > Peer - ### Messaging patterns outwards ACN - Peer > Relay Peer > Delegate Client > Connection (`p2p_libp2p_client`) (Discouraged!) Peer > Relay Peer > Connection (`p2p_libp2p`) @@ -58,14 +56,13 @@ Peer > Delegate Client > Connection (`p2p_libp2p_client`) Peer > Connection (`p2p_libp2p`) - In total 4*4 = 16 patterns (practically: 3*3 = 9 patterns) ## Guarantees ACN should guarantee total ordering of messages for all agent pairs, independent of the type of connection and ACN messaging pattern used. -## Advanced feature (post `v1`): +## Advanced feature (post `v1`) Furthermore, there is the agent mobility. An agent can move between entry-points (Relay Peer/Peer/Delegate Client). The ACN must ensure that all messaging patterns maintain total ordering of messages for agent pairs during the move. diff --git a/packages/fetchai/connections/p2p_libp2p_client/README.md b/packages/fetchai/connections/p2p_libp2p_client/README.md index de74ed71c0..49f45b9e3b 100644 --- a/packages/fetchai/connections/p2p_libp2p_client/README.md +++ b/packages/fetchai/connections/p2p_libp2p_client/README.md @@ -4,10 +4,9 @@ A lightweight TCP connection to a libp2p DHT node. It allows for using the DHT without having to deploy a node by delegating its communication traffic to an already running DHT node with delegate service enabled. +## Usage -## Usage - -First, add the connection to your AEA project: `aea add connection fetchai/p2p_libp2p_client:0.20.5`. +First, add the connection to your AEA project: `aea add connection fetchai/p2p_libp2p_client:0.20.6`. Next, ensure that the connection is properly configured by setting: diff --git a/packages/fetchai/connections/p2p_libp2p_client/__init__.py b/packages/fetchai/connections/p2p_libp2p_client/__init__.py index 2c23e055d2..9898d1ca12 100644 --- a/packages/fetchai/connections/p2p_libp2p_client/__init__.py +++ b/packages/fetchai/connections/p2p_libp2p_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/p2p_libp2p_client/connection.py b/packages/fetchai/connections/p2p_libp2p_client/connection.py index 0cb3dd07f4..7e8f4f8ab3 100644 --- a/packages/fetchai/connections/p2p_libp2p_client/connection.py +++ b/packages/fetchai/connections/p2p_libp2p_client/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -58,7 +58,7 @@ "aea.packages.fetchai.connections.p2p_libp2p_client" ) -PUBLIC_ID = PublicId.from_str("fetchai/p2p_libp2p_client:0.20.5") +PUBLIC_ID = PublicId.from_str("fetchai/p2p_libp2p_client:0.20.6") SUPPORTED_LEDGER_IDS = ["fetchai", "cosmos", "ethereum"] diff --git a/packages/fetchai/connections/p2p_libp2p_client/connection.yaml b/packages/fetchai/connections/p2p_libp2p_client/connection.yaml index 0f587c6dd2..51433db29f 100644 --- a/packages/fetchai/connections/p2p_libp2p_client/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p_client/connection.yaml @@ -1,6 +1,6 @@ name: p2p_libp2p_client author: fetchai -version: 0.20.5 +version: 0.20.6 type: connection description: The libp2p client connection implements a tcp connection to a running libp2p node as a traffic delegate to send/receive envelopes to/from agents in the @@ -8,13 +8,13 @@ description: The libp2p client connection implements a tcp connection to a runni license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmchaNxQavwRaKMhZYaYpDjWUiRb4CA11FSaPPJVshpi9s - __init__.py: QmQKLUSEPVm59e3JC78zQTebbo8AKf4SBRhz1AKuV7bmCB - connection.py: QmVTqnUhvGeyVpvVkRuKe3cX1ND9JHDS9dV7hjeLwvQPTy + README.md: QmSbRjhLF6vhoVugcGKJtT3CD59sSgCPG3NF3rBrS3CG8t + __init__.py: QmXwtBAZxhrLXVTU5FYytTxnoh7vScRQBRjtMvFerXH31e + connection.py: Qmb2RBaDjdEpM1i8YHYcZQpuPfFcZGPiZ4SdSunejxvfho fingerprint_ignore_patterns: [] connections: [] protocols: -- fetchai/acn:1.1.6 +- fetchai/acn:1.1.7 class_name: P2PLibp2pClientConnection config: connect_retries: 3 diff --git a/packages/fetchai/connections/p2p_libp2p_mailbox/README.md b/packages/fetchai/connections/p2p_libp2p_mailbox/README.md index de74ed71c0..49f45b9e3b 100644 --- a/packages/fetchai/connections/p2p_libp2p_mailbox/README.md +++ b/packages/fetchai/connections/p2p_libp2p_mailbox/README.md @@ -4,10 +4,9 @@ A lightweight TCP connection to a libp2p DHT node. It allows for using the DHT without having to deploy a node by delegating its communication traffic to an already running DHT node with delegate service enabled. +## Usage -## Usage - -First, add the connection to your AEA project: `aea add connection fetchai/p2p_libp2p_client:0.20.5`. +First, add the connection to your AEA project: `aea add connection fetchai/p2p_libp2p_client:0.20.6`. Next, ensure that the connection is properly configured by setting: diff --git a/packages/fetchai/connections/p2p_libp2p_mailbox/__init__.py b/packages/fetchai/connections/p2p_libp2p_mailbox/__init__.py index 2c23e055d2..9898d1ca12 100644 --- a/packages/fetchai/connections/p2p_libp2p_mailbox/__init__.py +++ b/packages/fetchai/connections/p2p_libp2p_mailbox/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/p2p_libp2p_mailbox/connection.py b/packages/fetchai/connections/p2p_libp2p_mailbox/connection.py index ea4a324d2b..823beb7d43 100644 --- a/packages/fetchai/connections/p2p_libp2p_mailbox/connection.py +++ b/packages/fetchai/connections/p2p_libp2p_mailbox/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -59,7 +59,7 @@ "aea.packages.fetchai.connections.p2p_libp2p_client" ) -PUBLIC_ID = PublicId.from_str("fetchai/p2p_libp2p_mailbox:0.2.5") +PUBLIC_ID = PublicId.from_str("fetchai/p2p_libp2p_mailbox:0.2.6") SUPPORTED_LEDGER_IDS = ["fetchai", "cosmos", "ethereum"] diff --git a/packages/fetchai/connections/p2p_libp2p_mailbox/connection.yaml b/packages/fetchai/connections/p2p_libp2p_mailbox/connection.yaml index 2bb2f5604b..69fe7033e9 100644 --- a/packages/fetchai/connections/p2p_libp2p_mailbox/connection.yaml +++ b/packages/fetchai/connections/p2p_libp2p_mailbox/connection.yaml @@ -1,6 +1,6 @@ name: p2p_libp2p_mailbox author: fetchai -version: 0.2.5 +version: 0.2.6 type: connection description: The libp2p client connection implements a tcp connection to a running libp2p node as a traffic delegate to send/receive envelopes to/from agents in the @@ -8,13 +8,13 @@ description: The libp2p client connection implements a tcp connection to a runni license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmchaNxQavwRaKMhZYaYpDjWUiRb4CA11FSaPPJVshpi9s - __init__.py: QmQKLUSEPVm59e3JC78zQTebbo8AKf4SBRhz1AKuV7bmCB - connection.py: QmSPSL4rvtWkZMqFCqUAZuwggmgwFh673yDdL2VHBzkeuE + README.md: QmSbRjhLF6vhoVugcGKJtT3CD59sSgCPG3NF3rBrS3CG8t + __init__.py: QmXwtBAZxhrLXVTU5FYytTxnoh7vScRQBRjtMvFerXH31e + connection.py: QmStAHydBBs2De2oAnjspoNi56cDuKMAdyFCsjsK6PBHfa fingerprint_ignore_patterns: [] connections: [] protocols: -- fetchai/acn:1.1.6 +- fetchai/acn:1.1.7 class_name: P2PLibp2pMailboxConnection config: connect_retries: 3 diff --git a/packages/fetchai/connections/p2p_stub/README.md b/packages/fetchai/connections/p2p_stub/README.md index 55ea40ce59..7d3aec34c9 100644 --- a/packages/fetchai/connections/p2p_stub/README.md +++ b/packages/fetchai/connections/p2p_stub/README.md @@ -4,6 +4,6 @@ Simple file based connection to perform interaction between multiple local agent ## Usage -First, add the connection to your AEA project: `aea add connection fetchai/p2p_stub:0.18.2`. +First, add the connection to your AEA project: `aea add connection fetchai/p2p_stub:0.18.3`. Optionally, in the `connection.yaml` file under `config` set the `namespace_dir` to the desired file path. The `p2p_stub` connection reads encoded envelopes from its input file and writes encoded envelopes to its output file. Multiple agents can be pointed to the same `namespace_dir` and are then able to exchange envelopes via the file system. diff --git a/packages/fetchai/connections/p2p_stub/__init__.py b/packages/fetchai/connections/p2p_stub/__init__.py index 301e0400a7..a3f397d71d 100644 --- a/packages/fetchai/connections/p2p_stub/__init__.py +++ b/packages/fetchai/connections/p2p_stub/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/p2p_stub/connection.py b/packages/fetchai/connections/p2p_stub/connection.py index 07a0fdaa5b..e6b97bbdc4 100644 --- a/packages/fetchai/connections/p2p_stub/connection.py +++ b/packages/fetchai/connections/p2p_stub/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ from packages.fetchai.connections.stub.connection import StubConnection, write_envelope -PUBLIC_ID = PublicId.from_str("fetchai/p2p_stub:0.18.2") +PUBLIC_ID = PublicId.from_str("fetchai/p2p_stub:0.18.3") class P2PStubConnection(StubConnection): diff --git a/packages/fetchai/connections/p2p_stub/connection.yaml b/packages/fetchai/connections/p2p_stub/connection.yaml index 4c981b2359..e707644f3c 100644 --- a/packages/fetchai/connections/p2p_stub/connection.yaml +++ b/packages/fetchai/connections/p2p_stub/connection.yaml @@ -1,18 +1,18 @@ name: p2p_stub author: fetchai -version: 0.18.2 +version: 0.18.3 type: connection description: The stub p2p connection implements a local p2p connection allowing agents to communicate with each other through files created in the namespace directory. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmVETbKd9GHjFVHPRcrPAEeWbDeWwqTS31xpQZopA5KTHv - __init__.py: QmPh1wWMrDNzz83WKAYVJzDMMWpb6QVjV6x9LsvmjueKWn - connection.py: QmbGHAaP3aYW9XHRH6eXRVGu21ZZckzAvSpfuSSJMq1Yt8 + README.md: QmRsMvDbqtD1Hwdjr6H6ypRLuWmyUwT7ZJxj6Taq7VYM28 + __init__.py: QmTEHNj5MHXKyboUYrPr2FEpFH2rDgFPasLGViZJg6GuS3 + connection.py: QmfHu2JX3ksGkFvcwQiXfASvrp7RZ8bzoKDdYNYU11XfuV fingerprint_ignore_patterns: [] connections: -- fetchai/stub:0.21.2 +- fetchai/stub:0.21.3 protocols: [] class_name: P2PStubConnection config: diff --git a/packages/fetchai/connections/prometheus/README.md b/packages/fetchai/connections/prometheus/README.md index 951915c8dd..8fb7945c99 100644 --- a/packages/fetchai/connections/prometheus/README.md +++ b/packages/fetchai/connections/prometheus/README.md @@ -1,6 +1,7 @@ # Prometheus connection + AEAs can create and update prometheus metrics for remote monitoring by sending messages to the prometheus connection. ## Usage -First, add the connection to your AEA project (`aea add connection fetchai/prometheus:0.9.5`). Then, add the protocol (`aea add protocol fetchai/prometheus:1.1.6`) to your project. The default port (`9090`) to expose metrics can be changed to `PORT` by updating the `config` at the agent level (`aea config set --type=int vendor.fetchai.connections.prometheus.config.port PORT`). +First, add the connection to your AEA project (`aea add connection fetchai/prometheus:0.9.6`). Then, add the protocol (`aea add protocol fetchai/prometheus:1.1.7`) to your project. The default port (`9090`) to expose metrics can be changed to `PORT` by updating the `config` at the agent level (`aea config set --type=int vendor.fetchai.connections.prometheus.config.port PORT`). diff --git a/packages/fetchai/connections/prometheus/__init__.py b/packages/fetchai/connections/prometheus/__init__.py index 952d62c4c3..47bd2007d0 100644 --- a/packages/fetchai/connections/prometheus/__init__.py +++ b/packages/fetchai/connections/prometheus/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/prometheus/connection.py b/packages/fetchai/connections/prometheus/connection.py index feaf9439ba..7a2721c4fe 100644 --- a/packages/fetchai/connections/prometheus/connection.py +++ b/packages/fetchai/connections/prometheus/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,7 @@ from packages.fetchai.protocols.prometheus.message import PrometheusMessage -PUBLIC_ID = PublicId.from_str("fetchai/prometheus:0.9.5") +PUBLIC_ID = PublicId.from_str("fetchai/prometheus:0.9.6") DEFAULT_HOST = "127.0.0.1" DEFAULT_PORT = 9090 diff --git a/packages/fetchai/connections/prometheus/connection.yaml b/packages/fetchai/connections/prometheus/connection.yaml index 1c68f07122..225237f1f9 100644 --- a/packages/fetchai/connections/prometheus/connection.yaml +++ b/packages/fetchai/connections/prometheus/connection.yaml @@ -1,25 +1,25 @@ name: prometheus author: fetchai -version: 0.9.5 +version: 0.9.6 type: connection description: Connection for exposing agent metrics to prometheus server license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmWyfBxrcdSDqgUSffMrALDdMcDFt1fn7ace8XtMuKgd6o - __init__.py: QmbSFtnvhvR35VpuahXXpyudze4Qi8m8x15ETf99HEwUQD - connection.py: QmagkVZPC5YuMxpBpUkSggbj9crKrqhtznJue9w5yLoC9G + README.md: QmRRMZobBhviy9KjqzJR5NqaL4YaKtE9atwK6Y5mdgZYSM + __init__.py: QmW4f9cnBi7hiCqyiNk7Xx4bS1y6yt5B1b64FErHCm8BSA + connection.py: QmSXqP7kK42HCoavWUaZHgk7ke3ioaTKQgVFLtCcNpFsPL fingerprint_ignore_patterns: [] connections: [] protocols: -- fetchai/prometheus:1.1.6 +- fetchai/prometheus:1.1.7 class_name: PrometheusConnection config: host: 127.0.0.1 port: 9090 excluded_protocols: [] restricted_to_protocols: -- fetchai/prometheus:1.1.6 +- fetchai/prometheus:1.1.7 dependencies: aioprometheus: version: <21.0.0,>=20.0.0 diff --git a/packages/fetchai/connections/soef/README.md b/packages/fetchai/connections/soef/README.md index 4c204ab874..686aa2ee1e 100644 --- a/packages/fetchai/connections/soef/README.md +++ b/packages/fetchai/connections/soef/README.md @@ -4,6 +4,6 @@ The SOEF connection is used to connect to an SOEF node. The SOEF provides OEF se ## Usage -First, add the connection to your AEA project: `aea add connection fetchai/soef:0.27.5`. Then ensure the `config` in `connection.yaml` matches your need. In particular, make sure `chain_identifier` matches your `default_ledger`. +First, add the connection to your AEA project: `aea add connection fetchai/soef:0.27.6`. Then ensure the `config` in `connection.yaml` matches your need. In particular, make sure `chain_identifier` matches your `default_ledger`. -To register/unregister services and perform searches use the `fetchai/oef_search:1.1.6` protocol \ No newline at end of file +To register/unregister services and perform searches use the `fetchai/oef_search:1.1.7` protocol diff --git a/packages/fetchai/connections/soef/__init__.py b/packages/fetchai/connections/soef/__init__.py index bb4b33c4dc..8fe89fc889 100644 --- a/packages/fetchai/connections/soef/__init__.py +++ b/packages/fetchai/connections/soef/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/soef/connection.py b/packages/fetchai/connections/soef/connection.py index 84a191595f..fe249d3871 100644 --- a/packages/fetchai/connections/soef/connection.py +++ b/packages/fetchai/connections/soef/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -66,7 +66,7 @@ _default_logger = logging.getLogger("aea.packages.fetchai.connections.soef") -PUBLIC_ID = PublicId.from_str("fetchai/soef:0.27.5") +PUBLIC_ID = PublicId.from_str("fetchai/soef:0.27.6") NOT_SPECIFIED = object() diff --git a/packages/fetchai/connections/soef/connection.yaml b/packages/fetchai/connections/soef/connection.yaml index 257caed59e..39df6c089a 100644 --- a/packages/fetchai/connections/soef/connection.yaml +++ b/packages/fetchai/connections/soef/connection.yaml @@ -1,18 +1,18 @@ name: soef author: fetchai -version: 0.27.5 +version: 0.27.6 type: connection description: The soef connection provides a connection api to the simple OEF. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmXPeSsoYp7XggSMmLbJXjLFXCVHLrV6yrjSmaZS8ZmMD1 - __init__.py: QmQNy17gZ5rHXFy7v8fqKBQuR7aR6pFaHBmmDxisq8Syi2 - connection.py: QmRESWmpVEPBvq31Xd4HP9HPiuSqcTfrgoh4AB1y4bMsYz + README.md: Qma5vKjAp6cPoDKM7fxTDhTbzKbemEWQecfk7kosHymptF + __init__.py: QmTCY2JASjfXJdt9ywBE5pejcXKvbrtSNCzJ9uiiEoHKFm + connection.py: QmZjpVuG4x9m9nFtAitdZ5MbJdBXFgrYHtkVrxUq7QL8c5 fingerprint_ignore_patterns: [] connections: [] protocols: -- fetchai/oef_search:1.1.6 +- fetchai/oef_search:1.1.7 class_name: SOEFConnection config: api_key: TwiCIriSl0mLahw17pyqoA @@ -25,7 +25,7 @@ config: token_storage_path: soef_token.txt excluded_protocols: [] restricted_to_protocols: -- fetchai/oef_search:1.1.6 +- fetchai/oef_search:1.1.7 dependencies: defusedxml: {} is_abstract: false diff --git a/packages/fetchai/connections/stub/README.md b/packages/fetchai/connections/stub/README.md index 668e22ef09..4a2490eb83 100644 --- a/packages/fetchai/connections/stub/README.md +++ b/packages/fetchai/connections/stub/README.md @@ -1,7 +1,9 @@ # Stub connection + A simple connection for communication with an AEA, using the file system as a point of data exchange. ## Usage -First, add the connection to your AEA project: `aea add connection fetchai/stub:0.21.2`. (If you have created your AEA project with `aea create` then the connection will already be available by default.) + +First, add the connection to your AEA project: `aea add connection fetchai/stub:0.21.3`. (If you have created your AEA project with `aea create` then the connection will already be available by default.) Optionally, in the `connection.yaml` file under `config` set the `input_file` and `output_file` to the desired file path. The `stub` connection reads encoded envelopes from the `input_file` and writes encoded envelopes to the `output_file`. diff --git a/packages/fetchai/connections/stub/__init__.py b/packages/fetchai/connections/stub/__init__.py index 8dc0a3126c..df7606df64 100644 --- a/packages/fetchai/connections/stub/__init__.py +++ b/packages/fetchai/connections/stub/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/stub/connection.py b/packages/fetchai/connections/stub/connection.py index 04463a5461..52b0cf713a 100644 --- a/packages/fetchai/connections/stub/connection.py +++ b/packages/fetchai/connections/stub/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -44,7 +44,7 @@ OUTPUT_FILE_KEY = "output_file" SEPARATOR = b"," -PUBLIC_ID = PublicId.from_str("fetchai/stub:0.21.2") +PUBLIC_ID = PublicId.from_str("fetchai/stub:0.21.3") class StubConnection(Connection): diff --git a/packages/fetchai/connections/stub/connection.yaml b/packages/fetchai/connections/stub/connection.yaml index 8c8626c22a..5a9b8eb23d 100644 --- a/packages/fetchai/connections/stub/connection.yaml +++ b/packages/fetchai/connections/stub/connection.yaml @@ -1,15 +1,15 @@ name: stub author: fetchai -version: 0.21.2 +version: 0.21.3 type: connection description: The stub connection implements a connection stub which reads/writes messages from/to file. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmdgS2TuTmQaqTfKMzWb8RPRnTLbwdmqGZ8j8MA3BHyo3J - __init__.py: QmYVgGtC1nR4biS6G5Gi2KoNGceLEfLiccMsj9FNXgo3yi - connection.py: QmSS4udAiXSP2oTnR3WkE4tXT5fVkffArXWkLRVmfnEsJW + README.md: QmVtTqPDAvnMjj2W97E1u84NDLREZZ1Qcp8csVGRi8TjHL + __init__.py: QmU3CUkFsuMuBuFtcrCkUpt7ydGXRfM5PtBmamTk3yP2uP + connection.py: Qmb379EQWBCrqXw9PiTpsbeRtzPyYXiwDVXKJLWwYR2wXN fingerprint_ignore_patterns: [] connections: [] protocols: [] diff --git a/packages/fetchai/connections/tcp/README.md b/packages/fetchai/connections/tcp/README.md index 0305983142..7f70a4e996 100644 --- a/packages/fetchai/connections/tcp/README.md +++ b/packages/fetchai/connections/tcp/README.md @@ -4,4 +4,4 @@ A simple TCP client/server connection to use the TCP protocol for sending and re ## Usage -Add the connection to your AEA project: `aea add connection fetchai/tcp:0.17.2`. +Add the connection to your AEA project: `aea add connection fetchai/tcp:0.17.3`. diff --git a/packages/fetchai/connections/tcp/__init__.py b/packages/fetchai/connections/tcp/__init__.py index 23c9cb012b..7d7e3b87ae 100644 --- a/packages/fetchai/connections/tcp/__init__.py +++ b/packages/fetchai/connections/tcp/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/tcp/base.py b/packages/fetchai/connections/tcp/base.py index 0a12a21deb..14c66b4152 100644 --- a/packages/fetchai/connections/tcp/base.py +++ b/packages/fetchai/connections/tcp/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -31,7 +31,7 @@ _default_logger = logging.getLogger("aea.packages.fetchai.connections.tcp") -PUBLIC_ID = PublicId.from_str("fetchai/tcp:0.17.2") +PUBLIC_ID = PublicId.from_str("fetchai/tcp:0.17.3") class TCPConnection(Connection, ABC): diff --git a/packages/fetchai/connections/tcp/connection.py b/packages/fetchai/connections/tcp/connection.py index 7dbb017029..104830484e 100644 --- a/packages/fetchai/connections/tcp/connection.py +++ b/packages/fetchai/connections/tcp/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/tcp/connection.yaml b/packages/fetchai/connections/tcp/connection.yaml index 4274387645..e03b2bf59d 100644 --- a/packages/fetchai/connections/tcp/connection.yaml +++ b/packages/fetchai/connections/tcp/connection.yaml @@ -1,17 +1,17 @@ name: tcp author: fetchai -version: 0.17.2 +version: 0.17.3 type: connection description: The tcp connection implements a tcp server and client. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmXuJTD1kojmANGDnqYrpXdNN84EMWTcYTQzPviRSaKFSg - __init__.py: QmdksC31ZV5YFXciWX6V69BqSt2dVtnKJkFmMNbfJRsPDN - base.py: QmV5hmzX2UkkeqKUJDLx6YnfLEFGQcsH8Q3DiLjC6wuUwD - connection.py: Qmef4N5o88794SdyH7cqXP7W3SB2EsTpC3kp5vKVNhMc8V - tcp_client.py: QmZGyF2KoUF3DCjEiZUWQwJ6ngMcjFa96ZLwUSSFngnANy - tcp_server.py: QmP3hSyDfFsMDo9AWTPttw2WwHpoDJA82LUvwkn12YYY2j + README.md: Qmc2px6Bbjnf44wPB56Y2gYroNE1gfjEszTntnTWkwsUzX + __init__.py: Qmb3vSwEJwhNEaV899VUrwEkUatVJrxXqbegc1oiXEmAtJ + base.py: QmYLota5rE8UjaJmEY1eUmjakEsv2uUcYLGYGToAwCtX5F + connection.py: QmNcPrHd1Qoe59eTLWLH4Xbg31AZZ6SdCpekJnmhhxG1o8 + tcp_client.py: QmauAiCbvMtp8e5V2s1qZWpeXqPRfXxSEfo11jLhPMFxBc + tcp_server.py: QmSJDqUHCFA9erUjyQVcUUTnHr7FP2CEPQbYijdcUARjdv fingerprint_ignore_patterns: [] connections: [] protocols: [] diff --git a/packages/fetchai/connections/tcp/tcp_client.py b/packages/fetchai/connections/tcp/tcp_client.py index e121d7c34f..ce1eb9c400 100644 --- a/packages/fetchai/connections/tcp/tcp_client.py +++ b/packages/fetchai/connections/tcp/tcp_client.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/tcp/tcp_server.py b/packages/fetchai/connections/tcp/tcp_server.py index 571278e9c7..a2794b115b 100644 --- a/packages/fetchai/connections/tcp/tcp_server.py +++ b/packages/fetchai/connections/tcp/tcp_server.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/webhook/README.md b/packages/fetchai/connections/webhook/README.md index 061a4bb1c0..fbfa5b0795 100644 --- a/packages/fetchai/connections/webhook/README.md +++ b/packages/fetchai/connections/webhook/README.md @@ -4,4 +4,4 @@ An HTTP webhook connection which registers a webhook and waits for incoming requ ## Usage -First, add the connection to your AEA project: `aea add connection fetchai/webhook:0.20.5`. Then ensure the `config` in `connection.yaml` matches your need. In particular, set `webhook_address`, `webhook_port` and `webhook_url_path` appropriately. +First, add the connection to your AEA project: `aea add connection fetchai/webhook:0.20.6`. Then ensure the `config` in `connection.yaml` matches your need. In particular, set `webhook_address`, `webhook_port` and `webhook_url_path` appropriately. diff --git a/packages/fetchai/connections/webhook/__init__.py b/packages/fetchai/connections/webhook/__init__.py index 1a4bae8420..c39206a2c6 100644 --- a/packages/fetchai/connections/webhook/__init__.py +++ b/packages/fetchai/connections/webhook/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/connections/webhook/connection.py b/packages/fetchai/connections/webhook/connection.py index f3617eea99..efab0fdb86 100644 --- a/packages/fetchai/connections/webhook/connection.py +++ b/packages/fetchai/connections/webhook/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -42,7 +42,7 @@ NOT_FOUND = 404 REQUEST_TIMEOUT = 408 SERVER_ERROR = 500 -PUBLIC_ID = PublicId.from_str("fetchai/webhook:0.20.5") +PUBLIC_ID = PublicId.from_str("fetchai/webhook:0.20.6") _default_logger = logging.getLogger("aea.packages.fetchai.connections.webhook") diff --git a/packages/fetchai/connections/webhook/connection.yaml b/packages/fetchai/connections/webhook/connection.yaml index cc962668d6..ff9681a462 100644 --- a/packages/fetchai/connections/webhook/connection.yaml +++ b/packages/fetchai/connections/webhook/connection.yaml @@ -1,18 +1,18 @@ name: webhook author: fetchai -version: 0.20.5 +version: 0.20.6 type: connection description: The webhook connection that wraps a webhook functionality. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmartSF4FQo7QtctAeXAiEL8WnHa3KVcsJVNeavW2t5JXh - __init__.py: QmYVwjb5jTf46hMNVajEPVjDCBfDFHi6uJYob9xfkXdTmW - connection.py: QmSntRBohY6QhPWwRdEe2GDibzZsC57anv2pZoKHRrrXpk + README.md: QmdSsHTfZkHbdjFTM9mJRiNEobjVzDy4YfMxGUQdSPiBtF + __init__.py: QmesEv4nZwUWcqYRFs1BkHp7RW9uuHG8did8FF9Axc7mD8 + connection.py: QmRFthb8nkh9RPA39o9tWUQNDB7YVjKrCd7Z1q3sMQfwMY fingerprint_ignore_patterns: [] connections: [] protocols: -- fetchai/http:1.1.6 +- fetchai/http:1.1.7 class_name: WebhookConnection config: target_skill_id: null @@ -21,7 +21,7 @@ config: webhook_url_path: /some/url/path excluded_protocols: [] restricted_to_protocols: -- fetchai/http:1.1.6 +- fetchai/http:1.1.7 dependencies: aiohttp: version: <3.8,>=3.7.4 diff --git a/packages/fetchai/contracts/__init__.py b/packages/fetchai/contracts/__init__.py index b8b69113d3..c5de366bc9 100644 --- a/packages/fetchai/contracts/__init__.py +++ b/packages/fetchai/contracts/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/contracts/erc1155/README.md b/packages/fetchai/contracts/erc1155/README.md index 86406c500a..2494e10dc8 100644 --- a/packages/fetchai/contracts/erc1155/README.md +++ b/packages/fetchai/contracts/erc1155/README.md @@ -6,21 +6,20 @@ This contract package is used to interface with an ERC1155 smart contract. ## Functions -* `generate_token_ids(token_type, nb_tokens, starting_index)`: Generate token ids. -* `get_create_batch_transaction(token_ids)`: Get the transaction to create a batch of `token_ids` tokens. -* `get_create_single_transaction()`: Get the transaction to create a single `token_id` token. -* `get_mint_batch_transaction(token_ids, mint_quantities)`: Get the transaction to mint `mint_quantities` number of `token_ids` tokens. -* `validate_mint_quantities(token_ids, mint_quantities)`: Validate the mint quantities -* `get_mint_single_transaction(token_id, mint_quantity)`: Get the transaction to mint `mint_quantity` number of a single `token_id` token. -* `get_balance(token_id)`: Get the balance for a specific `token_id`. -* `get_atomic_swap_single_transaction(token_id)`: Get the transaction for a trustless trade between two agents for a single `token_id` token. -* `get_balances(token_ids)`: Get the balances for a batch of specific `token_ids`. -* `get_atomic_swap_batch_transaction(token_ids)`: Get the transaction for a trustless trade between two agents for a batch of `token_ids` tokens. -* `get_hash_single(token_id)`: Get the hash for a trustless trade between two agents for a single `token_id` token. -* `get_hash_batch(token_ids)`: Get the hash for a trustless trade between two agents for a batch of `token_ids` token. -* `generate_trade_nonce()`: Generate a valid trade nonce. - +- `generate_token_ids(token_type, nb_tokens, starting_index)`: Generate token ids. +- `get_create_batch_transaction(token_ids)`: Get the transaction to create a batch of `token_ids` tokens. +- `get_create_single_transaction()`: Get the transaction to create a single `token_id` token. +- `get_mint_batch_transaction(token_ids, mint_quantities)`: Get the transaction to mint `mint_quantities` number of `token_ids` tokens. +- `validate_mint_quantities(token_ids, mint_quantities)`: Validate the mint quantities +- `get_mint_single_transaction(token_id, mint_quantity)`: Get the transaction to mint `mint_quantity` number of a single `token_id` token. +- `get_balance(token_id)`: Get the balance for a specific `token_id`. +- `get_atomic_swap_single_transaction(token_id)`: Get the transaction for a trustless trade between two agents for a single `token_id` token. +- `get_balances(token_ids)`: Get the balances for a batch of specific `token_ids`. +- `get_atomic_swap_batch_transaction(token_ids)`: Get the transaction for a trustless trade between two agents for a batch of `token_ids` tokens. +- `get_hash_single(token_id)`: Get the hash for a trustless trade between two agents for a single `token_id` token. +- `get_hash_batch(token_ids)`: Get the hash for a trustless trade between two agents for a batch of `token_ids` token. +- `generate_trade_nonce()`: Generate a valid trade nonce. ## Links -* ERC1155 Standard +- ERC1155 Standard diff --git a/packages/fetchai/contracts/erc1155/__init__.py b/packages/fetchai/contracts/erc1155/__init__.py index 565ae274ed..4aaabfdf2e 100644 --- a/packages/fetchai/contracts/erc1155/__init__.py +++ b/packages/fetchai/contracts/erc1155/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/contracts/erc1155/contract.py b/packages/fetchai/contracts/erc1155/contract.py index e6dcec7273..9a0793457b 100644 --- a/packages/fetchai/contracts/erc1155/contract.py +++ b/packages/fetchai/contracts/erc1155/contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -37,7 +37,7 @@ _default_logger = logging.getLogger("aea.packages.fetchai.contracts.erc1155.contract") MAX_UINT_256 = 2 ^ 256 - 1 -PUBLIC_ID = PublicId.from_str("fetchai/erc1155:0.23.2") +PUBLIC_ID = PublicId.from_str("fetchai/erc1155:0.23.3") DEFAUT_ETH_ATOMIC_SWAP_GAS_LIMIT = 2818111 DEFAUT_COSMOS_ATOMIC_SWAP_GAS_LIMIT = 1500000 DEFAUT_ETH_SINGLE_TASK_GAS_LIMIT = 300000 diff --git a/packages/fetchai/contracts/erc1155/contract.yaml b/packages/fetchai/contracts/erc1155/contract.yaml index 58262422fe..71fe728166 100644 --- a/packages/fetchai/contracts/erc1155/contract.yaml +++ b/packages/fetchai/contracts/erc1155/contract.yaml @@ -1,17 +1,17 @@ name: erc1155 author: fetchai -version: 0.23.2 +version: 0.23.3 type: contract description: The erc1155 contract implements an ERC1155 contract package. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmbM3Jrh5fFuRR3rfyF3FxiriwGGJ2Q6Bob7LrVQWcHscu - __init__.py: QmP9hBKjzHDrPYepMa4KdNM1wiPv5nmzNXFrDdMQC1b9Lk + README.md: QmVKKf8Uyub6iUQytLSKVJBrFW9h6ALtHY4c8XF7pihuhg + __init__.py: QmTDUtfiUxkNFz3yemKkghfwsC7wYcyVJ9zzs99PXrrrVf build/Migrations.json: QmfFYYWoq1L1Ni6YPBWWoRPvCZKBLZ7qzN3UDX537mCeuE build/erc1155.json: Qma5n7au2NDCg1nLwYfYnmFNwWChFuXtu65w5DV7wAZRvw build/erc1155.wasm: QmVWAjvDT1qQFyZ8GxVkCm4gzR4KgE93BM5KrqfbDtwp2v - contract.py: QmNotLooyTx4fCFD1S7RcfGjiyMu7D8qEz5GfdmhVc9D8J + contract.py: QmR4Etcu8w7KkyTmSrj6udFCWpFYarDKNRc9jR6NxG7TEc contracts/Migrations.sol: QmbW34mYrj3uLteyHf3S46pnp9bnwovtCXHbdBHfzMkSZx contracts/erc1155.vy: QmXwob8G1uX7fDvtuuKW139LALWtQmGw2vvaTRBVAWRxTx migrations/1_initial_migration.js: QmcxaWKQ2yPkQBmnpXmcuxPZQUMuUudmPmX3We8Z9vtAf7 diff --git a/packages/fetchai/contracts/fet_erc20/README.md b/packages/fetchai/contracts/fet_erc20/README.md index dc9494a750..6145b7104d 100644 --- a/packages/fetchai/contracts/fet_erc20/README.md +++ b/packages/fetchai/contracts/fet_erc20/README.md @@ -6,5 +6,5 @@ This contract package is used to interface with a Fetch ERC20 contract. ## Functions -* approve(spender, amount): approve address `spender` to transfer up to `amount` tokens on behalf of sender -* transfer(receiver, amount): transfer `amount` tokens from sender to receiver \ No newline at end of file +- approve(spender, amount): approve address `spender` to transfer up to `amount` tokens on behalf of sender +- transfer(receiver, amount): transfer `amount` tokens from sender to receiver diff --git a/packages/fetchai/contracts/fet_erc20/__init__.py b/packages/fetchai/contracts/fet_erc20/__init__.py index c64877bbeb..1aac5b7db9 100644 --- a/packages/fetchai/contracts/fet_erc20/__init__.py +++ b/packages/fetchai/contracts/fet_erc20/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/contracts/fet_erc20/contract.py b/packages/fetchai/contracts/fet_erc20/contract.py index 827b9cfe98..4e7b71a93f 100644 --- a/packages/fetchai/contracts/fet_erc20/contract.py +++ b/packages/fetchai/contracts/fet_erc20/contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -31,7 +31,7 @@ _default_logger = logging.getLogger("aea.packages.fetchai.contracts.fet_erc20.contract") -PUBLIC_ID = PublicId.from_str("fetchai/fet_erc20:0.9.1") +PUBLIC_ID = PublicId.from_str("fetchai/fet_erc20:0.9.2") class FetERC20(Contract): diff --git a/packages/fetchai/contracts/fet_erc20/contract.yaml b/packages/fetchai/contracts/fet_erc20/contract.yaml index 722c8b85cc..9382dd3eaf 100644 --- a/packages/fetchai/contracts/fet_erc20/contract.yaml +++ b/packages/fetchai/contracts/fet_erc20/contract.yaml @@ -1,15 +1,15 @@ name: fet_erc20 author: fetchai -version: 0.9.1 +version: 0.9.2 type: contract description: The fet_erc20 contract contains a mock Fetch ERC20 contract license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmdksAfBj3gVPH8zmzpHjjpXsf1gtAY6z6gjrfYfiicLrr - __init__.py: Qmd8rqKQoZBKaFHCPB9xT2KMZa4nW8pSJUKjTrXvEnoTLG + README.md: QmWVwuKSyna278svBZ18tdxHtVfhHuTV6pZ79UH5gmaNes + __init__.py: QmRCPaWpwzAgESvZPpgyNQwSHAfDcU9rnEH2PauuLgfVor build/FetERC20Mock.json: QmPKt6BUTUotWS7mtdHLxfg7dEw3cATzNojNBiJ1nifwF9 - contract.py: QmSqtsaLgakC1V9ZAJy3iTtWLheXgyJ6FAPNaSBX7JjRFF + contract.py: QmZBS2cDYWHQVdBogFRpCPUjqQjXCDbkz5mzP1XprLrYAv fingerprint_ignore_patterns: [] class_name: FetERC20 contract_interface_paths: diff --git a/packages/fetchai/contracts/oracle/README.md b/packages/fetchai/contracts/oracle/README.md index 6ebc89d1f8..7b933fae38 100644 --- a/packages/fetchai/contracts/oracle/README.md +++ b/packages/fetchai/contracts/oracle/README.md @@ -6,5 +6,5 @@ This contract package is used to interface with a Fetch Oracle contract, which m ## Functions -* `grantRole(oracle_role, oracle_address)`: grant oracle role to address `oracle_address` -* `updateOracleValue(value, decimals, txExpirationBlock)`: update oracle contract value to `value` with `decimals` decimal places, to expire at block `txExpirationBlock` \ No newline at end of file +- `grantRole(oracle_role, oracle_address)`: grant oracle role to address `oracle_address` +- `updateOracleValue(value, decimals, txExpirationBlock)`: update oracle contract value to `value` with `decimals` decimal places, to expire at block `txExpirationBlock` diff --git a/packages/fetchai/contracts/oracle/__init__.py b/packages/fetchai/contracts/oracle/__init__.py index 102440695d..795de9b643 100644 --- a/packages/fetchai/contracts/oracle/__init__.py +++ b/packages/fetchai/contracts/oracle/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/contracts/oracle/contract.py b/packages/fetchai/contracts/oracle/contract.py index 08a7dc3a5c..003a463962 100644 --- a/packages/fetchai/contracts/oracle/contract.py +++ b/packages/fetchai/contracts/oracle/contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -31,7 +31,7 @@ from aea.crypto.base import LedgerApi -PUBLIC_ID = PublicId.from_str("fetchai/oracle:0.12.2") +PUBLIC_ID = PublicId.from_str("fetchai/oracle:0.12.3") def keccak256(input_: bytes) -> bytes: diff --git a/packages/fetchai/contracts/oracle/contract.yaml b/packages/fetchai/contracts/oracle/contract.yaml index f62a07fe4e..93a30771b4 100644 --- a/packages/fetchai/contracts/oracle/contract.yaml +++ b/packages/fetchai/contracts/oracle/contract.yaml @@ -1,16 +1,16 @@ name: oracle author: fetchai -version: 0.12.2 +version: 0.12.3 type: contract description: Fetch oracle contract license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmWgKLF6Fe4tESTdhStxYJrEVKP2xSthd2fcMm2LSfkygL - __init__.py: QmZ3tqWJFLxkJapkC8T2Wd2Jos1CPd5LnrycCs2bGPyLKb + README.md: QmQvXSNH6CN9uNqF8bjuCiv7ThQ5D7SCEZvNgKw88uYTdT + __init__.py: QmYWrZY2q18XGiS8EDki97v3Gi9KHLi1YhC7e7cpbkEXU2 build/FetchOracle.json: QmfEMai1yxPtWoshFahBk2EyVHd9Mo8pSp1SAE83rRvQgH build/oracle.wasm: QmPkM6EDcizaV39AhqynLSu7bFpy27Kda27r1bJ61W73AA - contract.py: QmYcqhU1y2ZTEV5k2Ez88pAjoVKzAJ6iPxXjDDKX1sq41V + contract.py: QmUdjMGUHvbvQBXEC4zTzg5525pt89VATTQuq1hunJJjE3 contracts/FetchOracle.sol: QmadnUCtsVobBGMxiWAkqMptC9acSMBGj5x4Z4V2UhnFx8 fingerprint_ignore_patterns: [] class_name: FetchOracleContract diff --git a/packages/fetchai/contracts/oracle_client/README.md b/packages/fetchai/contracts/oracle_client/README.md index 4bf6d36919..3d5f7e0cd7 100644 --- a/packages/fetchai/contracts/oracle_client/README.md +++ b/packages/fetchai/contracts/oracle_client/README.md @@ -6,4 +6,4 @@ This contract package is used to interface with a Fetch Oracle Client contract, ## Functions -* `queryOracleValue()`: call contract method that requests oracle value from associated oracle contract \ No newline at end of file +- `queryOracleValue()`: call contract method that requests oracle value from associated oracle contract diff --git a/packages/fetchai/contracts/oracle_client/__init__.py b/packages/fetchai/contracts/oracle_client/__init__.py index 102440695d..795de9b643 100644 --- a/packages/fetchai/contracts/oracle_client/__init__.py +++ b/packages/fetchai/contracts/oracle_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/contracts/oracle_client/contract.py b/packages/fetchai/contracts/oracle_client/contract.py index a5bf117146..39e7951752 100644 --- a/packages/fetchai/contracts/oracle_client/contract.py +++ b/packages/fetchai/contracts/oracle_client/contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -31,7 +31,7 @@ from aea.crypto.base import LedgerApi -PUBLIC_ID = PublicId.from_str("fetchai/oracle_client:0.11.2") +PUBLIC_ID = PublicId.from_str("fetchai/oracle_client:0.11.3") _default_logger = logging.getLogger( "aea.packages.fetchai.contracts.oracle_client.contract" diff --git a/packages/fetchai/contracts/oracle_client/contract.yaml b/packages/fetchai/contracts/oracle_client/contract.yaml index 7ddf9d3807..ffbb6a92ba 100644 --- a/packages/fetchai/contracts/oracle_client/contract.yaml +++ b/packages/fetchai/contracts/oracle_client/contract.yaml @@ -1,16 +1,16 @@ name: oracle_client author: fetchai -version: 0.11.2 +version: 0.11.3 type: contract description: Fetch oracle client contract license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmUBEziYn29b61higYFNsSxtnKcSNq7CRFpsQ68WjmTCcN - __init__.py: QmZ3tqWJFLxkJapkC8T2Wd2Jos1CPd5LnrycCs2bGPyLKb + README.md: Qmasz3mr6zrBNWULfiMeeMC9py561evkcwsCbkjEZnwto5 + __init__.py: QmYWrZY2q18XGiS8EDki97v3Gi9KHLi1YhC7e7cpbkEXU2 build/FetchOracleTestClient.json: QmbqwQiYs8Tb2DKB1BDiigqmXxVt1BmfM5RVXHwkvysdqf build/oracle_client.wasm: QmXE7H9JqjJFNEzjUiMv5Sv6NyaMqB4eYDwSVym66L52xU - contract.py: Qmb4MB4d9p5XP3tKe4sSqreryBj14ze8DmFH9g5QBvm2Gp + contract.py: QmfHnZjmgtAmzJCVVWbePYy6D2brchHt2iCQX3E2rPsG86 contracts/FetchOracleTestClient.sol: QmWpUJ4aBrNreiyuXe6EgfSfE7T7hWz3xHDdT7fFye3WCG fingerprint_ignore_patterns: [] class_name: FetchOracleClientContract diff --git a/packages/fetchai/contracts/staking_erc20/README.md b/packages/fetchai/contracts/staking_erc20/README.md index 701b64c72a..4f41140334 100644 --- a/packages/fetchai/contracts/staking_erc20/README.md +++ b/packages/fetchai/contracts/staking_erc20/README.md @@ -6,4 +6,4 @@ This contract package is used to interface with a Fetch staking ERC20 contract. ## Functions -* `get_stake(address)`: Get the balance for a specific `address` \ No newline at end of file +- `get_stake(address)`: Get the balance for a specific `address` diff --git a/packages/fetchai/contracts/staking_erc20/__init__.py b/packages/fetchai/contracts/staking_erc20/__init__.py index 1c0f7def7d..1c26c274e9 100644 --- a/packages/fetchai/contracts/staking_erc20/__init__.py +++ b/packages/fetchai/contracts/staking_erc20/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/contracts/staking_erc20/contract.py b/packages/fetchai/contracts/staking_erc20/contract.py index 90ba9920d1..5589d8df85 100644 --- a/packages/fetchai/contracts/staking_erc20/contract.py +++ b/packages/fetchai/contracts/staking_erc20/contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -33,7 +33,7 @@ "aea.packages.fetchai.contracts.staking_erc20.contract" ) -PUBLIC_ID = PublicId.from_str("fetchai/staking_erc20:0.10.2") +PUBLIC_ID = PublicId.from_str("fetchai/staking_erc20:0.10.3") class StakingERC20(Contract): diff --git a/packages/fetchai/contracts/staking_erc20/contract.yaml b/packages/fetchai/contracts/staking_erc20/contract.yaml index a4f1357935..9aeaea6ccc 100644 --- a/packages/fetchai/contracts/staking_erc20/contract.yaml +++ b/packages/fetchai/contracts/staking_erc20/contract.yaml @@ -1,17 +1,17 @@ name: staking_erc20 author: fetchai -version: 0.10.2 +version: 0.10.3 type: contract description: The staking_erc20 contract contains the main staking contract of Fetch.ai for Ethereum mainnet. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmR5xGpZ8gZkUyWxz6EBkVpsYGuULcN13yNEALoxmDTx6t - __init__.py: QmPfhJLDQWX5duox6j89xmEeBmh5c5uGixZSEJVLRjrKgG + README.md: QmXcVNZrAEX5Ja2fPKBYDVV77s5JKXtyGP19pgZfJNerrw + __init__.py: QmdKarQHWsEyedE8E3X6my3zLZkdTGGrbmyJaidti3Sqyx build/Migrations.json: QmfFYYWoq1L1Ni6YPBWWoRPvCZKBLZ7qzN3UDX537mCeuE build/staking_erc20.json: QmVf2BuDDJPoCHDwEQKHdgfph4CbTFpqJJvcDLaM9tyoQq - contract.py: QmTXXZkThiJP5XTH2Mb8EpdJzZinUEd8n9pQ2EUjvNmzGG + contract.py: QmWgc5hyfnxZ5R5YTo6HZpTsqBuL3WuhJzQdkjqgFnZNyh fingerprint_ignore_patterns: [] class_name: StakingERC20 contract_interface_paths: diff --git a/packages/fetchai/protocols/__init__.py b/packages/fetchai/protocols/__init__.py index 51568ef2d1..b91b35876e 100644 --- a/packages/fetchai/protocols/__init__.py +++ b/packages/fetchai/protocols/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/acn/README.md b/packages/fetchai/protocols/acn/README.md index 10fbe431fb..26e5359236 100644 --- a/packages/fetchai/protocols/acn/README.md +++ b/packages/fetchai/protocols/acn/README.md @@ -10,7 +10,7 @@ This is a protocol for ACN (agent communication network) envelope delivery. --- name: acn author: fetchai -version: 1.1.6 +version: 1.1.7 description: The protocol used for envelope delivery on the ACN. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/fetchai/protocols/acn/__init__.py b/packages/fetchai/protocols/acn/__init__.py index 27e01dd960..c33f30bef1 100644 --- a/packages/fetchai/protocols/acn/__init__.py +++ b/packages/fetchai/protocols/acn/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the acn protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.acn.message import AcnMessage diff --git a/packages/fetchai/protocols/acn/custom_types.py b/packages/fetchai/protocols/acn/custom_types.py index 08e89f73aa..4acbe38936 100644 --- a/packages/fetchai/protocols/acn/custom_types.py +++ b/packages/fetchai/protocols/acn/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/acn/dialogues.py b/packages/fetchai/protocols/acn/dialogues.py index 1f95584310..c22e0a0967 100644 --- a/packages/fetchai/protocols/acn/dialogues.py +++ b/packages/fetchai/protocols/acn/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/acn/message.py b/packages/fetchai/protocols/acn/message.py index fc61ac785b..4aa9ce0002 100644 --- a/packages/fetchai/protocols/acn/message.py +++ b/packages/fetchai/protocols/acn/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,7 +39,7 @@ class AcnMessage(Message): """The protocol used for envelope delivery on the ACN.""" - protocol_id = PublicId.from_str("fetchai/acn:1.1.6") + protocol_id = PublicId.from_str("fetchai/acn:1.1.7") protocol_specification_id = PublicId.from_str("aea/acn:1.0.0") AgentRecord = CustomAgentRecord diff --git a/packages/fetchai/protocols/acn/protocol.yaml b/packages/fetchai/protocols/acn/protocol.yaml index c5f09f05fc..26b8b69f93 100644 --- a/packages/fetchai/protocols/acn/protocol.yaml +++ b/packages/fetchai/protocols/acn/protocol.yaml @@ -1,20 +1,20 @@ name: acn author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: aea/acn:1.0.0 type: protocol description: The protocol used for envelope delivery on the ACN. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmUmComDjx71PqQuEyEsQEH3i6hnFRSAED7Aws74nCL5Gi - __init__.py: Qmcnm9iGbqCFSiCCd1koHQWaNJQn7hLGV33w6fB8jQenDb + README.md: QmfMfnMxXNv96uBwMk9EcFE9vKTLwNn7afLTdMNKUBLgX7 + __init__.py: QmXYL7CpbddU18HUG1Jf334np9yiWjYDsQYg7qBQjBrL9o acn.proto: QmVWvXETUNe7QZTvBgzwpofNP3suFthwyxbTVUqSx8mdnE acn_pb2.py: Qmf3HYmJtGwugpCuWSmJEDVHwZcnCF6BWmeEouUSpBRs45 - custom_types.py: QmWG7yrphMBi1pxHW6ypM5oBPWCYqE1Aj5BfeSsgqb7BNf - dialogues.py: QmcxdAUTH1zyu2S8aWbmAQ8ba62Yk4wB4qshNs8MWcMCpj - message.py: Qmf1F6A2bK1k4ChPE94eSmmnUEtYpgud4ULkEnTxfH2VA5 - serialization.py: QmWaMfQEJCMCRjwxCYa4Zd8VFESMZSRgAnBa3XcRFFpKo9 + custom_types.py: QmQNMAGx2JGSM3CKXCos2oWpzSoCa7vsrmQc57j5QY8NFz + dialogues.py: QmUbvA3jgzdGMseRtPyDoMApVrVZ5h4pspt5UY77EM9kR9 + message.py: QmdrjeM3ShmDKLsB46TbDzigsW7bPZCdLKEdtxUiZenkn9 + serialization.py: QmQ8QfHCvKNg2D3Fcb7u4tJmRw4gce16YUsbwvGfBMEk38 fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/acn/serialization.py b/packages/fetchai/protocols/acn/serialization.py index 3d8b8633c8..3eeada04d5 100644 --- a/packages/fetchai/protocols/acn/serialization.py +++ b/packages/fetchai/protocols/acn/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/aggregation/README.md b/packages/fetchai/protocols/aggregation/README.md index 08e53f7584..7b950f5fe5 100644 --- a/packages/fetchai/protocols/aggregation/README.md +++ b/packages/fetchai/protocols/aggregation/README.md @@ -10,11 +10,11 @@ This is an aggregation protocol for aggregating observations. --- name: aggregation author: fetchai -version: 0.2.6 +version: 0.2.7 description: A protocol for agents to aggregate individual observations license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' -protocol_specification_id: fetchai/aggregation:0.2.6 +protocol_specification_id: fetchai/aggregation:0.2.7 speech_acts: observation: value: pt:int diff --git a/packages/fetchai/protocols/aggregation/__init__.py b/packages/fetchai/protocols/aggregation/__init__.py index 5b2c6e7b98..49a254d7e8 100644 --- a/packages/fetchai/protocols/aggregation/__init__.py +++ b/packages/fetchai/protocols/aggregation/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the aggregation protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.aggregation.message import AggregationMessage diff --git a/packages/fetchai/protocols/aggregation/aggregation.proto b/packages/fetchai/protocols/aggregation/aggregation.proto index ebccc56922..a43f3c7db5 100644 --- a/packages/fetchai/protocols/aggregation/aggregation.proto +++ b/packages/fetchai/protocols/aggregation/aggregation.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package aea.fetchai.aggregation.v0_2_6; +package aea.fetchai.aggregation.v0_2_7; message AggregationMessage{ diff --git a/packages/fetchai/protocols/aggregation/aggregation_pb2.py b/packages/fetchai/protocols/aggregation/aggregation_pb2.py index fecf739d86..e46ed141e6 100644 --- a/packages/fetchai/protocols/aggregation/aggregation_pb2.py +++ b/packages/fetchai/protocols/aggregation/aggregation_pb2.py @@ -14,7 +14,7 @@ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x11\x61ggregation.proto\x12\x1e\x61\x65\x61.fetchai.aggregation.v0_2_6"\xaa\x03\n\x12\x41ggregationMessage\x12\x62\n\x0b\x61ggregation\x18\x05 \x01(\x0b\x32K.aea.fetchai.aggregation.v0_2_6.AggregationMessage.Aggregation_PerformativeH\x00\x12\x62\n\x0bobservation\x18\x06 \x01(\x0b\x32K.aea.fetchai.aggregation.v0_2_6.AggregationMessage.Observation_PerformativeH\x00\x1aZ\n\x18Observation_Performative\x12\r\n\x05value\x18\x01 \x01(\x03\x12\x0c\n\x04time\x18\x02 \x01(\t\x12\x0e\n\x06source\x18\x03 \x01(\t\x12\x11\n\tsignature\x18\x04 \x01(\t\x1a`\n\x18\x41ggregation_Performative\x12\r\n\x05value\x18\x01 \x01(\x03\x12\x0c\n\x04time\x18\x02 \x01(\t\x12\x14\n\x0c\x63ontributors\x18\x03 \x03(\t\x12\x11\n\tsignature\x18\x04 \x01(\tB\x0e\n\x0cperformativeb\x06proto3' + b'\n\x11\x61ggregation.proto\x12\x1e\x61\x65\x61.fetchai.aggregation.v0_2_7"\xaa\x03\n\x12\x41ggregationMessage\x12\x62\n\x0b\x61ggregation\x18\x05 \x01(\x0b\x32K.aea.fetchai.aggregation.v0_2_7.AggregationMessage.Aggregation_PerformativeH\x00\x12\x62\n\x0bobservation\x18\x06 \x01(\x0b\x32K.aea.fetchai.aggregation.v0_2_7.AggregationMessage.Observation_PerformativeH\x00\x1aZ\n\x18Observation_Performative\x12\r\n\x05value\x18\x01 \x01(\x03\x12\x0c\n\x04time\x18\x02 \x01(\t\x12\x0e\n\x06source\x18\x03 \x01(\t\x12\x11\n\tsignature\x18\x04 \x01(\t\x1a`\n\x18\x41ggregation_Performative\x12\r\n\x05value\x18\x01 \x01(\x03\x12\x0c\n\x04time\x18\x02 \x01(\t\x12\x14\n\x0c\x63ontributors\x18\x03 \x03(\t\x12\x11\n\tsignature\x18\x04 \x01(\tB\x0e\n\x0cperformativeb\x06proto3' ) @@ -35,7 +35,7 @@ { "DESCRIPTOR": _AGGREGATIONMESSAGE_OBSERVATION_PERFORMATIVE, "__module__": "aggregation_pb2" - # @@protoc_insertion_point(class_scope:aea.fetchai.aggregation.v0_2_6.AggregationMessage.Observation_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.aggregation.v0_2_7.AggregationMessage.Observation_Performative) }, ), "Aggregation_Performative": _reflection.GeneratedProtocolMessageType( @@ -44,12 +44,12 @@ { "DESCRIPTOR": _AGGREGATIONMESSAGE_AGGREGATION_PERFORMATIVE, "__module__": "aggregation_pb2" - # @@protoc_insertion_point(class_scope:aea.fetchai.aggregation.v0_2_6.AggregationMessage.Aggregation_Performative) + # @@protoc_insertion_point(class_scope:aea.fetchai.aggregation.v0_2_7.AggregationMessage.Aggregation_Performative) }, ), "DESCRIPTOR": _AGGREGATIONMESSAGE, "__module__": "aggregation_pb2" - # @@protoc_insertion_point(class_scope:aea.fetchai.aggregation.v0_2_6.AggregationMessage) + # @@protoc_insertion_point(class_scope:aea.fetchai.aggregation.v0_2_7.AggregationMessage) }, ) _sym_db.RegisterMessage(AggregationMessage) diff --git a/packages/fetchai/protocols/aggregation/dialogues.py b/packages/fetchai/protocols/aggregation/dialogues.py index 5af653c1cb..86f61eaca3 100644 --- a/packages/fetchai/protocols/aggregation/dialogues.py +++ b/packages/fetchai/protocols/aggregation/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/aggregation/message.py b/packages/fetchai/protocols/aggregation/message.py index 6ad5a4e166..6815f61c99 100644 --- a/packages/fetchai/protocols/aggregation/message.py +++ b/packages/fetchai/protocols/aggregation/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -38,8 +38,8 @@ class AggregationMessage(Message): """A protocol for agents to aggregate individual observations""" - protocol_id = PublicId.from_str("fetchai/aggregation:0.2.6") - protocol_specification_id = PublicId.from_str("fetchai/aggregation:0.2.6") + protocol_id = PublicId.from_str("fetchai/aggregation:0.2.7") + protocol_specification_id = PublicId.from_str("fetchai/aggregation:0.2.7") class Performative(Message.Performative): """Performatives for the aggregation protocol.""" diff --git a/packages/fetchai/protocols/aggregation/protocol.yaml b/packages/fetchai/protocols/aggregation/protocol.yaml index 1b60edf5a7..6f927167f6 100644 --- a/packages/fetchai/protocols/aggregation/protocol.yaml +++ b/packages/fetchai/protocols/aggregation/protocol.yaml @@ -1,19 +1,19 @@ name: aggregation author: fetchai -version: 0.2.6 -protocol_specification_id: fetchai/aggregation:0.2.6 +version: 0.2.7 +protocol_specification_id: fetchai/aggregation:0.2.7 type: protocol description: A protocol for agents to aggregate individual observations license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmVDee1kxBEHoqE1D2xGjS68co7PPvDw6VSgZN2Tdgyb4G - __init__.py: QmW2jcqMSHZCMHKkXY7XsBBqHhZGhP6fxHMbc75PJBdwkS - aggregation.proto: QmdWnz2LWAcTZXy3cFpGfy3cQwdgSWZPB3Eb72F6btyJk7 - aggregation_pb2.py: QmZSkzkicZvbkDZh2GnHdELNDhu7Ck3X8tKzAUzbtLoUa3 - dialogues.py: QmZhvgjNtjwiSy6bHKaw4PG8jgY6pLfCFivbcr5xQ8JJN8 - message.py: QmdpgQRB9aoYAac6v4DrVBBReNKqdu7BZ1dNZpEj3WMKsS - serialization.py: Qmdka2M9GFQMnrEYFY3t3mJh4KFPHkYqC8ecQkroM8rqzS + README.md: Qmbab8fKDdNxLUP1i4Mszem1Z5sTknSkgEmMqMftGySPw2 + __init__.py: QmPLeQvFJqhZ39qb2TchPVMUNqh7Y8qb11MRdJXVr34Bqw + aggregation.proto: QmNpnRdmU4sMxxCkuJj1fz3QkEkwAmoP4vHk5ZdeTffDup + aggregation_pb2.py: QmVyjn8ySVvya7oacMCB9ibhhHESud414YSbEag7Fat6Hw + dialogues.py: QmbvTvfkrmWn7WoNg5AHjSQfC2ofv1Z7MJPXjk67YRq9A5 + message.py: QmZXRaozSHTD1ABstrjA2xxb46u6iEzRHiB56X4DpF61j6 + serialization.py: QmbHocoXnB9h6HPwBoYZ1N2ULF4FAuuZKs6uHF7jHw85eM fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/aggregation/serialization.py b/packages/fetchai/protocols/aggregation/serialization.py index 5128664f57..649d43299f 100644 --- a/packages/fetchai/protocols/aggregation/serialization.py +++ b/packages/fetchai/protocols/aggregation/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/contract_api/README.md b/packages/fetchai/protocols/contract_api/README.md index f4bd22618f..9ba5ede292 100644 --- a/packages/fetchai/protocols/contract_api/README.md +++ b/packages/fetchai/protocols/contract_api/README.md @@ -10,7 +10,7 @@ This is a protocol for contract APIs' requests and responses. --- name: contract_api author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for contract APIs requests and responses. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/fetchai/protocols/contract_api/__init__.py b/packages/fetchai/protocols/contract_api/__init__.py index 7bfa38edc4..64216607e4 100644 --- a/packages/fetchai/protocols/contract_api/__init__.py +++ b/packages/fetchai/protocols/contract_api/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the contract_api protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.contract_api.message import ContractApiMessage diff --git a/packages/fetchai/protocols/contract_api/custom_types.py b/packages/fetchai/protocols/contract_api/custom_types.py index 255bd58dcf..3570f50bb9 100644 --- a/packages/fetchai/protocols/contract_api/custom_types.py +++ b/packages/fetchai/protocols/contract_api/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/contract_api/dialogues.py b/packages/fetchai/protocols/contract_api/dialogues.py index cc2735aa39..6914c156c5 100644 --- a/packages/fetchai/protocols/contract_api/dialogues.py +++ b/packages/fetchai/protocols/contract_api/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/contract_api/message.py b/packages/fetchai/protocols/contract_api/message.py index 4a774ee4b5..f933abbd03 100644 --- a/packages/fetchai/protocols/contract_api/message.py +++ b/packages/fetchai/protocols/contract_api/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -47,7 +47,7 @@ class ContractApiMessage(Message): """A protocol for contract APIs requests and responses.""" - protocol_id = PublicId.from_str("fetchai/contract_api:1.1.6") + protocol_id = PublicId.from_str("fetchai/contract_api:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/contract_api:1.0.0") Kwargs = CustomKwargs diff --git a/packages/fetchai/protocols/contract_api/protocol.yaml b/packages/fetchai/protocols/contract_api/protocol.yaml index 22a3548055..e027273d1a 100644 --- a/packages/fetchai/protocols/contract_api/protocol.yaml +++ b/packages/fetchai/protocols/contract_api/protocol.yaml @@ -1,20 +1,20 @@ name: contract_api author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/contract_api:1.0.0 type: protocol description: A protocol for contract APIs requests and responses. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmPNvnN7TFYkdcubqdRbbwqvi6a8jTbCkmM238EqxRP184 - __init__.py: QmP7GbRgmJfbisG2q5EDYuZw2LT66TPjuFFsSxmXCnCyDa + README.md: Qmbbumi4uwtWACodswSRbf6YZkXBgzhByLkY9ZTz846aKQ + __init__.py: QmSU7kcQHDrWyFvCZpLnN2qH5CE29JrWnpTBp9tiSrhCkB contract_api.proto: QmXP6TkLcQcsFWE66Z7ffgNcW3p6xAB63GXh4UsnEbHd9D contract_api_pb2.py: QmXqZFRTtRZeLytmmWKRxExKGua1Be3Ux5Eq1qLabsbe2Y - custom_types.py: QmS4L7eLFo74imdU52rQr7Bav13BGA3CBHXNaY5V7bKdRh - dialogues.py: QmR6S7Lxh4uFQnvCrj42CZvbz5pPpT3RYsMAPmgWUzrocb - message.py: QmVMZgvKnvyEni7saWnYCBWmSJsttqET5Mi6DhwXEAUbz2 - serialization.py: QmWNYhmiL6UTyRr8SLXmTKoXWsNc5REswH1HnJvhsJhb9G + custom_types.py: QmXbRNjRpLvV4qhoGPHndQZfgTC5BMDoUDW8ZP9MrWKCG4 + dialogues.py: QmXCtZ8beuCEXueFoJRHAEP7Y7UHfBhMCFSjtQWmCQGVzP + message.py: QmfQSKdcr5CcpPC9apArdoqgdKcAsFVNnTGBPs4dXLUWka + serialization.py: QmcVXMQWnw76k5iwMnvWnQfCgJBUoTXBpnGDFqnkNRyfhZ fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/contract_api/serialization.py b/packages/fetchai/protocols/contract_api/serialization.py index e327b29524..3e875716a8 100644 --- a/packages/fetchai/protocols/contract_api/serialization.py +++ b/packages/fetchai/protocols/contract_api/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/cosm_trade/README.md b/packages/fetchai/protocols/cosm_trade/README.md index 7a7a5ca0cc..f55d7e7ac8 100644 --- a/packages/fetchai/protocols/cosm_trade/README.md +++ b/packages/fetchai/protocols/cosm_trade/README.md @@ -2,10 +2,9 @@ ## Description -This is a protocol for preparing an atomic swap bilateral transaction for cosmos-based ledgers, including fetchai's. +This is a protocol for preparing an atomic swap bilateral transaction for cosmos-based ledgers, including fetchai's. For two parties A and B to atomically swap tokens on cosmos-based networks, A has to send its public key to B. -Then B constructs the transaction using both his public key and A's, signs the transaction, adds its signature to the list of signatures in the transaction and sends this to A. -After receiving, A signs the transaction, adds its signature to the list of signatures in the transaction and broadcasts it to the network for processing. +Then B constructs the transaction using both his public key and A's, signs the transaction, adds its signature to the list of signatures in the transaction and sends this to A. After receiving, A signs the transaction, adds its signature to the list of signatures in the transaction and broadcasts it to the network for processing. ## Specification @@ -13,7 +12,7 @@ After receiving, A signs the transaction, adds its signature to the list of sign --- name: cosm_trade author: fetchai -version: 0.2.6 +version: 0.2.7 description: A protocol for preparing an atomic swap bilateral transaction for cosmos-based ledgers, including fetchai's. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/fetchai/protocols/cosm_trade/__init__.py b/packages/fetchai/protocols/cosm_trade/__init__.py index aa846a73c0..8113bf1ace 100644 --- a/packages/fetchai/protocols/cosm_trade/__init__.py +++ b/packages/fetchai/protocols/cosm_trade/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the cosm_trade protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.cosm_trade.message import CosmTradeMessage diff --git a/packages/fetchai/protocols/cosm_trade/custom_types.py b/packages/fetchai/protocols/cosm_trade/custom_types.py index 94492af3ab..95b2210ad9 100644 --- a/packages/fetchai/protocols/cosm_trade/custom_types.py +++ b/packages/fetchai/protocols/cosm_trade/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/cosm_trade/dialogues.py b/packages/fetchai/protocols/cosm_trade/dialogues.py index 5d065e8a48..0e7c4c6658 100644 --- a/packages/fetchai/protocols/cosm_trade/dialogues.py +++ b/packages/fetchai/protocols/cosm_trade/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/cosm_trade/message.py b/packages/fetchai/protocols/cosm_trade/message.py index c3abae6e78..9fd2cab304 100644 --- a/packages/fetchai/protocols/cosm_trade/message.py +++ b/packages/fetchai/protocols/cosm_trade/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -40,7 +40,7 @@ class CosmTradeMessage(Message): """A protocol for preparing an atomic swap bilateral transaction for cosmos-based ledgers, including fetchai's.""" - protocol_id = PublicId.from_str("fetchai/cosm_trade:0.2.6") + protocol_id = PublicId.from_str("fetchai/cosm_trade:0.2.7") protocol_specification_id = PublicId.from_str("fetchai/cosm_trade:1.0.0") SignedTransaction = CustomSignedTransaction diff --git a/packages/fetchai/protocols/cosm_trade/protocol.yaml b/packages/fetchai/protocols/cosm_trade/protocol.yaml index cc2ee1fb8e..7027a15f66 100644 --- a/packages/fetchai/protocols/cosm_trade/protocol.yaml +++ b/packages/fetchai/protocols/cosm_trade/protocol.yaml @@ -1,6 +1,6 @@ name: cosm_trade author: fetchai -version: 0.2.6 +version: 0.2.7 protocol_specification_id: fetchai/cosm_trade:1.0.0 type: protocol description: A protocol for preparing an atomic swap bilateral transaction for cosmos-based @@ -8,14 +8,14 @@ description: A protocol for preparing an atomic swap bilateral transaction for c license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmaGRhL44vq5fJnfunNMD9RoxHFHQggUy6Xv2LAmVHL6RJ - __init__.py: QmSkX3VUfjpja5B48M839dGMRVQHfz4egTb5CqWuskPzNt + README.md: QmU2AsQPL4v5qPsPxh17pbNQCFV5qgqbXbsUe5kMJPCyum + __init__.py: QmcBn4zeHdnsdkMKwbiWaKpPKELmzKSrv4aFPPSp3EgUqb cosm_trade.proto: QmWJZbNWJD8Qz1A1ju89wWoxFjMhC7RHn1pkeVPW3s3CPT cosm_trade_pb2.py: Qma3GnRA8g9t6RADbYyagW747CcDmuNUEqahpjHvsroTTx - custom_types.py: QmS4h6s3ZnbzrDrud9ZPfaUesN3CczZHC4LPqFX8VGFPcj - dialogues.py: QmNWYxmPJJEuqyc8NS5zxXMB3w2avNxZwBVdvX1Fms6oDD - message.py: QmUK8s2RBTjQhs2BKbTjC4RKFQUkNjcp3t4dD4eUpGR6LT - serialization.py: QmeF2MbgLAsJ4TnXmsLF6eTfepvzmiQjyS3veYUhmph7bJ + custom_types.py: QmZPHKmNPKwPGQu6cswi7MsfWGUHm8YG1XWowtnxVBstXS + dialogues.py: QmThJHxUPEeiaVqNJz3QgNvJXAVxwxppM5VHK8TSEuPdxk + message.py: QmdbUwDBj5v6DkcvjtHgHz6HPHjZndDTEQH12RwL4eQCR6 + serialization.py: QmT2faXciRfykDBg3kXUvma2wjNgjHZ37nDfxiGD6mMtrB fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/cosm_trade/serialization.py b/packages/fetchai/protocols/cosm_trade/serialization.py index 71764e2456..0a9c87d9a9 100644 --- a/packages/fetchai/protocols/cosm_trade/serialization.py +++ b/packages/fetchai/protocols/cosm_trade/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/default/README.md b/packages/fetchai/protocols/default/README.md index ec7913b98b..a4706b96b1 100644 --- a/packages/fetchai/protocols/default/README.md +++ b/packages/fetchai/protocols/default/README.md @@ -10,7 +10,7 @@ This is a protocol for two agents exchanging any bytes messages. --- name: default author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for exchanging any bytes message. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/fetchai/protocols/default/__init__.py b/packages/fetchai/protocols/default/__init__.py index 28de66a4f1..2ab06c0a03 100644 --- a/packages/fetchai/protocols/default/__init__.py +++ b/packages/fetchai/protocols/default/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the default protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.default.message import DefaultMessage diff --git a/packages/fetchai/protocols/default/custom_types.py b/packages/fetchai/protocols/default/custom_types.py index 364942459b..4849051054 100644 --- a/packages/fetchai/protocols/default/custom_types.py +++ b/packages/fetchai/protocols/default/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/default/dialogues.py b/packages/fetchai/protocols/default/dialogues.py index 995ea281c2..6cec20e3e7 100644 --- a/packages/fetchai/protocols/default/dialogues.py +++ b/packages/fetchai/protocols/default/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/default/message.py b/packages/fetchai/protocols/default/message.py index c720cea7cb..d8ceabe79a 100644 --- a/packages/fetchai/protocols/default/message.py +++ b/packages/fetchai/protocols/default/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -38,7 +38,7 @@ class DefaultMessage(Message): """A protocol for exchanging any bytes message.""" - protocol_id = PublicId.from_str("fetchai/default:1.1.6") + protocol_id = PublicId.from_str("fetchai/default:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/default:1.0.0") ErrorCode = CustomErrorCode diff --git a/packages/fetchai/protocols/default/protocol.yaml b/packages/fetchai/protocols/default/protocol.yaml index 023011d796..b1e3d77f82 100644 --- a/packages/fetchai/protocols/default/protocol.yaml +++ b/packages/fetchai/protocols/default/protocol.yaml @@ -1,20 +1,20 @@ name: default author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/default:1.0.0 type: protocol description: A protocol for exchanging any bytes message. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmWdWp2ZJ9U3H3o231dgQ1Apjki4v4kPSQjTUGKuz9uMj6 - __init__.py: QmWXmRYGvuqru2im5EY9fMLQLJWhkRuURfj5AgTBBT5fWG - custom_types.py: QmSgwoNvSK11m8wjCRQaGsw5srG5b8pWzvjRKwLGAcZ1ho + README.md: Qma4UhkBrAwxD1qdNwiMwTVYYQB7cBHd7UXJQ1SQWYi8Zs + __init__.py: QmQgKC4pQPaoCXwfSkJimbqpyMN1qGUq7RfBAU2591yTap + custom_types.py: QmQUFTE8WVj8V1PyrhuCvmPbTLoTuFWjiK97XJKavDQfyC default.proto: QmWYzTSHVbz7FBS84iKFMhGSXPxay2mss29vY7ufz2BFJ8 default_pb2.py: QmPX9tm18ddM5Q928JLd1HmdUZKp2ssKhCJzhZ53FJmjxM - dialogues.py: QmZhspQD1MV1Cv49DN1uQti8YVjV6sA78v8gD1fobabEUu - message.py: QmfFiyRHTGvYvzQGPFqRpv33nctwJV1DAuUQrVGJjsU1vF - serialization.py: QmbooPDNM5gDKJhXcmJKFkFoiMtR3pJZD2ziojXX3D6Zw4 + dialogues.py: QmPbCt78gFSSPbmBu87R6REMc2gD3JU9UWMkVNF9mP9A7x + message.py: QmRL8PiNCoCMsHmrR4LnbphEtm4oEPR8AAhSgoADHV29D7 + serialization.py: QmepsqanTZV4Wg3Dg9qDtSqwe5AyRS2BUgURndk1h9kjNt fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/default/serialization.py b/packages/fetchai/protocols/default/serialization.py index a1e295d5fd..de130806ef 100644 --- a/packages/fetchai/protocols/default/serialization.py +++ b/packages/fetchai/protocols/default/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/fipa/README.md b/packages/fetchai/protocols/fipa/README.md index 667de2d3a7..c283352a30 100644 --- a/packages/fetchai/protocols/fipa/README.md +++ b/packages/fetchai/protocols/fipa/README.md @@ -10,7 +10,7 @@ This is a protocol for two agents to negotiate over a fixed set of resources. --- name: fipa author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for FIPA ACL. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' @@ -58,4 +58,4 @@ keep_terminal_state_dialogues: true ## Links -* FIPA Foundation +- FIPA Foundation diff --git a/packages/fetchai/protocols/fipa/__init__.py b/packages/fetchai/protocols/fipa/__init__.py index b72cb0a08f..2ac23a7969 100644 --- a/packages/fetchai/protocols/fipa/__init__.py +++ b/packages/fetchai/protocols/fipa/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the fipa protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.fipa.message import FipaMessage diff --git a/packages/fetchai/protocols/fipa/custom_types.py b/packages/fetchai/protocols/fipa/custom_types.py index e5db99a1e0..0954ed7a39 100644 --- a/packages/fetchai/protocols/fipa/custom_types.py +++ b/packages/fetchai/protocols/fipa/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/fipa/dialogues.py b/packages/fetchai/protocols/fipa/dialogues.py index 7627b9c26d..7591bda6a9 100644 --- a/packages/fetchai/protocols/fipa/dialogues.py +++ b/packages/fetchai/protocols/fipa/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/fipa/message.py b/packages/fetchai/protocols/fipa/message.py index 2a7926f0d4..eedf5e7afe 100644 --- a/packages/fetchai/protocols/fipa/message.py +++ b/packages/fetchai/protocols/fipa/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -41,7 +41,7 @@ class FipaMessage(Message): """A protocol for FIPA ACL.""" - protocol_id = PublicId.from_str("fetchai/fipa:1.1.6") + protocol_id = PublicId.from_str("fetchai/fipa:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/fipa:1.0.0") Description = CustomDescription diff --git a/packages/fetchai/protocols/fipa/protocol.yaml b/packages/fetchai/protocols/fipa/protocol.yaml index 68d01b2ed4..eac15992ee 100644 --- a/packages/fetchai/protocols/fipa/protocol.yaml +++ b/packages/fetchai/protocols/fipa/protocol.yaml @@ -1,20 +1,20 @@ name: fipa author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/fipa:1.0.0 type: protocol description: A protocol for FIPA ACL. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmYkcFE9JsK9imfMe84om7UbU8qi8nDtCoxFWBEkqgAKpQ - __init__.py: QmYuEPAeBxGoQ5CkX5ZrmBeaUZu83unAcqDuDv5M6kNys6 - custom_types.py: QmaYgpGGoEiVRyjaSK7JCUj8bveA7azyCQeK2E4R7e86ZG - dialogues.py: QmVLKtuTwgCLK9jMWvHdJEnprd5nkdM4GAs5mowNkxL7r4 + README.md: Qmb3nuPdF326cWYMVYJjqxdpGMkdR4ENFdCXbMEv9t7Doj + __init__.py: QmcKvopHYdkJwfnAYmgtPbUZZvcnP3bffhKjFWMXJFwno9 + custom_types.py: QmNibpgi18PbM4drwbYxw18GwMkBAToh21EhKimnF3j7Sg + dialogues.py: QmS2o9G3AyW7n7R6Ec9n3KSSntMx5MrGARD3Ya67FDAa2s fipa.proto: QmS7aXZ2JoG3oyMHWiPYoP9RJ7iChsoTC9KQLsj6vi3ejR fipa_pb2.py: QmT6CxDiwyz3ucsNxZSxtNZXE9NThshV68zvXEYtiWjEUP - message.py: QmPDbDh494b1jdUhp7Wv11mkDDVwKTNwAPKJg8mwG5pVEh - serialization.py: QmYyKaeVdQMt1Tq3RKX7VQY52yAF5eo2neitZB1dyVSDmn + message.py: QmZKYP3yu7KRRxJsip9FKbuuW91FUwnDuVsFTaxqeuccuT + serialization.py: QmUHydPjLVt5B4JAoN3XccNieB3EFiUoMzvs2N9UQmZXJZ fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/fipa/serialization.py b/packages/fetchai/protocols/fipa/serialization.py index eaaaac1ec0..aefbba1052 100644 --- a/packages/fetchai/protocols/fipa/serialization.py +++ b/packages/fetchai/protocols/fipa/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/gym/README.md b/packages/fetchai/protocols/gym/README.md index 5e06ebbd86..47a14d7ffa 100644 --- a/packages/fetchai/protocols/gym/README.md +++ b/packages/fetchai/protocols/gym/README.md @@ -10,7 +10,7 @@ This is a protocol for interacting with a gym connection. --- name: gym author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for interacting with a gym connection. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' @@ -51,4 +51,4 @@ keep_terminal_state_dialogues: false ## Links -* OpenAI Gym +- OpenAI Gym diff --git a/packages/fetchai/protocols/gym/__init__.py b/packages/fetchai/protocols/gym/__init__.py index 0f83bf7cbc..2b92027c9b 100644 --- a/packages/fetchai/protocols/gym/__init__.py +++ b/packages/fetchai/protocols/gym/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the gym protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.gym.message import GymMessage diff --git a/packages/fetchai/protocols/gym/custom_types.py b/packages/fetchai/protocols/gym/custom_types.py index dd85e840cf..53de156ae2 100644 --- a/packages/fetchai/protocols/gym/custom_types.py +++ b/packages/fetchai/protocols/gym/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/gym/dialogues.py b/packages/fetchai/protocols/gym/dialogues.py index 252852b493..f92658eb61 100644 --- a/packages/fetchai/protocols/gym/dialogues.py +++ b/packages/fetchai/protocols/gym/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/gym/message.py b/packages/fetchai/protocols/gym/message.py index e684a5ce1c..a22b6ae0ee 100644 --- a/packages/fetchai/protocols/gym/message.py +++ b/packages/fetchai/protocols/gym/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -38,7 +38,7 @@ class GymMessage(Message): """A protocol for interacting with a gym connection.""" - protocol_id = PublicId.from_str("fetchai/gym:1.1.6") + protocol_id = PublicId.from_str("fetchai/gym:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/gym:1.0.0") AnyObject = CustomAnyObject diff --git a/packages/fetchai/protocols/gym/protocol.yaml b/packages/fetchai/protocols/gym/protocol.yaml index f8427b0b93..a301a93e67 100644 --- a/packages/fetchai/protocols/gym/protocol.yaml +++ b/packages/fetchai/protocols/gym/protocol.yaml @@ -1,20 +1,20 @@ name: gym author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/gym:1.0.0 type: protocol description: A protocol for interacting with a gym connection. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: Qma2cGSh5ZPoKYFwD2jQ9jscUaCnXfAYG7d7GKRCoWCSJY - __init__.py: QmXqC5SFNT5q6u9R3vzWVP2y6wvW3oKH1XPpBLYHFpXxmR - custom_types.py: QmVSJWU8rj7ksBVbhUkgm936njcgC5Tx5iFR456YytmSSj - dialogues.py: QmRUL12bcdYFUDeA3fV8ifaxqApp3WhBPGhMzXgKhVXN8f + README.md: QmVpaTeAZL4HN37449d3KAPMQw9uY1gH1Apm9XDhZkfGmE + __init__.py: QmVpAS5VMF6ABFdnmthK6fbcuaLLEx94hebtVgaosTePTU + custom_types.py: QmX11ojHWTmPcEVWk8fzDiHdKwDQDccTLPYx8KoPiKiPPS + dialogues.py: QmTjYmokn1ayZYPSosarwJMpTPU4jAHfy4rftDgzcvNGLb gym.proto: QmdCRYrHpG1AGzGfGAisbDZEJA2gdgJvhivtHqttTsQeYE gym_pb2.py: QmXhaUyFbsLoKbHBK83SR6a9zvAGAsvWGu7tA2BTTyw26W - message.py: QmNa6pjtA9Uj4bJwv4kPJX27pKCL6EWKNoy6y6oLTfQkK3 - serialization.py: Qmeq28xqicGbEgG9xjhnMVhNCC3q5E5D2VTDKKWTtuAUxQ + message.py: QmcCwF8uJpPACDTzcNS5SmgJV86uudxfNpvk4bHHoSvSqS + serialization.py: QmYf3hsqiLZ9NQcoSXaVypD11NPUFczXw9zi1EinRzv7hV fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/gym/serialization.py b/packages/fetchai/protocols/gym/serialization.py index 621b05a14a..0dff99f063 100644 --- a/packages/fetchai/protocols/gym/serialization.py +++ b/packages/fetchai/protocols/gym/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/http/README.md b/packages/fetchai/protocols/http/README.md index 289196af6f..c5bd795490 100644 --- a/packages/fetchai/protocols/http/README.md +++ b/packages/fetchai/protocols/http/README.md @@ -10,7 +10,7 @@ This is a protocol for interacting with a client/server via HTTP requests and re --- name: http author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for HTTP requests and responses. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' @@ -43,4 +43,4 @@ keep_terminal_state_dialogues: false ## Links -* HTTP Specification +- HTTP Specification diff --git a/packages/fetchai/protocols/http/__init__.py b/packages/fetchai/protocols/http/__init__.py index 849fffdd8f..1749493d94 100644 --- a/packages/fetchai/protocols/http/__init__.py +++ b/packages/fetchai/protocols/http/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the http protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.http.message import HttpMessage diff --git a/packages/fetchai/protocols/http/dialogues.py b/packages/fetchai/protocols/http/dialogues.py index 303db548dd..c325aec057 100644 --- a/packages/fetchai/protocols/http/dialogues.py +++ b/packages/fetchai/protocols/http/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/http/message.py b/packages/fetchai/protocols/http/message.py index 23996eda79..7d08134226 100644 --- a/packages/fetchai/protocols/http/message.py +++ b/packages/fetchai/protocols/http/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -36,7 +36,7 @@ class HttpMessage(Message): """A protocol for HTTP requests and responses.""" - protocol_id = PublicId.from_str("fetchai/http:1.1.6") + protocol_id = PublicId.from_str("fetchai/http:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/http:1.0.0") class Performative(Message.Performative): diff --git a/packages/fetchai/protocols/http/protocol.yaml b/packages/fetchai/protocols/http/protocol.yaml index 5080069267..4f6017359e 100644 --- a/packages/fetchai/protocols/http/protocol.yaml +++ b/packages/fetchai/protocols/http/protocol.yaml @@ -1,19 +1,19 @@ name: http author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/http:1.0.0 type: protocol description: A protocol for HTTP requests and responses. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmcZmB65nV5YAodzDTvj2Fp5VYD9gfLQcuRp65Z1VQS5xM - __init__.py: QmcvXQ439L7PxWrAzrAE1kiZr7W9iYtyJuZBL4p9YMq95s - dialogues.py: QmXuWAkAHfkrQCBoqeYKKqUwkj9j79GJNSTQncYUHgT9QE + README.md: QmWqoWa2LrKVLYdmURDriMkUYSUxoWXL1wgatFshQMUzha + __init__.py: QmPXrzMrmAGjAqvjXEKC9WvdrVgng9viYX8WuEJYDcfVCv + dialogues.py: QmUcjazcTHwvVMQk2vPjsJQjscbm5mE1mKBHYVUrNJbTsR http.proto: Qmag9uQYVPQwsdZfH1GEaBX5xgikoYuphQpXnWP2xob6Ys http_pb2.py: QmPck55KUSn1KfGQ3jGTq6eh2Fhh6Kdn5HPotrpFJeJ8u3 - message.py: QmUV3jSqG59abrPUer9vingPmB37NGXBi811Z4u9ZSPuEB - serialization.py: QmTwkQB9VXRsxQQZapdR3HGRGXWpEmGuKJbtnnzsqo5zx3 + message.py: Qmf545etJNhTDu4YoL3EcNFqrB6WCrXGFvZN2WLJozB3Dk + serialization.py: QmaPKtCLFJSV6Jxtft5k4vz2CuuG5eWz8GsMSbTtdrFxyx fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/http/serialization.py b/packages/fetchai/protocols/http/serialization.py index 329c294e11..bd906395cb 100644 --- a/packages/fetchai/protocols/http/serialization.py +++ b/packages/fetchai/protocols/http/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/ledger_api/README.md b/packages/fetchai/protocols/ledger_api/README.md index e5ee728fa9..74f191fd4e 100644 --- a/packages/fetchai/protocols/ledger_api/README.md +++ b/packages/fetchai/protocols/ledger_api/README.md @@ -10,7 +10,7 @@ This is a protocol for interacting with ledger APIs. --- name: ledger_api author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for ledger APIs requests and responses. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/fetchai/protocols/ledger_api/__init__.py b/packages/fetchai/protocols/ledger_api/__init__.py index be4c2bd181..0170260160 100644 --- a/packages/fetchai/protocols/ledger_api/__init__.py +++ b/packages/fetchai/protocols/ledger_api/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the ledger_api protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.ledger_api.message import LedgerApiMessage diff --git a/packages/fetchai/protocols/ledger_api/custom_types.py b/packages/fetchai/protocols/ledger_api/custom_types.py index e5e2c79a96..6e39d89984 100644 --- a/packages/fetchai/protocols/ledger_api/custom_types.py +++ b/packages/fetchai/protocols/ledger_api/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/ledger_api/dialogues.py b/packages/fetchai/protocols/ledger_api/dialogues.py index 2163f432e9..eadda1194b 100644 --- a/packages/fetchai/protocols/ledger_api/dialogues.py +++ b/packages/fetchai/protocols/ledger_api/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/ledger_api/message.py b/packages/fetchai/protocols/ledger_api/message.py index c78bed1a6b..8ada458c16 100644 --- a/packages/fetchai/protocols/ledger_api/message.py +++ b/packages/fetchai/protocols/ledger_api/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -52,7 +52,7 @@ class LedgerApiMessage(Message): """A protocol for ledger APIs requests and responses.""" - protocol_id = PublicId.from_str("fetchai/ledger_api:1.1.6") + protocol_id = PublicId.from_str("fetchai/ledger_api:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/ledger_api:1.0.0") Kwargs = CustomKwargs diff --git a/packages/fetchai/protocols/ledger_api/protocol.yaml b/packages/fetchai/protocols/ledger_api/protocol.yaml index da3e6c5035..1151164364 100644 --- a/packages/fetchai/protocols/ledger_api/protocol.yaml +++ b/packages/fetchai/protocols/ledger_api/protocol.yaml @@ -1,20 +1,20 @@ name: ledger_api author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/ledger_api:1.0.0 type: protocol description: A protocol for ledger APIs requests and responses. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmfXe88yyf1UVnb7vb3mABZAPLM7gbD8RQyRPvBsrzFhvi - __init__.py: QmVNPenv99bXcSeZyrAKguwhaFb8q7dBspsFyFXeJev8eu - custom_types.py: QmWHcqh5AcpTLAsiRPaNDLBoNRgnQ6ykQCTZB5hf6womQT - dialogues.py: QmUkhFxEAJ4YKPXddit7rWZ13r78MM3suZJ1uAAgTbuLwH + README.md: QmPh9s795kuU8tCggTPTuAcHC95dkf6CNPUwRCZvZnQ7ty + __init__.py: QmUTxKefDQ2Pek9zDDFkSBG79vJnbPftX7mLvoEWg8Qw2w + custom_types.py: QmVHe1LBaErJseoa5QbhpvbEpFZXx4vaaBveREGNmwZs91 + dialogues.py: QmZ7iDRuQs32KxGEutUrHqTeVHa8UTTje2tvVa8ELu3kDy ledger_api.proto: QmR92cmoxSxKANTvCmm9skftvgzYobNwcWCUanNkduJjyh ledger_api_pb2.py: QmNt9mSa71PcXDHFDwEWb3ay4RAE11KURX8hzZmFj8voEo - message.py: QmdtEXZ15mqmXD1ckubdQGsjd162T8VtMzAZ2ntLKTVU8P - serialization.py: QmcsSo3pzXF1j214TAq1hM2cypTg4yQLJSwWVBDyj5WK1g + message.py: QmbeVWQTAkLybFVLyemoMtotXaU7DyjByXz2JW5pxXob1M + serialization.py: QmbYMuLC59Emc8hwW8ELcFRaT8xiXakdL2p5vCyBE8PnCg fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/ledger_api/serialization.py b/packages/fetchai/protocols/ledger_api/serialization.py index fbace74085..ac4b8356c8 100644 --- a/packages/fetchai/protocols/ledger_api/serialization.py +++ b/packages/fetchai/protocols/ledger_api/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/ml_trade/README.md b/packages/fetchai/protocols/ml_trade/README.md index 1391a77e56..8b84c57046 100644 --- a/packages/fetchai/protocols/ml_trade/README.md +++ b/packages/fetchai/protocols/ml_trade/README.md @@ -10,7 +10,7 @@ This is a protocol for trading data for training and prediction purposes. --- name: ml_trade author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for trading data for training and prediction purposes. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/fetchai/protocols/ml_trade/__init__.py b/packages/fetchai/protocols/ml_trade/__init__.py index dcf413b885..1ae357c1a4 100644 --- a/packages/fetchai/protocols/ml_trade/__init__.py +++ b/packages/fetchai/protocols/ml_trade/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the ml_trade protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.ml_trade.message import MlTradeMessage diff --git a/packages/fetchai/protocols/ml_trade/custom_types.py b/packages/fetchai/protocols/ml_trade/custom_types.py index 23b95bbd51..660277c701 100644 --- a/packages/fetchai/protocols/ml_trade/custom_types.py +++ b/packages/fetchai/protocols/ml_trade/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/ml_trade/dialogues.py b/packages/fetchai/protocols/ml_trade/dialogues.py index efe39c6ef4..28c03cb26d 100644 --- a/packages/fetchai/protocols/ml_trade/dialogues.py +++ b/packages/fetchai/protocols/ml_trade/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/ml_trade/message.py b/packages/fetchai/protocols/ml_trade/message.py index 833174e136..f38485248f 100644 --- a/packages/fetchai/protocols/ml_trade/message.py +++ b/packages/fetchai/protocols/ml_trade/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -41,7 +41,7 @@ class MlTradeMessage(Message): """A protocol for trading data for training and prediction purposes.""" - protocol_id = PublicId.from_str("fetchai/ml_trade:1.1.6") + protocol_id = PublicId.from_str("fetchai/ml_trade:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/ml_trade:1.0.0") Description = CustomDescription diff --git a/packages/fetchai/protocols/ml_trade/protocol.yaml b/packages/fetchai/protocols/ml_trade/protocol.yaml index 9e0774d8d1..c8ed35e270 100644 --- a/packages/fetchai/protocols/ml_trade/protocol.yaml +++ b/packages/fetchai/protocols/ml_trade/protocol.yaml @@ -1,20 +1,20 @@ name: ml_trade author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/ml_trade:1.0.0 type: protocol description: A protocol for trading data for training and prediction purposes. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmUgYkP7pTuznUpGJQGPnGH1BfgUcKWg49E1JJaYxwKFZ7 - __init__.py: QmUjSqabNS4TEUU4CrU9pazXSpH9b7U2CnMPPucz84ZBWW - custom_types.py: QmbCLTdhJf3GNCAK1p31yExSeCZpHv39JmHY1bqekjE7PP - dialogues.py: QmaHZwNfcxNAecReeofbygLJLYQpUSPLcpnyRZcSApRnvz - message.py: QmWnsynbrnnXxf8F33zkYuPaLVHPFoUvQ42y7d1TpqWDC6 + README.md: QmTDDRfEdNV55C5Z34PLoUqn5LKd8p1p96GbrWa5G2S65J + __init__.py: QmSE8icQPrhs32YjKAxzz7BZjFaLWEKsZpouXshP516GzA + custom_types.py: QmPnyZAfuH2myvv47BaN7hsRDo7E4rmjvzDYWoMCwXwkg8 + dialogues.py: Qmc63JhVebdh1Y4QxLjDxxLf4eYtaj62pLw9eVqULqFM64 + message.py: Qmd9923RVn5ABHb9MytPVqPvqC9GKwTp6cfm58EnqYaFUr ml_trade.proto: QmbW2f4qNJJeY8YVgrawHjroqYcTviY5BevCBYVUMVVoH9 ml_trade_pb2.py: QmTF6TseznjZxVoJH99vxW9GDz4LrSFhqBwNsfF6s8cv9H - serialization.py: QmaWBGt5CYoDcwBfyRq6sdMZo9h6fuLnT1sRc8tJvYReEs + serialization.py: QmTAULUySkgNgvXeCmC21gE7AU2a3V8dD4jAbDqAWokcMC fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/ml_trade/serialization.py b/packages/fetchai/protocols/ml_trade/serialization.py index 7eedd26a3f..54c30cb61e 100644 --- a/packages/fetchai/protocols/ml_trade/serialization.py +++ b/packages/fetchai/protocols/ml_trade/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/oef_search/README.md b/packages/fetchai/protocols/oef_search/README.md index fc8a6ccbba..32607ca68e 100644 --- a/packages/fetchai/protocols/oef_search/README.md +++ b/packages/fetchai/protocols/oef_search/README.md @@ -11,7 +11,7 @@ It allows for registering of agents and services, and searching of agents and se --- name: oef_search author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for interacting with an OEF search service. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/fetchai/protocols/oef_search/__init__.py b/packages/fetchai/protocols/oef_search/__init__.py index 5307526a2f..c7138ebe41 100644 --- a/packages/fetchai/protocols/oef_search/__init__.py +++ b/packages/fetchai/protocols/oef_search/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the oef_search protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.oef_search.message import OefSearchMessage diff --git a/packages/fetchai/protocols/oef_search/custom_types.py b/packages/fetchai/protocols/oef_search/custom_types.py index 9530dbe61b..d623c02129 100644 --- a/packages/fetchai/protocols/oef_search/custom_types.py +++ b/packages/fetchai/protocols/oef_search/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/oef_search/dialogues.py b/packages/fetchai/protocols/oef_search/dialogues.py index 6e18222adc..2467aa4a6a 100644 --- a/packages/fetchai/protocols/oef_search/dialogues.py +++ b/packages/fetchai/protocols/oef_search/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/oef_search/message.py b/packages/fetchai/protocols/oef_search/message.py index 885dc191b3..85fdcffcc0 100644 --- a/packages/fetchai/protocols/oef_search/message.py +++ b/packages/fetchai/protocols/oef_search/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -47,7 +47,7 @@ class OefSearchMessage(Message): """A protocol for interacting with an OEF search service.""" - protocol_id = PublicId.from_str("fetchai/oef_search:1.1.6") + protocol_id = PublicId.from_str("fetchai/oef_search:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/oef_search:1.0.0") AgentsInfo = CustomAgentsInfo diff --git a/packages/fetchai/protocols/oef_search/protocol.yaml b/packages/fetchai/protocols/oef_search/protocol.yaml index 1e0eb8ef2f..d152532962 100644 --- a/packages/fetchai/protocols/oef_search/protocol.yaml +++ b/packages/fetchai/protocols/oef_search/protocol.yaml @@ -1,20 +1,20 @@ name: oef_search author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/oef_search:1.0.0 type: protocol description: A protocol for interacting with an OEF search service. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: Qmf32qq5iYn1SouwQG9BuxtsjN1WYBc6DKFQQFtQUENnyS - __init__.py: QmSdugxEX8TpruAWHmDznu7W15pR6ov5cVuVwpUE6fERCM - custom_types.py: QmWiPktGR3wJrbPUY4cgKLPRHrGxsoUpdZ22NLF6EvwJjw - dialogues.py: QmR4Bam6eLDkbZ6dkcuLhpVwCqmtmnxfg6Bnpd5ttzbJcf - message.py: QmVTskP9TPjnXv2mykozmrH5SVfHwNxdiXC4tQqKz4jYrt + README.md: QmZvdgb8Ns3YG1yVHEUHkmW7aLJRtKhSBRjcjLCZbfouGh + __init__.py: QmWPibhs94rCa3Vi4kUQNm9Gw2DcWFaihifkz6FJamasB2 + custom_types.py: QmX9ynYP53vEmENbextDTw9NRkrvbeS5PjnStqLUEDQLS2 + dialogues.py: Qmf7epXX4QZqLEYKQdAieXpwCYKZCdRthDdZxfmpHsryaq + message.py: QmYPaQXBTSSTrk8HUABxbTfFLQRca2pcVqYzicUvTks6gG oef_search.proto: QmaYkawAXEeeNuCcjmwcvdsttnE3owtuP9ouAYVyRu7M2J oef_search_pb2.py: QmSCvcwkLmwWESqiAs2Vj2yioUwLmdzMGaCDRo3sHT1ByL - serialization.py: Qmbqe3hwvXxaQTPFRH8Q1XT39WMaDQ1ARheqpjKAAFB33z + serialization.py: QmRNFL8Gf5pTQdALxkB6YBQumsoJDb9hiQ1CVApoU3qdJ6 fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/oef_search/serialization.py b/packages/fetchai/protocols/oef_search/serialization.py index a03ad93a5e..0e5f515adb 100644 --- a/packages/fetchai/protocols/oef_search/serialization.py +++ b/packages/fetchai/protocols/oef_search/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/prometheus/README.md b/packages/fetchai/protocols/prometheus/README.md index 8739da5427..bca9771ea7 100644 --- a/packages/fetchai/protocols/prometheus/README.md +++ b/packages/fetchai/protocols/prometheus/README.md @@ -10,7 +10,7 @@ This is a protocol for interacting with prometheus connection. --- name: prometheus author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for adding and updating metrics to a prometheus server. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/fetchai/protocols/prometheus/__init__.py b/packages/fetchai/protocols/prometheus/__init__.py index 1a4a55f4e7..23af9f567c 100644 --- a/packages/fetchai/protocols/prometheus/__init__.py +++ b/packages/fetchai/protocols/prometheus/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the prometheus protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.prometheus.message import PrometheusMessage diff --git a/packages/fetchai/protocols/prometheus/dialogues.py b/packages/fetchai/protocols/prometheus/dialogues.py index 7c935a657f..916612b31f 100644 --- a/packages/fetchai/protocols/prometheus/dialogues.py +++ b/packages/fetchai/protocols/prometheus/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/prometheus/message.py b/packages/fetchai/protocols/prometheus/message.py index 2e53379ddc..830068a4d4 100644 --- a/packages/fetchai/protocols/prometheus/message.py +++ b/packages/fetchai/protocols/prometheus/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -36,7 +36,7 @@ class PrometheusMessage(Message): """A protocol for adding and updating metrics to a prometheus server.""" - protocol_id = PublicId.from_str("fetchai/prometheus:1.1.6") + protocol_id = PublicId.from_str("fetchai/prometheus:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/prometheus:1.0.0") class Performative(Message.Performative): diff --git a/packages/fetchai/protocols/prometheus/protocol.yaml b/packages/fetchai/protocols/prometheus/protocol.yaml index f9b593ecb9..561c4f810b 100644 --- a/packages/fetchai/protocols/prometheus/protocol.yaml +++ b/packages/fetchai/protocols/prometheus/protocol.yaml @@ -1,19 +1,19 @@ name: prometheus author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/prometheus:1.0.0 type: protocol description: A protocol for adding and updating metrics to a prometheus server. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmWQdzMMcQVSyBidp4aMeHsBTGYzYiAJmaCGbB4YvsSSGH - __init__.py: QmeNbaLEMYYLtUpYMJQoQKfxiiL3trZpVX251jVVAgTvmM - dialogues.py: QmVNNWsEzorKdYWxGSW1yUKd8PNXYjcRprtJijuuFSepkQ - message.py: QmZJBNQyACv1gbtjbqxN9fiD4NqsDvKSnqg6Gc2s6YMeBD + README.md: QmQXXjGuq8W29ZJSSRrVyFHEn943hdoiWzQBvtwUufN1eH + __init__.py: QmTa48qrS3hbw1t1VEXieZ5pRpCTpR2gRWY92ecNyfRtFy + dialogues.py: QmNwiRofM3HPmxs3SSEsr8ZHuyXEPJVkYTApMSgczisZ9H + message.py: QmPbTxtc4ctk5h8Yk3KCkT2uHpezsmgLYkjCPQDNAxm8x1 prometheus.proto: QmXzFWmrWVqQuxtVgaZwuMgbrEvSRrRVU63htURUsFJ1wv prometheus_pb2.py: QmNuDYT7RWNRmRKSMgsLqD76gmmNSNm88uTCSPcvoxTdHr - serialization.py: QmeC957DMVN53eMSMiTUnyc6vwpTx2NTmg69KfdptEEd2E + serialization.py: Qmf7WvXADqkDpQbjD6nZ3n7iKg5jsiqGTR91AWRqSKhiAq fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/prometheus/serialization.py b/packages/fetchai/protocols/prometheus/serialization.py index 653f789eaa..b81a9ee66f 100644 --- a/packages/fetchai/protocols/prometheus/serialization.py +++ b/packages/fetchai/protocols/prometheus/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/register/README.md b/packages/fetchai/protocols/register/README.md index fe4b178c16..62bf296ecc 100644 --- a/packages/fetchai/protocols/register/README.md +++ b/packages/fetchai/protocols/register/README.md @@ -10,7 +10,7 @@ This is a protocol for communication between two AEAs for registration. --- name: register author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for communication between two AEAs for registration. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/fetchai/protocols/register/__init__.py b/packages/fetchai/protocols/register/__init__.py index 226bac7cd8..376ac84607 100644 --- a/packages/fetchai/protocols/register/__init__.py +++ b/packages/fetchai/protocols/register/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the register protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.register.message import RegisterMessage diff --git a/packages/fetchai/protocols/register/dialogues.py b/packages/fetchai/protocols/register/dialogues.py index 35d6075911..941b6f9adc 100644 --- a/packages/fetchai/protocols/register/dialogues.py +++ b/packages/fetchai/protocols/register/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/register/message.py b/packages/fetchai/protocols/register/message.py index 071190c3d3..668e488698 100644 --- a/packages/fetchai/protocols/register/message.py +++ b/packages/fetchai/protocols/register/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -36,7 +36,7 @@ class RegisterMessage(Message): """A protocol for communication between two AEAs for registration.""" - protocol_id = PublicId.from_str("fetchai/register:1.1.6") + protocol_id = PublicId.from_str("fetchai/register:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/register:1.0.0") class Performative(Message.Performative): diff --git a/packages/fetchai/protocols/register/protocol.yaml b/packages/fetchai/protocols/register/protocol.yaml index 713e9f82e1..5ecefdf4cb 100644 --- a/packages/fetchai/protocols/register/protocol.yaml +++ b/packages/fetchai/protocols/register/protocol.yaml @@ -1,19 +1,19 @@ name: register author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/register:1.0.0 type: protocol description: A protocol for communication between two AEAs for registration. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: Qmb4e2B87Ub3e2phcRkSAiHX4mDY9KRrh7pKmXAw8QJXkc - __init__.py: Qmc1GiTJz8Mufv7PetueCont3br5W4nuq6ZdbBS9vH59fv - dialogues.py: QmPBn3aiw9oc1QhkehdghEoBkhjreMmLnw6rZCr84cimJH - message.py: QmY9z2pZnajJiwHe6etsydFW93griV2cop9FPpRPB91Vmp + README.md: QmVrcrKFvVrTDLiYDMrcEeTrujcg7r1SXyRAa1H1FbWTLa + __init__.py: QmWc6YpAxjsvoQSqhzREAijdZyp1VLgsE5uyp9NXU3H8v1 + dialogues.py: QmVgE32GY8hLMnZ7xeceBL4zUo9eGb6eD1f4Le6Rx7wnes + message.py: QmZwiWBzBF4PHj4j5A9WXYhkhKUTH96azMdVs3WRm26f46 register.proto: QmarDZqqxezQX3XLLxWigC32S5Aiu367XjHVMKCjXcpfeN register_pb2.py: QmRisHAzYZK38NFaW4kfhYQx6VpTQnKN7hepxV83LgFW91 - serialization.py: QmSTcWGSpmtAcpBTD3akhJVQzw7K2iYSEHSjKugUckJRAg + serialization.py: QmQQPj3hBPTBLJUFVdgvaev4ezxsFrm5G47uGfPpfvzywK fingerprint_ignore_patterns: [] dependencies: protobuf: {} diff --git a/packages/fetchai/protocols/register/serialization.py b/packages/fetchai/protocols/register/serialization.py index 4464ede8ac..20de4456fc 100644 --- a/packages/fetchai/protocols/register/serialization.py +++ b/packages/fetchai/protocols/register/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/signing/README.md b/packages/fetchai/protocols/signing/README.md index fd2bb3da6b..c5a27d4e34 100644 --- a/packages/fetchai/protocols/signing/README.md +++ b/packages/fetchai/protocols/signing/README.md @@ -10,7 +10,7 @@ This is a protocol for communication between a skill and a decision maker. --- name: signing author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for communication between skills and decision maker. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/fetchai/protocols/signing/__init__.py b/packages/fetchai/protocols/signing/__init__.py index 3567ce7311..eb863653be 100644 --- a/packages/fetchai/protocols/signing/__init__.py +++ b/packages/fetchai/protocols/signing/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the signing protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.signing.message import SigningMessage diff --git a/packages/fetchai/protocols/signing/custom_types.py b/packages/fetchai/protocols/signing/custom_types.py index 5ff1d18673..7dbdf9f2b0 100644 --- a/packages/fetchai/protocols/signing/custom_types.py +++ b/packages/fetchai/protocols/signing/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/signing/dialogues.py b/packages/fetchai/protocols/signing/dialogues.py index ce793621cd..ce62444b2f 100644 --- a/packages/fetchai/protocols/signing/dialogues.py +++ b/packages/fetchai/protocols/signing/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/signing/message.py b/packages/fetchai/protocols/signing/message.py index 75e76ccf8a..811891875b 100644 --- a/packages/fetchai/protocols/signing/message.py +++ b/packages/fetchai/protocols/signing/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -51,7 +51,7 @@ class SigningMessage(Message): """A protocol for communication between skills and decision maker.""" - protocol_id = PublicId.from_str("fetchai/signing:1.1.6") + protocol_id = PublicId.from_str("fetchai/signing:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/signing:1.0.0") ErrorCode = CustomErrorCode diff --git a/packages/fetchai/protocols/signing/protocol.yaml b/packages/fetchai/protocols/signing/protocol.yaml index 025fae397c..94e4bbaad2 100644 --- a/packages/fetchai/protocols/signing/protocol.yaml +++ b/packages/fetchai/protocols/signing/protocol.yaml @@ -1,18 +1,18 @@ name: signing author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/signing:1.0.0 type: protocol description: A protocol for communication between skills and decision maker. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmbRA7t2WYhLHmFki79Ko8iUtsDgCxARdtUwEnSy2dMbnR - __init__.py: QmQ6H6NG3BQE1urTyynHjBf1z9AfopbjPKWGv4MX8WkXQm - custom_types.py: QmQTVJEAzTMYa5uhuoaV5ax4t4M1FGsS4yUzeng1xbkszV - dialogues.py: QmeVvBdgfjB7YsCP5ubkUGZasSFEXnghucbEJaCtg5Av78 - message.py: QmTFStaGM87zAP4n5uHTeYyPKNfJQQqfSPmncz9fndCzhE - serialization.py: Qmb23gobo6L9rm5C7hWAqnfnfgpch9ARhtXkVRe34B3URS + README.md: QmWWjq6ppoaiGG46yUQWbgrN78fF3iKcuk5Zn6L7pkVdtA + __init__.py: QmQwA8M3CvBeWabUAWUC6Mmt5bUgqQK8TAHt62JpZzsSt1 + custom_types.py: QmbYjhUzvTMv6kU9UbuGLyVGfyurZPgX8PBGZGj58jDHv3 + dialogues.py: QmQ9LyN1FamvMZ1o7Pt9H69bZZVY1Yxgm7HhyeN4fSXEUa + message.py: QmeugK5PynXtgXgRbvjVyQCBXWwVdvnQvNgWLYScqLhFn1 + serialization.py: QmPeHDs5eXVApHLj6Xecc6jqBC8LDrmUJcKRgVYDNQ9W2q signing.proto: QmbHQYswu1d5JTq8QD3WY9Trw7CwCFbv4c1wmgwiZC5756 signing_pb2.py: QmaYoSC2uxSATBzNY9utPp7J78drWgyYocr4cPjEhyLf7y fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/protocols/signing/serialization.py b/packages/fetchai/protocols/signing/serialization.py index 589f2b80cd..4357413d00 100644 --- a/packages/fetchai/protocols/signing/serialization.py +++ b/packages/fetchai/protocols/signing/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/state_update/README.md b/packages/fetchai/protocols/state_update/README.md index 955eb474e6..4f7d3e2f76 100644 --- a/packages/fetchai/protocols/state_update/README.md +++ b/packages/fetchai/protocols/state_update/README.md @@ -10,7 +10,7 @@ This is a protocol for updating the state of a decision maker. --- name: state_update author: fetchai -version: 1.1.6 +version: 1.1.7 description: A protocol for state updates to the decision maker state. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' diff --git a/packages/fetchai/protocols/state_update/__init__.py b/packages/fetchai/protocols/state_update/__init__.py index bc09acba36..a42af97c3f 100644 --- a/packages/fetchai/protocols/state_update/__init__.py +++ b/packages/fetchai/protocols/state_update/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the state_update protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.state_update.message import StateUpdateMessage diff --git a/packages/fetchai/protocols/state_update/dialogues.py b/packages/fetchai/protocols/state_update/dialogues.py index b43d4fadb9..86038ec8c0 100644 --- a/packages/fetchai/protocols/state_update/dialogues.py +++ b/packages/fetchai/protocols/state_update/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/state_update/message.py b/packages/fetchai/protocols/state_update/message.py index 9774cea564..6353e18968 100644 --- a/packages/fetchai/protocols/state_update/message.py +++ b/packages/fetchai/protocols/state_update/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -38,7 +38,7 @@ class StateUpdateMessage(Message): """A protocol for state updates to the decision maker state.""" - protocol_id = PublicId.from_str("fetchai/state_update:1.1.6") + protocol_id = PublicId.from_str("fetchai/state_update:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/state_update:1.0.0") class Performative(Message.Performative): diff --git a/packages/fetchai/protocols/state_update/protocol.yaml b/packages/fetchai/protocols/state_update/protocol.yaml index 76d708edb0..e50e870ba7 100644 --- a/packages/fetchai/protocols/state_update/protocol.yaml +++ b/packages/fetchai/protocols/state_update/protocol.yaml @@ -1,17 +1,17 @@ name: state_update author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/state_update:1.0.0 type: protocol description: A protocol for state updates to the decision maker state. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmZD23pF9nKMYpiRfxBfDXkuiqHD2ZhV4sBASGG7ypDEt5 - __init__.py: QmRJ7AgAMkBQZ5svVv6LhrXsRCFWzw6KmCqKxLLFG4HZpb - dialogues.py: Qme4PWFyruwQHTnw3v7sVuvxQYDBhAVxGE2svd9vcWQRht - message.py: QmNwtm6DbAVd6iiPSRn4gy8eQBoZyMV87rb5954UYCknQB - serialization.py: QmZZUtC3Vk7sNyy6H3XiLTJkdwSdGR9T2BLgLTN2BdaGEP + README.md: QmbFH2ySjB5FnvLhKCm68jJPVeasHbGBSTUyEZP4P17mKi + __init__.py: Qmboa7WunXM34apxH2fu4z1996CrfxcCaV2HxhvXsjnkxK + dialogues.py: QmUugwuLbuHr8zkGRkd7Dimwc7LzbCHYvdNHC6cn3TS7XP + message.py: QmPKeMCSAcxDeEXUMzAjRvVvWJ5AUMYoDyGPGjUEoHkKff + serialization.py: QmRxkqWUB7EVGp1SnsMXeDssCcsiirvPPJAaeN5TREPBBm state_update.proto: QmdLQpu2jpJUuUFhF34hBeh64Gfv5V1JxLTKCTgY93qduR state_update_pb2.py: QmXmaUALXJ4zV2CuADrGsFpNmy8RhWLSYpm7dXXogfgrw3 fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/protocols/state_update/serialization.py b/packages/fetchai/protocols/state_update/serialization.py index cf140aaf24..3fd07dc154 100644 --- a/packages/fetchai/protocols/state_update/serialization.py +++ b/packages/fetchai/protocols/state_update/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/tac/README.md b/packages/fetchai/protocols/tac/README.md index 1cb6475ffc..8939d65a1a 100644 --- a/packages/fetchai/protocols/tac/README.md +++ b/packages/fetchai/protocols/tac/README.md @@ -10,7 +10,7 @@ This is a protocol for participating in a Trading Agent Competition (TAC). --- name: tac author: fetchai -version: 1.1.6 +version: 1.1.7 description: The tac protocol implements the messages an AEA needs to participate in the TAC. license: Apache-2.0 @@ -86,4 +86,4 @@ keep_terminal_state_dialogues: true ## Links -* TAC skill in the AEA framework +- TAC skill in the AEA framework diff --git a/packages/fetchai/protocols/tac/__init__.py b/packages/fetchai/protocols/tac/__init__.py index da9c594e2a..228a744e43 100644 --- a/packages/fetchai/protocols/tac/__init__.py +++ b/packages/fetchai/protocols/tac/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the tac protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from packages.fetchai.protocols.tac.message import TacMessage diff --git a/packages/fetchai/protocols/tac/custom_types.py b/packages/fetchai/protocols/tac/custom_types.py index 1926e14fe4..cbc1b430b3 100644 --- a/packages/fetchai/protocols/tac/custom_types.py +++ b/packages/fetchai/protocols/tac/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/tac/dialogues.py b/packages/fetchai/protocols/tac/dialogues.py index 5584f8a1c1..bf62d5e4e8 100644 --- a/packages/fetchai/protocols/tac/dialogues.py +++ b/packages/fetchai/protocols/tac/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/protocols/tac/message.py b/packages/fetchai/protocols/tac/message.py index 8758f99602..4b30dd8c5b 100644 --- a/packages/fetchai/protocols/tac/message.py +++ b/packages/fetchai/protocols/tac/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -38,7 +38,7 @@ class TacMessage(Message): """The tac protocol implements the messages an AEA needs to participate in the TAC.""" - protocol_id = PublicId.from_str("fetchai/tac:1.1.6") + protocol_id = PublicId.from_str("fetchai/tac:1.1.7") protocol_specification_id = PublicId.from_str("fetchai/tac:1.0.0") ErrorCode = CustomErrorCode diff --git a/packages/fetchai/protocols/tac/protocol.yaml b/packages/fetchai/protocols/tac/protocol.yaml index 2a18b401cc..fe0edff194 100644 --- a/packages/fetchai/protocols/tac/protocol.yaml +++ b/packages/fetchai/protocols/tac/protocol.yaml @@ -1,6 +1,6 @@ name: tac author: fetchai -version: 1.1.6 +version: 1.1.7 protocol_specification_id: fetchai/tac:1.0.0 type: protocol description: The tac protocol implements the messages an AEA needs to participate @@ -8,12 +8,12 @@ description: The tac protocol implements the messages an AEA needs to participat license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmNRbnPjaBY74axmHbz1Nt3tJxeYNKdXhQ2s35WkvJLVrN - __init__.py: QmTzmmCHUSdwwWFnjKoYmGza9Azm4YxLQW92iGUe6Hm4VL - custom_types.py: QmQ1ygDWcBnRzkpyf7epNFT5Mwf4FKJHz3PRRZp7J2q3F6 - dialogues.py: QmRmCJ4CscK8yBQKfobv6XAXeRgVygD5i2SwQQ6RTKqkeM - message.py: QmbF4QFzB9uXNSgv4MyGYLkrm2fCa4vhQsrtqpUk4T7oT3 - serialization.py: QmdUmZo4Ftm5uA8ZH1x9evePBXVJLkrqeuywGB6QLSE9f5 + README.md: QmZdoSoTZHxvDbwdxm6d7xgRjCqvzNDcvhpUKS2inKUAaV + __init__.py: QmNxUNMKkhimqesJ52WFyG1jZqXC9CNo7ftsao9EKwAqay + custom_types.py: QmWUg194r4jqm6U2SY4B9CADn2bNE56qrpWJrVnGPvSz8v + dialogues.py: QmRhZrnyT4YaXsPXAr1ota3ndp64MAcc3XNcGF2sCN4z4Q + message.py: QmT3aDoBkR7VYoC9BEnMqNLJFZycSjcPGjG4ThUJNMjRgG + serialization.py: QmdHc6cF7GM6eMD3VqNjAwibvY9Bnd98SxvTrzDJW5tsAM tac.proto: QmVLyb1hc9SmouyhBXT2g8RYHsyitqxqDMssnMnPj5AhCx tac_pb2.py: QmdzW9DyYGaEA6evnb4mVHQRkxRyzmgiN1LdiFrck9T6Ai fingerprint_ignore_patterns: [] diff --git a/packages/fetchai/protocols/tac/serialization.py b/packages/fetchai/protocols/tac/serialization.py index 4e6fc4b05e..08fc0555e1 100644 --- a/packages/fetchai/protocols/tac/serialization.py +++ b/packages/fetchai/protocols/tac/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/__init__.py b/packages/fetchai/skills/__init__.py index 5b7f9c4d59..039d8dd79e 100644 --- a/packages/fetchai/skills/__init__.py +++ b/packages/fetchai/skills/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/advanced_data_request/README.md b/packages/fetchai/skills/advanced_data_request/README.md index b29cf5438b..7f8a6fe9b0 100644 --- a/packages/fetchai/skills/advanced_data_request/README.md +++ b/packages/fetchai/skills/advanced_data_request/README.md @@ -6,8 +6,8 @@ This skill is used to get specific data from an API, which can either be shared ## Behaviours -* `advanced_data_request_behaviour`: requests data from specified source every `tick_interval` seconds from the API endpoint `url` specified in the skill configuration. +- `advanced_data_request_behaviour`: requests data from specified source every `tick_interval` seconds from the API endpoint `url` specified in the skill configuration. ## Handlers -* `http`: handles incoming `http` messages, retrieves the data from the appropriate response, stores it in shared state under the key: `observation`, and responds to requests satisfying the API specification listed in `api_spec.yaml`. +- `http`: handles incoming `http` messages, retrieves the data from the appropriate response, stores it in shared state under the key: `observation`, and responds to requests satisfying the API specification listed in `api_spec.yaml`. diff --git a/packages/fetchai/skills/advanced_data_request/__init__.py b/packages/fetchai/skills/advanced_data_request/__init__.py index 491843a030..e151bc0afe 100644 --- a/packages/fetchai/skills/advanced_data_request/__init__.py +++ b/packages/fetchai/skills/advanced_data_request/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/advanced_data_request:0.7.5") +PUBLIC_ID = PublicId.from_str("fetchai/advanced_data_request:0.7.6") diff --git a/packages/fetchai/skills/advanced_data_request/behaviours.py b/packages/fetchai/skills/advanced_data_request/behaviours.py index 2400f8fbde..a0fafcc1c9 100644 --- a/packages/fetchai/skills/advanced_data_request/behaviours.py +++ b/packages/fetchai/skills/advanced_data_request/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/advanced_data_request/dialogues.py b/packages/fetchai/skills/advanced_data_request/dialogues.py index c10505020b..c7ec226f8c 100644 --- a/packages/fetchai/skills/advanced_data_request/dialogues.py +++ b/packages/fetchai/skills/advanced_data_request/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/advanced_data_request/handlers.py b/packages/fetchai/skills/advanced_data_request/handlers.py index 0d7eef1cbc..17b622b26d 100644 --- a/packages/fetchai/skills/advanced_data_request/handlers.py +++ b/packages/fetchai/skills/advanced_data_request/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/advanced_data_request/models.py b/packages/fetchai/skills/advanced_data_request/models.py index 2f4459f470..eee61ccbe7 100644 --- a/packages/fetchai/skills/advanced_data_request/models.py +++ b/packages/fetchai/skills/advanced_data_request/models.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/advanced_data_request/skill.yaml b/packages/fetchai/skills/advanced_data_request/skill.yaml index 02e9bc2690..4f196e58c5 100644 --- a/packages/fetchai/skills/advanced_data_request/skill.yaml +++ b/packages/fetchai/skills/advanced_data_request/skill.yaml @@ -1,23 +1,23 @@ name: advanced_data_request author: fetchai -version: 0.7.5 +version: 0.7.6 type: skill description: Retrieve data from an API license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmQEKGxJfUy6vg3aPg6jRNHQ4vzr4rUHYVac5eYG5C6Uxb - __init__.py: QmbHhecZ9Dv6p7yMfSPceE1KuAx5K1pnF1aBbHWeqhTBBS + README.md: QmaibnVqk95FVuhSXKCsYvUQFAkLCwYtPyWDmaNVDSFWvp + __init__.py: QmenhXvYML3HKHzYufiHqxCKqyaFLxdyDvAzQGdEF31ZSy api_spec.yaml: QmUPhCYr6tWDMysdMCQxT67oAKRdMbGpgqDfAA5wpei12s - behaviours.py: QmYnYzA3mPgpBy4X7JrVWPhymtu9TkLHs9T3qaKsBpYaxw - dialogues.py: QmU6ct3u9jvbSQ1YMfh72K4HRuUKYiSyw4wVmjEf73A3Y1 - handlers.py: QmWvKrrb6khn9MYmNvLaDy39Xkyu3rdq7wwjYcuNmk7f8w - models.py: Qmdr4CjeVCc9AdQAdkAGEcb6XRtLyEwxNMbrvGLAghvmBo + behaviours.py: QmNubn8GCjV2d12FQu2Zv3FjXyoxoEsKzAg3fbskhtL3S2 + dialogues.py: QmQxtJ6xqwGkbTEJX2rn8YDDhdvSCe3HhbyQYTaz9FknrG + handlers.py: QmP3hpp4LmW3ZX63LScByXKojaa9CVpTKocWf8eLu978nw + models.py: QmV7PcnNvogzj4PwAMZ8CQvsTaxEKJMKVgkatSHba1RJxt fingerprint_ignore_patterns: [] contracts: [] protocols: -- fetchai/http:1.1.6 -- fetchai/prometheus:1.1.6 +- fetchai/http:1.1.7 +- fetchai/prometheus:1.1.7 skills: [] behaviours: advanced_data_request_behaviour: diff --git a/packages/fetchai/skills/aries_alice/README.md b/packages/fetchai/skills/aries_alice/README.md index dcca1a398c..523675af06 100644 --- a/packages/fetchai/skills/aries_alice/README.md +++ b/packages/fetchai/skills/aries_alice/README.md @@ -8,15 +8,15 @@ This skill is part of the Fetch.ai Aries demo. It simulates the Alice actor of t ## Behaviours -* `alice`: registers and unregisters Alice AEA on the sOEF +- `alice`: registers and unregisters Alice AEA on the sOEF ## Handlers -* `default`: handles `default` messages for the invitation detail it receives from the Faber AEA -* `http`: handles `http` messages for communicating with Alice ACA -* `oef_search`: handles `oef_search` messages if registration on the sOEF was erratic +- `default`: handles `default` messages for the invitation detail it receives from the Faber AEA +- `http`: handles `http` messages for communicating with Alice ACA +- `oef_search`: handles `oef_search` messages if registration on the sOEF was erratic ## Links -* AEA Aries Demo -* Hyperledger Demo +- AEA Aries Demo +- Hyperledger Demo diff --git a/packages/fetchai/skills/aries_alice/__init__.py b/packages/fetchai/skills/aries_alice/__init__.py index e9c225ed27..a4b66ef2a2 100644 --- a/packages/fetchai/skills/aries_alice/__init__.py +++ b/packages/fetchai/skills/aries_alice/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/aries_alice:0.26.5") +PUBLIC_ID = PublicId.from_str("fetchai/aries_alice:0.26.6") diff --git a/packages/fetchai/skills/aries_alice/behaviours.py b/packages/fetchai/skills/aries_alice/behaviours.py index 0d00e03336..ee40424633 100644 --- a/packages/fetchai/skills/aries_alice/behaviours.py +++ b/packages/fetchai/skills/aries_alice/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/aries_alice/dialogues.py b/packages/fetchai/skills/aries_alice/dialogues.py index 0bf869530f..d2008133d2 100644 --- a/packages/fetchai/skills/aries_alice/dialogues.py +++ b/packages/fetchai/skills/aries_alice/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/aries_alice/handlers.py b/packages/fetchai/skills/aries_alice/handlers.py index 14c9d56c3e..3af8461a87 100644 --- a/packages/fetchai/skills/aries_alice/handlers.py +++ b/packages/fetchai/skills/aries_alice/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/aries_alice/skill.yaml b/packages/fetchai/skills/aries_alice/skill.yaml index 00c959fada..61cd381a4b 100644 --- a/packages/fetchai/skills/aries_alice/skill.yaml +++ b/packages/fetchai/skills/aries_alice/skill.yaml @@ -1,26 +1,26 @@ name: aries_alice author: fetchai -version: 0.26.5 +version: 0.26.6 type: skill description: The aries_alice skill implements the alice player in the aries cloud agent demo license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: Qmc88RFakLqDTqT42YGJDCDrH22tW2dkCBAs8wLKMGt5TV - __init__.py: QmVEmqiShvdo129e1x6xHi9rYPGLL8BYCEFKmJZsVmDjLJ - behaviours.py: QmdweWFwQsRpYT62x6agikommGMY75p8obsZr4VDmTbM35 - dialogues.py: QmVgfF5LR7269g6ffhH56dWq6U11YygUaKZfYvk3tY21mu - handlers.py: QmWXWCPNc7721ZD2WqCcajMDH1uyTZYghiPsNB7ZtU8WFp - strategy.py: QmeWoCwsReoZn4SXHPkoSy4qsYUyePusiVZKsNRCkXCzYA + README.md: QmdtgELuz8SmSp3xdHdktd1SvmzSFsavwVYXjZxPMke5ij + __init__.py: QmRdtdKnWntg3VjdGRQq4Yc2SErjD5k3epVVPmthAbZJXj + behaviours.py: QmYc2UCizXg86mBBjS43K73Bq3URdnsW5BefnzfzA7fz4k + dialogues.py: QmQvsX9sx5bDf588rrXmT2kzZSZapVpix2TkX4x422iTiu + handlers.py: QmZ4fc49cqp92ApccgyE27WtkSkYbPj3CTendnEgYyVVuL + strategy.py: QmP63YEBF9tQKSDYENn26D6x8fLqFtpU2npNK4mysdxsBz fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 +- fetchai/http_client:0.24.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/http:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/default:1.1.7 +- fetchai/http:1.1.7 +- fetchai/oef_search:1.1.7 skills: [] behaviours: alice: diff --git a/packages/fetchai/skills/aries_alice/strategy.py b/packages/fetchai/skills/aries_alice/strategy.py index 44317f16c0..2e5e56e02b 100644 --- a/packages/fetchai/skills/aries_alice/strategy.py +++ b/packages/fetchai/skills/aries_alice/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/aries_faber/README.md b/packages/fetchai/skills/aries_faber/README.md index 6bc07674a7..a6b8fbb08e 100644 --- a/packages/fetchai/skills/aries_faber/README.md +++ b/packages/fetchai/skills/aries_faber/README.md @@ -5,22 +5,23 @@ This skill emulates the Faber actor in this demo. This skill is part of the Fetch.ai Aries demo. It simulates the Faber actor of the demo linked above. It first registers a decentralised ID on an underlying ledger. It then connects with an underlying Aries cloud agent (ACA) instance, and forwards the following instructions: - * register schema definition - * register credential definition - * create an invitation - + +- register schema definition +- register credential definition +- create an invitation + It then sends the invitation detail to an Alice agent that it finds via the sOEF. ## Behaviours -* `faber`: searches for Alice AEA +- `faber`: searches for Alice AEA ## Handlers -* `http`: handles `http` messages for communicating with the ledger and Faber ACA -* `oef_search`: handles `oef_search` messages of finding Alice on the sOEF +- `http`: handles `http` messages for communicating with the ledger and Faber ACA +- `oef_search`: handles `oef_search` messages of finding Alice on the sOEF ## Links -* AEA Aries Demo -* Hyperledger Demo +- AEA Aries Demo +- Hyperledger Demo diff --git a/packages/fetchai/skills/aries_faber/__init__.py b/packages/fetchai/skills/aries_faber/__init__.py index b6af12187f..0e60d6777f 100644 --- a/packages/fetchai/skills/aries_faber/__init__.py +++ b/packages/fetchai/skills/aries_faber/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/aries_faber:0.24.4") +PUBLIC_ID = PublicId.from_str("fetchai/aries_faber:0.24.5") diff --git a/packages/fetchai/skills/aries_faber/behaviours.py b/packages/fetchai/skills/aries_faber/behaviours.py index edab1fc2cc..7bc32d3465 100644 --- a/packages/fetchai/skills/aries_faber/behaviours.py +++ b/packages/fetchai/skills/aries_faber/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/aries_faber/dialogues.py b/packages/fetchai/skills/aries_faber/dialogues.py index fc451579b9..e0c9c613cb 100644 --- a/packages/fetchai/skills/aries_faber/dialogues.py +++ b/packages/fetchai/skills/aries_faber/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/aries_faber/handlers.py b/packages/fetchai/skills/aries_faber/handlers.py index 98aaff14b6..e4303cf1ee 100644 --- a/packages/fetchai/skills/aries_faber/handlers.py +++ b/packages/fetchai/skills/aries_faber/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/aries_faber/skill.yaml b/packages/fetchai/skills/aries_faber/skill.yaml index db1488efba..a96598705c 100644 --- a/packages/fetchai/skills/aries_faber/skill.yaml +++ b/packages/fetchai/skills/aries_faber/skill.yaml @@ -1,26 +1,26 @@ name: aries_faber author: fetchai -version: 0.24.4 +version: 0.24.5 type: skill description: The aries_faber skill implements the faber player in the aries cloud agent demo license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmUQB9uBtWGWY5zETSyJnbPZixRj1c4suedVwGPegrTQWs - __init__.py: Qmeavo5fjyPfAzjhpUoFF2V7oZ6bZxDKcDqTpXc8kNPzYC - behaviours.py: QmZs34mLXAxJfwHa68k4cUMBudrbgHtVnt5o9dXyWbK1P2 - dialogues.py: QmS2ERq7Vb3v3VZTkcM8CupbkAoT74Cn4YQH3RbiW6qDoi - handlers.py: QmXBrxkvsSk7qzDLPZvgzAzRVoT2VjDWAa6V8FVrq3nDrr - strategy.py: QmQ3XiBQPuY3jk9zAaUUxX45jUw4huFTiLoWf8KKkeEE5d + README.md: QmYKuXNqtkUvz4esnYnmg2iUvN3cNKTUzF92NmwPbD66L3 + __init__.py: QmYToaj574eCcrzJ71BKJW4AZFGZ7SyT3Z7RLw3q2AVSiJ + behaviours.py: QmZRkMM7UMa7x6jdUkHyDtGq1kBXVTHDwszcDna3HNQsdE + dialogues.py: QmRXXA2vT1r65yb8iKAdhCbys7s2wy2M9Cjpf6jfEX6KZB + handlers.py: QmfLxGW9MZkA4rkRFrZRLDSyWktrHa42mFRLZ1YPRcWMEi + strategy.py: QmXeDdFngwnNb3F3TYusLX4j2DCCDdbkXTRcHHCa6xV6Wr fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 +- fetchai/http_client:0.24.6 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/http:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/default:1.1.7 +- fetchai/http:1.1.7 +- fetchai/oef_search:1.1.7 skills: [] behaviours: faber: diff --git a/packages/fetchai/skills/aries_faber/strategy.py b/packages/fetchai/skills/aries_faber/strategy.py index 6b21c0f9f6..d042726c83 100644 --- a/packages/fetchai/skills/aries_faber/strategy.py +++ b/packages/fetchai/skills/aries_faber/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/carpark_client/README.md b/packages/fetchai/skills/carpark_client/README.md index 12074901f1..84e642f5fa 100644 --- a/packages/fetchai/skills/carpark_client/README.md +++ b/packages/fetchai/skills/carpark_client/README.md @@ -6,20 +6,18 @@ This skill purchases information on available car parking spaces in a vicinity. This skill finds an agent on the sOEF which sells car park availability data in a vicinity, requests this data, negotiates the price, pays the proposed amount if agreement is reach, and receives the data bought. - ## Behaviours -* `search`: searches for car park data selling service on the sOEF -* `transaction`: sequentially processes transactions' settlements on a blockchain +- `search`: searches for car park data selling service on the sOEF +- `transaction`: sequentially processes transactions' settlements on a blockchain ## Handlers -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages to manage the sellers found -* `signing`: handles `signing` messages for transaction signing by the decision maker - +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages to manage the sellers found +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Links -* Car Park Demo +- Car Park Demo diff --git a/packages/fetchai/skills/carpark_client/__init__.py b/packages/fetchai/skills/carpark_client/__init__.py index 83fab0ca10..431dbdb8d4 100644 --- a/packages/fetchai/skills/carpark_client/__init__.py +++ b/packages/fetchai/skills/carpark_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/carpark_client:0.27.5") +PUBLIC_ID = PublicId.from_str("fetchai/carpark_client:0.27.6") diff --git a/packages/fetchai/skills/carpark_client/behaviours.py b/packages/fetchai/skills/carpark_client/behaviours.py index 6d3046b38a..08b658d2e4 100644 --- a/packages/fetchai/skills/carpark_client/behaviours.py +++ b/packages/fetchai/skills/carpark_client/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/carpark_client/dialogues.py b/packages/fetchai/skills/carpark_client/dialogues.py index 9119acf663..187b2c5ae8 100644 --- a/packages/fetchai/skills/carpark_client/dialogues.py +++ b/packages/fetchai/skills/carpark_client/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/carpark_client/handlers.py b/packages/fetchai/skills/carpark_client/handlers.py index 1e422944e5..b8ecd6410c 100644 --- a/packages/fetchai/skills/carpark_client/handlers.py +++ b/packages/fetchai/skills/carpark_client/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/carpark_client/skill.yaml b/packages/fetchai/skills/carpark_client/skill.yaml index ef1b315178..ead49c6392 100644 --- a/packages/fetchai/skills/carpark_client/skill.yaml +++ b/packages/fetchai/skills/carpark_client/skill.yaml @@ -1,29 +1,29 @@ name: carpark_client author: fetchai -version: 0.27.5 +version: 0.27.6 type: skill description: The carpark client skill implements the functionality to run a client for carpark data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmXD1pndXTJafb8YY4xRTM47LCoeiQ9VxAvzj474TNknT4 - __init__.py: QmR9beUvchRFEMzyxo25vvUPqo6oBuQJy1DoaRR1RGnGSo - behaviours.py: QmNxVQanY9hn7Cp9tfTvJhF7ghLpUBDd8XUVjhfQ5xCsnj - dialogues.py: QmXsn6zXQoqTMQaq86CAEyMJcyN9TQtKH7a5531t3y4x8J - handlers.py: QmbjJFi15fTmvpvZMwkz83vPhw42Kv3E5eXX6yordGsMoc - strategy.py: QmeBdS7qfMfFjty7jCRnuWezsvZSDXwmHZ4NzmEgr6jDm2 + README.md: QmdrvGfoAncV3e76Aiq5irJSKYXXwmhJTv7w8hPoadcFgt + __init__.py: QmVsQFQFm8gBa2cKGmERfJYkq1aufHahgv2p1dF5eRwXhb + behaviours.py: QmSr6fB3N7dhVo1cLY1TGd2q8usjGwNmTCNjBBbtgtVf9j + dialogues.py: QmXgXcs25v9ob9a9XwT49wvK788vbUdZyYxUgG3ndHjrix + handlers.py: QmP3Q6x3NMcWgRi6H5GtDtvnLWSoB1HeG8vTd4zcRZUgNj + strategy.py: QmdHPLehqRr1dxuCbp4ENYmVMb8Ykvzg2Uzfos5kFJSr3D fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 +- fetchai/generic_buyer:0.27.6 behaviours: search: args: diff --git a/packages/fetchai/skills/carpark_client/strategy.py b/packages/fetchai/skills/carpark_client/strategy.py index 1e762d6755..44b1f2e82f 100644 --- a/packages/fetchai/skills/carpark_client/strategy.py +++ b/packages/fetchai/skills/carpark_client/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/carpark_detection/README.md b/packages/fetchai/skills/carpark_detection/README.md index ccd52ff4d1..02408276bf 100644 --- a/packages/fetchai/skills/carpark_detection/README.md +++ b/packages/fetchai/skills/carpark_detection/README.md @@ -8,14 +8,14 @@ This skill is part of the Fetch.ai car park demo. It registers the "car park ava ## Behaviours -* `service_registration`: registers car park info selling service on the sOEF +- `service_registration`: registers car park info selling service on the sOEF ## Handlers -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful ## Links -* Car Park Demo +- Car Park Demo diff --git a/packages/fetchai/skills/carpark_detection/__init__.py b/packages/fetchai/skills/carpark_detection/__init__.py index 92c231b7a5..634f020924 100644 --- a/packages/fetchai/skills/carpark_detection/__init__.py +++ b/packages/fetchai/skills/carpark_detection/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/carpark_detection:0.27.5") +PUBLIC_ID = PublicId.from_str("fetchai/carpark_detection:0.27.6") diff --git a/packages/fetchai/skills/carpark_detection/behaviours.py b/packages/fetchai/skills/carpark_detection/behaviours.py index 91a95317eb..b7615a9acc 100755 --- a/packages/fetchai/skills/carpark_detection/behaviours.py +++ b/packages/fetchai/skills/carpark_detection/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/carpark_detection/database.py b/packages/fetchai/skills/carpark_detection/database.py index 05a47df4b1..496093380e 100644 --- a/packages/fetchai/skills/carpark_detection/database.py +++ b/packages/fetchai/skills/carpark_detection/database.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/carpark_detection/dialogues.py b/packages/fetchai/skills/carpark_detection/dialogues.py index fe0a06a9de..35c98da146 100644 --- a/packages/fetchai/skills/carpark_detection/dialogues.py +++ b/packages/fetchai/skills/carpark_detection/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/carpark_detection/handlers.py b/packages/fetchai/skills/carpark_detection/handlers.py index 41ef6c9eb7..42ac8cf4ad 100644 --- a/packages/fetchai/skills/carpark_detection/handlers.py +++ b/packages/fetchai/skills/carpark_detection/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/carpark_detection/skill.yaml b/packages/fetchai/skills/carpark_detection/skill.yaml index e4afaf9ab6..ce381f405e 100644 --- a/packages/fetchai/skills/carpark_detection/skill.yaml +++ b/packages/fetchai/skills/carpark_detection/skill.yaml @@ -1,30 +1,30 @@ name: carpark_detection author: fetchai -version: 0.27.5 +version: 0.27.6 type: skill description: The carpark detection skill implements the detection and trading functionality for a carpark agent. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: Qmd5Xe9jY8AjJjFR5QY7L9QQ3AeCEKx837UgiGuf3BSRVN - __init__.py: QmXKcQXDZZbVq1n89TKCXWfe8cJmp1rsCQ3k3EA9RQBm96 - behaviours.py: QmZjzKKQp6SiNzkx4Vvzz5S3yoc6hy2S879uEfyFrEhedN - database.py: QmXp1j6RRjspqKeN9RSevRgsSA4cyzW6kcn35863Rc7vQS - dialogues.py: QmXxgcYDTbUb68kZdftmQgpQLL4EqnJK6uUpjhbxEfLvks - handlers.py: QmUxxFrbjYiE72rDcXymb9yF1WP7rnJ3jj6ysF8HYoDdzA - strategy.py: Qma3PfdFiTg2JY6Mkir4t96X1hpnzVASQ34SBkfRoUkZa6 + README.md: QmZYxDqNu3RnTkhNCgp7VPBMpYxaqRT4Hb64ipgYvgJ5wn + __init__.py: QmSiwGgkdvRNCiyF4EBEvoDpBFa5hBGLQ1F93Sd4byZ9bi + behaviours.py: QmYgNwz5EA4yhEnMyiV3oe16g1MAKpFPJsTENfkVMySfr8 + database.py: QmQ2Gh58YtC1eHAu1bavLPh6D9xeDaAGgye8vG2Z1SYjgA + dialogues.py: QmZckK3x2oPgXmnP4XaEBJQoaPp8Gh4ojDHnxzeNsTf4tC + handlers.py: QmecBakMGUcam9w9hzTv5Tdi3DrABqsoDYHgk9XojEv8Ay + strategy.py: QmTHYX6BzXApbJnrYUMmtPPf7Ye388mQEhJ1gtURU9UV5c fingerprint_ignore_patterns: - temp_files_placeholder/* connections: [] contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 skills: -- fetchai/generic_seller:0.28.5 +- fetchai/generic_seller:0.28.6 behaviours: service_registration: args: diff --git a/packages/fetchai/skills/carpark_detection/strategy.py b/packages/fetchai/skills/carpark_detection/strategy.py index 2d9a1dd2a6..e0ff9c660e 100644 --- a/packages/fetchai/skills/carpark_detection/strategy.py +++ b/packages/fetchai/skills/carpark_detection/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw1/README.md b/packages/fetchai/skills/confirmation_aw1/README.md index e7da239aa6..84beb04f62 100644 --- a/packages/fetchai/skills/confirmation_aw1/README.md +++ b/packages/fetchai/skills/confirmation_aw1/README.md @@ -6,15 +6,15 @@ The `confirmation_aw1` skill is for handling registrations in Agent World 1. ## Behaviours -* `transaction`: sequentially processes transactions' settlements on a blockchain +- `transaction`: sequentially processes transactions' settlements on a blockchain ## Handlers -* `contract_api`: handles `contract_api` messages for communication with a staking contract -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `registration`: handles `register` messages for registration requests -* `signing`: handles `signing` messages for transaction signing by the decision maker +- `contract_api`: handles `contract_api` messages for communication with a staking contract +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `registration`: handles `register` messages for registration requests +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Models -* `strategy`: contains the confirmation configuration +- `strategy`: contains the confirmation configuration diff --git a/packages/fetchai/skills/confirmation_aw1/__init__.py b/packages/fetchai/skills/confirmation_aw1/__init__.py index fe60f331e0..4bfb180d81 100644 --- a/packages/fetchai/skills/confirmation_aw1/__init__.py +++ b/packages/fetchai/skills/confirmation_aw1/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/confirmation_aw1:0.15.5") +PUBLIC_ID = PublicId.from_str("fetchai/confirmation_aw1:0.15.6") diff --git a/packages/fetchai/skills/confirmation_aw1/behaviours.py b/packages/fetchai/skills/confirmation_aw1/behaviours.py index 8c2ec11700..ab9dda652e 100644 --- a/packages/fetchai/skills/confirmation_aw1/behaviours.py +++ b/packages/fetchai/skills/confirmation_aw1/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw1/dialogues.py b/packages/fetchai/skills/confirmation_aw1/dialogues.py index 1e0176389a..64e789ceb3 100644 --- a/packages/fetchai/skills/confirmation_aw1/dialogues.py +++ b/packages/fetchai/skills/confirmation_aw1/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw1/handlers.py b/packages/fetchai/skills/confirmation_aw1/handlers.py index 5e17b55f8b..e0cb69315d 100644 --- a/packages/fetchai/skills/confirmation_aw1/handlers.py +++ b/packages/fetchai/skills/confirmation_aw1/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw1/registration_db.py b/packages/fetchai/skills/confirmation_aw1/registration_db.py index 4767668600..f6cab88fda 100644 --- a/packages/fetchai/skills/confirmation_aw1/registration_db.py +++ b/packages/fetchai/skills/confirmation_aw1/registration_db.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw1/skill.yaml b/packages/fetchai/skills/confirmation_aw1/skill.yaml index 238603ff4a..40d66d283e 100644 --- a/packages/fetchai/skills/confirmation_aw1/skill.yaml +++ b/packages/fetchai/skills/confirmation_aw1/skill.yaml @@ -1,29 +1,29 @@ name: confirmation_aw1 author: fetchai -version: 0.15.5 +version: 0.15.6 type: skill description: The confirmation_aw1 skill is a skill to confirm registration for Agent World 1. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmWEG3A5xRL3yf65UHfrKhUwazR5bjpxSiuuBGMYX7t7Co - __init__.py: QmQFGBtSvLuKnP4MWr7efdpj17ja8iRuk7kvgzDscyLpiF - behaviours.py: QmcJp8utQMCpumxTc4maq3wSF26QTGNTXpREJqDgp5mgBY - dialogues.py: QmRxYEHjtqufhnt8ZjKCKTrbXhtMb2H6zjqe44Y7Ce89AD - handlers.py: QmTZprqCCRZDPLHzuxMdQtfWnfmqAedY6wbCUhfB4uPqyb - registration_db.py: QmWXJV77CLYmuV3YMEozAgmDbXqA4DZpWuowNhbpKyhtsU - strategy.py: QmZhVufxhN2MbNEjEQcGQkoGzjnsUBX8bDQEAHyZZQXmHM + README.md: QmaGTwfKyYVAJEfqHjGVViTYer2f3JJj22ftQH19NuA3eQ + __init__.py: QmcNQVFKDuc6tFhTJzWvQnZkLXiiDCy1eUoAH9FYoGnrNw + behaviours.py: QmZVaGLyZZZJu5HBR1rNukpfnvpvEFxn8tA2JKL8JgFWUB + dialogues.py: QmQnYQyRtmFYhHxCirxg5vchWSogwnKVEgozKBwL19svGe + handlers.py: QmNsrvzaLfxHwd51ssWZjTGoVMvzemWamqLXN2oLW4gf95 + registration_db.py: QmWWYUrickqQsp1CCxGwJdW67qBb9brbAEHAJGCFUWQ7Fc + strategy.py: QmUfD9UH7UrPLG25RPB7qr1fS9wvCoc8eb3BALttY12REW fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: -- fetchai/staking_erc20:0.10.2 +- fetchai/staking_erc20:0.10.3 protocols: -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/register:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/register:1.1.7 +- fetchai/signing:1.1.7 skills: [] behaviours: transaction: diff --git a/packages/fetchai/skills/confirmation_aw1/strategy.py b/packages/fetchai/skills/confirmation_aw1/strategy.py index 062fab5cd3..479eb9d508 100644 --- a/packages/fetchai/skills/confirmation_aw1/strategy.py +++ b/packages/fetchai/skills/confirmation_aw1/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw2/README.md b/packages/fetchai/skills/confirmation_aw2/README.md index 8563297198..eeb564b10a 100644 --- a/packages/fetchai/skills/confirmation_aw2/README.md +++ b/packages/fetchai/skills/confirmation_aw2/README.md @@ -6,21 +6,19 @@ This skill purchases information from other agents as specified in its configura This skill searches for an agent in a vicinity on the sOEF that sells the data this skill is configured to buy. Once it found some agents which match Agent World 2 criteria, it requests this data, negotiates the price, pays the proposed amount if agreement is reached, and receives the data bought. - ## Behaviours -* `search`: searches for data selling service on the sOEF -* `transaction`: sequentially processes transactions' settlements on a blockchain +- `search`: searches for data selling service on the sOEF +- `transaction`: sequentially processes transactions' settlements on a blockchain ## Handlers -* `default`: handles `default` messages for registration -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages to manage the sellers found -* `signing`: handles `signing` messages for transaction signing by the decision maker - +- `default`: handles `default` messages for registration +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages to manage the sellers found +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Models -* `strategy`: allows the configuration of the purchasing. In particular, location and `search_radius` together determine the vicinity where the service is searched for, `search_query` specifies the query, and the remaining configuration specifies the terms of trade. Also, rules regarding Agent World 2 are enforced. +- `strategy`: allows the configuration of the purchasing. In particular, location and `search_radius` together determine the vicinity where the service is searched for, `search_query` specifies the query, and the remaining configuration specifies the terms of trade. Also, rules regarding Agent World 2 are enforced. diff --git a/packages/fetchai/skills/confirmation_aw2/__init__.py b/packages/fetchai/skills/confirmation_aw2/__init__.py index a103a9e080..5ced11fea4 100644 --- a/packages/fetchai/skills/confirmation_aw2/__init__.py +++ b/packages/fetchai/skills/confirmation_aw2/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/confirmation_aw2:0.13.5") +PUBLIC_ID = PublicId.from_str("fetchai/confirmation_aw2:0.13.6") diff --git a/packages/fetchai/skills/confirmation_aw2/behaviours.py b/packages/fetchai/skills/confirmation_aw2/behaviours.py index 6d3046b38a..08b658d2e4 100644 --- a/packages/fetchai/skills/confirmation_aw2/behaviours.py +++ b/packages/fetchai/skills/confirmation_aw2/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw2/dialogues.py b/packages/fetchai/skills/confirmation_aw2/dialogues.py index 9119acf663..187b2c5ae8 100644 --- a/packages/fetchai/skills/confirmation_aw2/dialogues.py +++ b/packages/fetchai/skills/confirmation_aw2/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw2/handlers.py b/packages/fetchai/skills/confirmation_aw2/handlers.py index ecb341e50f..13e18ae83a 100644 --- a/packages/fetchai/skills/confirmation_aw2/handlers.py +++ b/packages/fetchai/skills/confirmation_aw2/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw2/registration_db.py b/packages/fetchai/skills/confirmation_aw2/registration_db.py index c81faf4807..df12f70c10 100644 --- a/packages/fetchai/skills/confirmation_aw2/registration_db.py +++ b/packages/fetchai/skills/confirmation_aw2/registration_db.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw2/skill.yaml b/packages/fetchai/skills/confirmation_aw2/skill.yaml index 45bdce0dc5..d765c2a592 100644 --- a/packages/fetchai/skills/confirmation_aw2/skill.yaml +++ b/packages/fetchai/skills/confirmation_aw2/skill.yaml @@ -1,31 +1,31 @@ name: confirmation_aw2 author: fetchai -version: 0.13.5 +version: 0.13.6 type: skill description: This skill purchases information from other agents as specified in its configuration. It is the confirmation buyer for Agent World 2. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmQtVnRU5nNhxkaVKX6Go5G4X5dVcocLGM5uynZ1wzHCKK - __init__.py: QmeVrhVYfCDiyBJRW7FmpWx6QHW7W7waMaRTiYMcEwUVxw - behaviours.py: QmNxVQanY9hn7Cp9tfTvJhF7ghLpUBDd8XUVjhfQ5xCsnj - dialogues.py: QmXsn6zXQoqTMQaq86CAEyMJcyN9TQtKH7a5531t3y4x8J - handlers.py: QmZWWcnX8LfACWBhYe3UAVKoXuFbbqXAM5aw2ZY9NpZiFL - registration_db.py: QmNkLosYVGuxkaybMCuAbMXtaEBXZHRdsVFSvreUiSWjCG - strategy.py: QmUfyuL7qLAWBEaPdzUoREVpYBES4JJEbT6cJ2tpwz5uPS + README.md: QmSQgVJrmh5XBGLKVmzEzUVmeEr6BmZmeWebqixq6EBftd + __init__.py: QmT9TnpHa8E3EGvPupDbjTJm3quhLTgUGAYjPXKGVnbsYs + behaviours.py: QmSr6fB3N7dhVo1cLY1TGd2q8usjGwNmTCNjBBbtgtVf9j + dialogues.py: QmXgXcs25v9ob9a9XwT49wvK788vbUdZyYxUgG3ndHjrix + handlers.py: QmNvKz36cN7H53yUpdW7GDAFbk5YThSVnFd691GLi3N4uN + registration_db.py: QmW4h9dsk7V5JmAwyJArYsAdUeKNKWL2q4cPK6FXpZV21C + strategy.py: QmYAdTnztBNQXDp3CqMx1PEVhtz3zFdcLuQz8muZysDfyj fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 +- fetchai/generic_buyer:0.27.6 behaviours: search: args: diff --git a/packages/fetchai/skills/confirmation_aw2/strategy.py b/packages/fetchai/skills/confirmation_aw2/strategy.py index 9c5140ea25..551acaea3c 100644 --- a/packages/fetchai/skills/confirmation_aw2/strategy.py +++ b/packages/fetchai/skills/confirmation_aw2/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw3/README.md b/packages/fetchai/skills/confirmation_aw3/README.md index 50e1c8bb1a..3f4afd8bb6 100644 --- a/packages/fetchai/skills/confirmation_aw3/README.md +++ b/packages/fetchai/skills/confirmation_aw3/README.md @@ -6,21 +6,19 @@ This skill purchases information from other agents as specified in its configura This skill searches for an agent in a vicinity on the sOEF that sells the data this skill is configured to buy. Once it found some agents which match Agent World 3 criteria, it requests this data, negotiates the price, pays the proposed amount if agreement is reached, and receives the data bought. The skill just randomly selects the location in which it searches and the query from a list. On each search it completes as many trade as possible. - ## Behaviours -* `search`: searches for data selling service on the sOEF -* `transaction`: sequentially processes transactions' settlements on a blockchain +- `search`: searches for data selling service on the sOEF +- `transaction`: sequentially processes transactions' settlements on a blockchain ## Handlers -* `default`: handles `default` messages for registration -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages to manage the sellers found -* `signing`: handles `signing` messages for transaction signing by the decision maker - +- `default`: handles `default` messages for registration +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages to manage the sellers found +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Models -* `strategy`: allows the configuration of the purchasing. In particular, location and `search_radius` together determine the vicinity where the service is searched for, `search_query` specifies the query, and the remaining configuration specifies the terms of trade. Also, rules regarding Agent World 3 are enforced. +- `strategy`: allows the configuration of the purchasing. In particular, location and `search_radius` together determine the vicinity where the service is searched for, `search_query` specifies the query, and the remaining configuration specifies the terms of trade. Also, rules regarding Agent World 3 are enforced. diff --git a/packages/fetchai/skills/confirmation_aw3/__init__.py b/packages/fetchai/skills/confirmation_aw3/__init__.py index d4f46874cf..9597c6e374 100644 --- a/packages/fetchai/skills/confirmation_aw3/__init__.py +++ b/packages/fetchai/skills/confirmation_aw3/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/confirmation_aw3:0.12.5") +PUBLIC_ID = PublicId.from_str("fetchai/confirmation_aw3:0.12.6") diff --git a/packages/fetchai/skills/confirmation_aw3/behaviours.py b/packages/fetchai/skills/confirmation_aw3/behaviours.py index ce6d6da35a..da3216df05 100644 --- a/packages/fetchai/skills/confirmation_aw3/behaviours.py +++ b/packages/fetchai/skills/confirmation_aw3/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw3/dialogues.py b/packages/fetchai/skills/confirmation_aw3/dialogues.py index 0527b3ce9b..b0fdfba9d2 100644 --- a/packages/fetchai/skills/confirmation_aw3/dialogues.py +++ b/packages/fetchai/skills/confirmation_aw3/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw3/handlers.py b/packages/fetchai/skills/confirmation_aw3/handlers.py index 5147aeab76..b406b16754 100644 --- a/packages/fetchai/skills/confirmation_aw3/handlers.py +++ b/packages/fetchai/skills/confirmation_aw3/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw3/registration_db.py b/packages/fetchai/skills/confirmation_aw3/registration_db.py index ebeb385d45..6eda384742 100644 --- a/packages/fetchai/skills/confirmation_aw3/registration_db.py +++ b/packages/fetchai/skills/confirmation_aw3/registration_db.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/confirmation_aw3/skill.yaml b/packages/fetchai/skills/confirmation_aw3/skill.yaml index 218eed8938..c8cf9b7c3d 100644 --- a/packages/fetchai/skills/confirmation_aw3/skill.yaml +++ b/packages/fetchai/skills/confirmation_aw3/skill.yaml @@ -1,32 +1,32 @@ name: confirmation_aw3 author: fetchai -version: 0.12.5 +version: 0.12.6 type: skill description: This skill purchases information from other agents as specified in its configuration. It is the confirmation buyer for Agent World 3. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmNecTgkCBTBCsNB4B5o3YVwdAC3xozJodg8NiAWMT1zyf - __init__.py: QmcuiqqbmrK61yQJrmxfiyuuzNttomeMDecHvPvDyRsjcv - behaviours.py: QmWiYyLUczqz1AXx5iV16nHAqG9hAJ1j9Hupcym7b8eYvY - dialogues.py: QmeB3PdnEK5Zfb7TBh2rLZ63azwwHeNGaNH2G5vg6FkewT - handlers.py: QmP7tP5BicHvVNKm1ejSi1Z6ZpTL9YubeS9yMCGqgro4wx - registration_db.py: QmX4jTkKq1gW3q4rTphGYE8B2HK9hQ8Avuor76EPFW8ch8 - strategy.py: QmYtFuuv1SevjmsdcvZTGszTS92wuA4RP5StJJaieEtWmi + README.md: Qmc4XzqCbGB6mS17ZuvW2xuYnR796NX5KD3fyaNqchLirS + __init__.py: QmSDPS2qm1UPFGfhMtKnSrAKsksRSuypqwF1rw1AP5PTEQ + behaviours.py: QmagZNufvC8QgMRkPokWg71Gg2nbNSL5bBurxZtvgpGVhw + dialogues.py: QmXzPttMCTFQxh7R1BXzqFcdezGp7yybstkZDPJFzjECMM + handlers.py: QmSBUW5akPUegJqSAThyEtPtkhiFwTNQ7iqdadeztGAwhB + registration_db.py: QmPXfcm3mmJyaTfyKvEdwSVhwtrA4aTiBQLENDNUHmzMvc + strategy.py: QmaSrYsAtniAEpW5NrnqBqQiBfvhhSZ6aBWRFDtXowJjQJ fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 -- fetchai/ledger:0.21.4 +- fetchai/http_client:0.24.6 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 +- fetchai/generic_buyer:0.27.6 behaviours: search: args: diff --git a/packages/fetchai/skills/confirmation_aw3/strategy.py b/packages/fetchai/skills/confirmation_aw3/strategy.py index eea9511dd2..a5c1d9b6c3 100644 --- a/packages/fetchai/skills/confirmation_aw3/strategy.py +++ b/packages/fetchai/skills/confirmation_aw3/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/echo/README.md b/packages/fetchai/skills/echo/README.md index 77e2132c58..371ee0c9b8 100644 --- a/packages/fetchai/skills/echo/README.md +++ b/packages/fetchai/skills/echo/README.md @@ -4,15 +4,15 @@ This skill sends back the contents of any message it receives. -## Behaviours +## Behaviours -* `echo`: outputs messages +- `echo`: outputs messages ## Handlers -* `echo`: handles `default` messages for echoing back the contents of any message received +- `echo`: handles `default` messages for echoing back the contents of any message received ## Links -* Quick Start -* Programmatically Build an AEA \ No newline at end of file +- Quick Start +- Programmatically Build an AEA diff --git a/packages/fetchai/skills/echo/__init__.py b/packages/fetchai/skills/echo/__init__.py index f50f90f05d..a82c70df13 100644 --- a/packages/fetchai/skills/echo/__init__.py +++ b/packages/fetchai/skills/echo/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/echo:0.20.5") +PUBLIC_ID = PublicId.from_str("fetchai/echo:0.20.6") diff --git a/packages/fetchai/skills/echo/behaviours.py b/packages/fetchai/skills/echo/behaviours.py index 1c5448fd2e..37d7a5af13 100644 --- a/packages/fetchai/skills/echo/behaviours.py +++ b/packages/fetchai/skills/echo/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/echo/dialogues.py b/packages/fetchai/skills/echo/dialogues.py index a2c81d9c4e..8332bbf3e7 100644 --- a/packages/fetchai/skills/echo/dialogues.py +++ b/packages/fetchai/skills/echo/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/echo/handlers.py b/packages/fetchai/skills/echo/handlers.py index 46d8f6a811..6b1b80c280 100644 --- a/packages/fetchai/skills/echo/handlers.py +++ b/packages/fetchai/skills/echo/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/echo/skill.yaml b/packages/fetchai/skills/echo/skill.yaml index c5c496e4dd..52dbaa32f7 100644 --- a/packages/fetchai/skills/echo/skill.yaml +++ b/packages/fetchai/skills/echo/skill.yaml @@ -1,21 +1,21 @@ name: echo author: fetchai -version: 0.20.5 +version: 0.20.6 type: skill description: The echo skill implements simple echo functionality. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmX9GoSQWdmvvWuf3VZjKy5fSAARmrLVxUpu2eGrXzocHB - __init__.py: QmWZ2UjpmaE9hK8SUzAiER55bSPBoJKgMTTiHpVR4ufZD1 - behaviours.py: QmZSXapknX7r59ADDvB6Dz1Ftkep6e7Sx2kDXJz3gaeX6q - dialogues.py: QmeWJaRDwbXELrztozxB9ZaGYUJ34jicahsJZUwLmzkm7D - handlers.py: QmNSCEpHFBEXDRR2oDh1PndTSubqtjThZAcvHuzNRzD7z6 + README.md: QmNijzN1uUKmcH64VUGCfZBDzAnJjkqjUrnFALVaAceU6i + __init__.py: QmNPzngDudTFkW8jKh61U9fPKHKR1m5iPsTAqBbM8X1nqa + behaviours.py: QmRAFuVFQr6LkXLU8jMkHksd2YUiTrx2ABSSTZgFrJpFxT + dialogues.py: QmeV9E8Qf5cLCjWD3F5MLthpoP5oZwr52RJrAXc4p9ZntY + handlers.py: QmPFAH8Ae3wKxZxu2xn2XAftgjg1cv9vaxdFqr3FJAfnTG fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/default:1.1.6 +- fetchai/default:1.1.7 skills: [] behaviours: echo: diff --git a/packages/fetchai/skills/erc1155_client/README.md b/packages/fetchai/skills/erc1155_client/README.md index 8eba9abf4c..6e1c0dc0e4 100644 --- a/packages/fetchai/skills/erc1155_client/README.md +++ b/packages/fetchai/skills/erc1155_client/README.md @@ -6,20 +6,18 @@ This is a skill for demoing the purchase of data via a smart contract. This skill finds an `ERC1155 contract deployment AEA` on the sOEF, requests specific data, negotiates the price, pays the proposed amount via smart contract if agreement is reach, and receives the data bought. - ## Behaviours -* `search`: searches for the ERC1155 deployment agent on the sOEF +- `search`: searches for the ERC1155 deployment agent on the sOEF ## Handlers -* `contract_api`: handles `contract_api` messages for interactions with the smart contract -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages to manage the sellers found -* `signing`: handles `signing` messages for transaction signing by the decision maker - +- `contract_api`: handles `contract_api` messages for interactions with the smart contract +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages to manage the sellers found +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Links -* Contract Deployment Guide +- Contract Deployment Guide diff --git a/packages/fetchai/skills/erc1155_client/__init__.py b/packages/fetchai/skills/erc1155_client/__init__.py index 42797cbadb..e069284100 100644 --- a/packages/fetchai/skills/erc1155_client/__init__.py +++ b/packages/fetchai/skills/erc1155_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/erc1155_client:0.29.5") +PUBLIC_ID = PublicId.from_str("fetchai/erc1155_client:0.29.6") diff --git a/packages/fetchai/skills/erc1155_client/behaviours.py b/packages/fetchai/skills/erc1155_client/behaviours.py index a524ed849a..202e1b509f 100644 --- a/packages/fetchai/skills/erc1155_client/behaviours.py +++ b/packages/fetchai/skills/erc1155_client/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/erc1155_client/dialogues.py b/packages/fetchai/skills/erc1155_client/dialogues.py index a6f89a2d69..5866b029b4 100644 --- a/packages/fetchai/skills/erc1155_client/dialogues.py +++ b/packages/fetchai/skills/erc1155_client/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/erc1155_client/handlers.py b/packages/fetchai/skills/erc1155_client/handlers.py index 96b87180f0..a8c74bc1df 100644 --- a/packages/fetchai/skills/erc1155_client/handlers.py +++ b/packages/fetchai/skills/erc1155_client/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/erc1155_client/skill.yaml b/packages/fetchai/skills/erc1155_client/skill.yaml index 050bd9ceba..fa0a06f8c8 100644 --- a/packages/fetchai/skills/erc1155_client/skill.yaml +++ b/packages/fetchai/skills/erc1155_client/skill.yaml @@ -1,30 +1,30 @@ name: erc1155_client author: fetchai -version: 0.29.5 +version: 0.29.6 type: skill description: The erc1155 client interacts with the erc1155 deployer to conduct an atomic swap. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmWwmYKMpr8A9VsN1dNAi8BdfkbVhFVrDfaSZeEgwgcVGv - __init__.py: Qmf6krUmTWEgAJDVVCNUi9mMQXowXe8QQPUFD3thA1m1Sa - behaviours.py: QmcnYqEA9r9XtofBKw16JWgjdaUBZMysDhvB1bzWvwqTfr - dialogues.py: Qmf4EVwfeExPBPPpZoiNZKBHdLbefcJgYPkRobKv66AFAz - handlers.py: QmQ6LBDKT9tvCHqCFmWv4mcu84RaAME878acCY7b3UYodb - strategy.py: QmdVRFdLtzU9i7DFLDqPMAV3RYb3nbRjBXMyp96d9pDGhj + README.md: QmYpkQVUiWY7aWc8xN8FMzxKWSawHs2cyjWijzK6PDbsLX + __init__.py: QmXJGNqfPNrhiwQoZZySRPGbP8dPgKnyQ3ZvRhrK11e3Ve + behaviours.py: QmQohMmSi8PYAeyjGcusSaMbEAeSsVXGcVtS5XZjLgdPg1 + dialogues.py: QmVFyavVzUv88AZGD8Wca4yyV4y9DU3Akw5M4RFxqnAnUm + handlers.py: QmcxgzUjJyGUH5idHEfD8dn5mScTEzzMRoUhQ7ExwFQHud + strategy.py: QmWtHkAyvkYZdHNZoc6r12cfJfruT1S9GXydeH9qUFDN7X fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: [] behaviours: search: diff --git a/packages/fetchai/skills/erc1155_client/strategy.py b/packages/fetchai/skills/erc1155_client/strategy.py index 00d960d9ed..c293e44edd 100644 --- a/packages/fetchai/skills/erc1155_client/strategy.py +++ b/packages/fetchai/skills/erc1155_client/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/erc1155_deploy/README.md b/packages/fetchai/skills/erc1155_deploy/README.md index b74595aaa3..9fc6b89cf7 100644 --- a/packages/fetchai/skills/erc1155_deploy/README.md +++ b/packages/fetchai/skills/erc1155_deploy/README.md @@ -8,16 +8,16 @@ This skill registers some data selling service on the sOEF. It can be requested ## Behaviours -* `service_registration`: Deploys the smart contract, creates and mints tokens, registers `ERC1155 data selling service` on the sOEF +- `service_registration`: Deploys the smart contract, creates and mints tokens, registers `ERC1155 data selling service` on the sOEF ## Handlers -* `contract_api`: handles `contract_api` messages for interactions with the smart contract -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger. -* `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful -* `signing`: handles `signing` messages for transaction signing by the decision maker +- `contract_api`: handles `contract_api` messages for interactions with the smart contract +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger. +- `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Links -* Contract Deployment Guide +- Contract Deployment Guide diff --git a/packages/fetchai/skills/erc1155_deploy/__init__.py b/packages/fetchai/skills/erc1155_deploy/__init__.py index 8844e66a6b..17ba5372f5 100644 --- a/packages/fetchai/skills/erc1155_deploy/__init__.py +++ b/packages/fetchai/skills/erc1155_deploy/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/erc1155_deploy:0.31.5") +PUBLIC_ID = PublicId.from_str("fetchai/erc1155_deploy:0.31.6") diff --git a/packages/fetchai/skills/erc1155_deploy/behaviours.py b/packages/fetchai/skills/erc1155_deploy/behaviours.py index f1ecf362c5..58900cd033 100644 --- a/packages/fetchai/skills/erc1155_deploy/behaviours.py +++ b/packages/fetchai/skills/erc1155_deploy/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/erc1155_deploy/dialogues.py b/packages/fetchai/skills/erc1155_deploy/dialogues.py index 4d55bbf127..b74f24e98b 100644 --- a/packages/fetchai/skills/erc1155_deploy/dialogues.py +++ b/packages/fetchai/skills/erc1155_deploy/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/erc1155_deploy/handlers.py b/packages/fetchai/skills/erc1155_deploy/handlers.py index a370315561..18f9eb7935 100644 --- a/packages/fetchai/skills/erc1155_deploy/handlers.py +++ b/packages/fetchai/skills/erc1155_deploy/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/erc1155_deploy/skill.yaml b/packages/fetchai/skills/erc1155_deploy/skill.yaml index 372a3866d3..8f254445a4 100644 --- a/packages/fetchai/skills/erc1155_deploy/skill.yaml +++ b/packages/fetchai/skills/erc1155_deploy/skill.yaml @@ -1,30 +1,30 @@ name: erc1155_deploy author: fetchai -version: 0.31.5 +version: 0.31.6 type: skill description: The ERC1155 deploy skill has the ability to deploy and interact with the smart contract. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmNg45JuqfVzDmvgpWLeaR861LSEvf9pishDKSPihtQnLE - __init__.py: QmSbFFinkXE4yB3NJGqqk5RTRzXv4GRAPbe78UYsZb2j7D - behaviours.py: QmQtMjETXT5REA6EiCxh1SmDFJrcCT9P7s3XyNS3mxXgqv - dialogues.py: QmYwMGDxdnspe7CsnQQ6GfyctfunqmvJqjkAB5PrYFwsm4 - handlers.py: QmPixbfoZiXu6kpTPy2ZbJjEcvzPqu6PEyeuDq56gCThBd - strategy.py: QmaXBe9v7MJ4RpUwJ3jN6Y2Np1vXdAkgK5ZChPGtqHfJPk + README.md: QmX98yCz4tVKF5dJUDUVh6T4vD3y9Gv42semKkpckqXjAA + __init__.py: QmbtD65LEy39PpMtRMfXtR5D5JXALiuWNuTSoqoCpvDLsG + behaviours.py: QmXxfA42Zi2eYgfRQEKDxcotw628KTTRPTCyeJv6aBJmuH + dialogues.py: QmRsL56kWqrs6pf8MKBdU1bxrYpuwgt63yugtMYnjWmzvo + handlers.py: QmeNBxsimbf9wjQ5Yar8NfUdzRKbpvVys3LA8Hdirk7QeZ + strategy.py: QmR5ZEaGtBW57EJoGMVfKZGoPvFdzecwA4mmsWm1aomcB5 fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: [] behaviours: service_registration: diff --git a/packages/fetchai/skills/erc1155_deploy/strategy.py b/packages/fetchai/skills/erc1155_deploy/strategy.py index 8d43e6f85c..cebabc8830 100644 --- a/packages/fetchai/skills/erc1155_deploy/strategy.py +++ b/packages/fetchai/skills/erc1155_deploy/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/error/README.md b/packages/fetchai/skills/error/README.md index fcd2160739..0a88385b67 100644 --- a/packages/fetchai/skills/error/README.md +++ b/packages/fetchai/skills/error/README.md @@ -10,7 +10,6 @@ It handles the following cases: - AEA experiences a decoding error when reading an envelope, - AEA receives an envelope referencing a protocol for which no skill is active. - ## Handlers -* `error_handler`: handles `default` messages for problematic envelopes/messages. +- `error_handler`: handles `default` messages for problematic envelopes/messages. diff --git a/packages/fetchai/skills/error/__init__.py b/packages/fetchai/skills/error/__init__.py index 6b2f45c3f0..e568ddd494 100644 --- a/packages/fetchai/skills/error/__init__.py +++ b/packages/fetchai/skills/error/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/error:0.18.5") +PUBLIC_ID = PublicId.from_str("fetchai/error:0.18.6") diff --git a/packages/fetchai/skills/error/handlers.py b/packages/fetchai/skills/error/handlers.py index 4db080327d..8fc2b18ed7 100644 --- a/packages/fetchai/skills/error/handlers.py +++ b/packages/fetchai/skills/error/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/error/skill.yaml b/packages/fetchai/skills/error/skill.yaml index 2a83dff15b..9ccdff06f4 100644 --- a/packages/fetchai/skills/error/skill.yaml +++ b/packages/fetchai/skills/error/skill.yaml @@ -1,19 +1,19 @@ name: error author: fetchai -version: 0.18.5 +version: 0.18.6 type: skill description: The error skill implements basic error handling required by all AEAs. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmXqqMwZhZWcrUFxQ4S9FsFsUw5RmMaDQwR9LcKUrRTpH7 - __init__.py: QmbZzvvHCjbFg5rA7LRSTAiX1nhgEU77bHrBfmYibRYurQ - handlers.py: QmbP1n9SQCxv47ZYYUugysCsWx1hj5LA1R9z7a1envwfZ2 + README.md: QmNw5XkR9DfMycuD3j7dpGdvnyQEZTBRoYdraFiTXYTLkv + __init__.py: QmPNutzpA7C3YzSNpnKYY6fRkXiyx8HwZW1CEjiPJ56CJv + handlers.py: QmfEqAzS2PTcxrgh7crVrvuDVkjF3Fa2GndRyUu8UPUSq4 fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/default:1.1.6 +- fetchai/default:1.1.7 skills: [] behaviours: {} handlers: diff --git a/packages/fetchai/skills/error_test_skill/README.md b/packages/fetchai/skills/error_test_skill/README.md index 4c46d680d0..cda2fba099 100644 --- a/packages/fetchai/skills/error_test_skill/README.md +++ b/packages/fetchai/skills/error_test_skill/README.md @@ -4,9 +4,9 @@ Skill raises an exception on behaviour's act -## Behaviours +## Behaviours -* RaiseError - just raises an error on act +- RaiseError - just raises an error on act ## Handlers diff --git a/packages/fetchai/skills/error_test_skill/__init__.py b/packages/fetchai/skills/error_test_skill/__init__.py index 43ff8a5dff..402f25d6fb 100644 --- a/packages/fetchai/skills/error_test_skill/__init__.py +++ b/packages/fetchai/skills/error_test_skill/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/error_test_skill:0.1.1") +PUBLIC_ID = PublicId.from_str("fetchai/error_test_skill:0.1.2") diff --git a/packages/fetchai/skills/error_test_skill/behaviours.py b/packages/fetchai/skills/error_test_skill/behaviours.py index ba12d48dc8..96b01019f9 100644 --- a/packages/fetchai/skills/error_test_skill/behaviours.py +++ b/packages/fetchai/skills/error_test_skill/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/error_test_skill/skill.yaml b/packages/fetchai/skills/error_test_skill/skill.yaml index bbbc53d7cd..520babe267 100644 --- a/packages/fetchai/skills/error_test_skill/skill.yaml +++ b/packages/fetchai/skills/error_test_skill/skill.yaml @@ -1,14 +1,14 @@ name: error_test_skill author: fetchai -version: 0.1.1 +version: 0.1.2 type: skill description: The error test skil for testing. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmagPotUCmCn9Ht33h3TL4VFX8g4gqB7UMTKzpXMvy6Nq9 - __init__.py: QmP45QipKMWkK2xK879WiFe7dweFojeq8uADYUC8sRvcMb - behaviours.py: QmZHtn1E5rK2YZwT4kRCZnRSdiMGhCSjpg9crx5rLVGdJS + README.md: QmWt4ZwTxErR6E8jhJGNoL7aJ2Re1W9WjZ9J13gh2xzKeX + __init__.py: QmeCKAnqeT1GdRGtj8sJBvUw5BnP6aVDzpDdsCSGj3fZCP + behaviours.py: Qmcfd3fEUiKgSPcXpeTMtCojfjpGBc9LjRwx3X22TsMxKW fingerprint_ignore_patterns: [] connections: [] contracts: [] diff --git a/packages/fetchai/skills/fetch_block/README.md b/packages/fetchai/skills/fetch_block/README.md index fcf54305c5..85fd3a95b5 100644 --- a/packages/fetchai/skills/fetch_block/README.md +++ b/packages/fetchai/skills/fetch_block/README.md @@ -6,8 +6,8 @@ This skill is used to get the latest block data from the Fetch ledger. ## Behaviours -* `fetch_block_behaviour`: requests latest block data every `tick_interval` seconds from the REST endpoint for the FetchAI ledger. +- `fetch_block_behaviour`: requests latest block data every `tick_interval` seconds from the REST endpoint for the FetchAI ledger. ## Handlers -* `http`: handles incoming `http` messages, retrieves the block data from the appropriate response, and stores it in shared state under the key: `block_data`. +- `http`: handles incoming `http` messages, retrieves the block data from the appropriate response, and stores it in shared state under the key: `block_data`. diff --git a/packages/fetchai/skills/fetch_block/__init__.py b/packages/fetchai/skills/fetch_block/__init__.py index 8f5fe21359..170013aa4f 100644 --- a/packages/fetchai/skills/fetch_block/__init__.py +++ b/packages/fetchai/skills/fetch_block/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/fetch_block:0.12.5") +PUBLIC_ID = PublicId.from_str("fetchai/fetch_block:0.12.6") diff --git a/packages/fetchai/skills/fetch_block/behaviours.py b/packages/fetchai/skills/fetch_block/behaviours.py index 4ebb5770b6..6a7edb24e6 100644 --- a/packages/fetchai/skills/fetch_block/behaviours.py +++ b/packages/fetchai/skills/fetch_block/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/fetch_block/dialogues.py b/packages/fetchai/skills/fetch_block/dialogues.py index 956faf1ac0..d37f3b69d8 100644 --- a/packages/fetchai/skills/fetch_block/dialogues.py +++ b/packages/fetchai/skills/fetch_block/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/fetch_block/handlers.py b/packages/fetchai/skills/fetch_block/handlers.py index 9555bb57ec..4c38b4f7be 100644 --- a/packages/fetchai/skills/fetch_block/handlers.py +++ b/packages/fetchai/skills/fetch_block/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/fetch_block/skill.yaml b/packages/fetchai/skills/fetch_block/skill.yaml index 61abcb81f4..853c974fcb 100644 --- a/packages/fetchai/skills/fetch_block/skill.yaml +++ b/packages/fetchai/skills/fetch_block/skill.yaml @@ -1,22 +1,22 @@ name: fetch_block author: fetchai -version: 0.12.5 +version: 0.12.6 type: skill description: Retrieve the latest block from the Fetch ledger license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmTSH7GkNmRif1a7dZf5aTmBjkr2tVpu7bnBNMTVFKfg5Z - __init__.py: QmbksmrRUohD1cczR9PxLMx6WmvuFPQ7ahJahfHgM46BGj - behaviours.py: QmeoEs3jpFy5y8EDeSMyTfdKZ7rS1p9NfzWf9iuSoRw4pc - dialogues.py: Qmb1oXK3xhZtGNdeNi63wrJFvJjVKo3kSWiC4BDWvhEeHS - handlers.py: QmPm6cwJksrfXk7fizFtHz67Xc9r4xkQNgFEuThfhm7wBm + README.md: QmNi2rZ6b8pgx5Uop4FMvNagGLbzHEJUruwFzbqHMHpYtd + __init__.py: QmbjWVWAaMcaAiv9ynLGttHRbC5t3RGVEMUkctR2XXTkqS + behaviours.py: Qmdg334UUoAyvcuqv2eVKAG42fMYzB4kqTjDcyBZsWtoYJ + dialogues.py: Qma1KWoLRxPJMaxacGLbVEdkuvERG7UbmA4hT385KYww3A + handlers.py: QmYhe8XfYmbrWxqZqFiCuiSnSFpiBkKRQKo62brchcAG1s fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/ledger_api:1.1.6 +- fetchai/ledger_api:1.1.7 skills: [] behaviours: fetch_block_behaviour: diff --git a/packages/fetchai/skills/fipa_dummy_buyer/__init__.py b/packages/fetchai/skills/fipa_dummy_buyer/__init__.py index fec6e76a90..fd1868f851 100644 --- a/packages/fetchai/skills/fipa_dummy_buyer/__init__.py +++ b/packages/fetchai/skills/fipa_dummy_buyer/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,4 +21,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/fipa_dummy_buyer:0.3.5") +PUBLIC_ID = PublicId.from_str("fetchai/fipa_dummy_buyer:0.3.6") diff --git a/packages/fetchai/skills/fipa_dummy_buyer/behaviours.py b/packages/fetchai/skills/fipa_dummy_buyer/behaviours.py index 52ed413aa0..9ef704b90e 100644 --- a/packages/fetchai/skills/fipa_dummy_buyer/behaviours.py +++ b/packages/fetchai/skills/fipa_dummy_buyer/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/fipa_dummy_buyer/dialogues.py b/packages/fetchai/skills/fipa_dummy_buyer/dialogues.py index 83d485e68b..78bb30b2a1 100644 --- a/packages/fetchai/skills/fipa_dummy_buyer/dialogues.py +++ b/packages/fetchai/skills/fipa_dummy_buyer/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/fipa_dummy_buyer/handlers.py b/packages/fetchai/skills/fipa_dummy_buyer/handlers.py index 281d8115ca..79d2814a1a 100644 --- a/packages/fetchai/skills/fipa_dummy_buyer/handlers.py +++ b/packages/fetchai/skills/fipa_dummy_buyer/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/fipa_dummy_buyer/skill.yaml b/packages/fetchai/skills/fipa_dummy_buyer/skill.yaml index 9ffc28afbb..358eaffc97 100644 --- a/packages/fetchai/skills/fipa_dummy_buyer/skill.yaml +++ b/packages/fetchai/skills/fipa_dummy_buyer/skill.yaml @@ -1,21 +1,21 @@ name: fipa_dummy_buyer author: fetchai -version: 0.3.5 +version: 0.3.6 type: skill description: Sample skill for FIPA interaction as a buyer. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: README.md: QmRvuk8JPFrir9kwiT1zRBWYZvYUBrjyqMurk2UMaDBABW - __init__.py: QmVd2gNnLVCpQiFmi9AtVQccqpjjihkZ2TiDzkXAC6j1RQ - behaviours.py: QmWwghRSimHLVvqYVDvPfgD4D6BBDW86aW6bciD1UW4T9n - dialogues.py: QmfYQk9uhDiNZJMEScR174z5xu3AhuqKTyrwHk2uYV8DBr - handlers.py: QmZv5Pv5uuqzLcPBRHiJvv6rNZF1xxP7hVSTwP1T8Mp1Ks + __init__.py: QmU7MygHSwN2hqvoVvJmJpFBwLYRW3ouqLkbCA5ogtXMZ6 + behaviours.py: QmZXfki7foJ6sjuqvbRUxAN5oiQR3LNnwx7zpMGPqtvRp9 + dialogues.py: QmSEr25YWaUsk6pM2prJtJHQmjdM5ESwXc5JhHrcu8dVJc + handlers.py: QmVv174YGzezt8twwkGuPz1dFAY9TNnXVvcJSdDvZVqVAL fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/fipa:1.1.6 +- fetchai/fipa:1.1.7 skills: [] behaviours: initializer: diff --git a/packages/fetchai/skills/generic_buyer/README.md b/packages/fetchai/skills/generic_buyer/README.md index 13862447e8..f752ca3782 100644 --- a/packages/fetchai/skills/generic_buyer/README.md +++ b/packages/fetchai/skills/generic_buyer/README.md @@ -6,21 +6,19 @@ This is a generic skill for buying data. This skill finds an agent on the sOEF which sells data, requests specific data, negotiates the price, pays the proposed amount if agreement is reach, and receives the data bought. - ## Behaviours -* `search`: searches for data selling service on the sOEF -* `transaction`: sequentially processes transactions' settlements on a blockchain +- `search`: searches for data selling service on the sOEF +- `transaction`: sequentially processes transactions' settlements on a blockchain ## Handlers -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages to manage the sellers found -* `signing`: handles `signing` messages for transaction signing by the decision maker - +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages to manage the sellers found +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Links -* Generic Skills -* Generic Skill Step by Step Guide +- Generic Skills +- Generic Skill Step by Step Guide diff --git a/packages/fetchai/skills/generic_buyer/__init__.py b/packages/fetchai/skills/generic_buyer/__init__.py index 632b0699ab..5f6287f568 100644 --- a/packages/fetchai/skills/generic_buyer/__init__.py +++ b/packages/fetchai/skills/generic_buyer/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/generic_buyer:0.27.5") +PUBLIC_ID = PublicId.from_str("fetchai/generic_buyer:0.27.6") diff --git a/packages/fetchai/skills/generic_buyer/behaviours.py b/packages/fetchai/skills/generic_buyer/behaviours.py index ee7f0d66a5..59b5da7e8c 100644 --- a/packages/fetchai/skills/generic_buyer/behaviours.py +++ b/packages/fetchai/skills/generic_buyer/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/generic_buyer/dialogues.py b/packages/fetchai/skills/generic_buyer/dialogues.py index 33ddb19f01..18c74659a1 100644 --- a/packages/fetchai/skills/generic_buyer/dialogues.py +++ b/packages/fetchai/skills/generic_buyer/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/generic_buyer/handlers.py b/packages/fetchai/skills/generic_buyer/handlers.py index 60d511eab4..f5a9938811 100644 --- a/packages/fetchai/skills/generic_buyer/handlers.py +++ b/packages/fetchai/skills/generic_buyer/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/generic_buyer/skill.yaml b/packages/fetchai/skills/generic_buyer/skill.yaml index 7e87b3a33c..822f065f24 100644 --- a/packages/fetchai/skills/generic_buyer/skill.yaml +++ b/packages/fetchai/skills/generic_buyer/skill.yaml @@ -1,27 +1,27 @@ name: generic_buyer author: fetchai -version: 0.27.5 +version: 0.27.6 type: skill description: The weather client skill implements the skill to purchase weather data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: Qmd7hF4eNgxUoGaxkPEKVPQNxpLG2aG4DvovSLKkwKxVYt - __init__.py: QmT7K4HT8sPsZVMAPxteES5rLmxUCjoMLK5Em2waKBfAhL - behaviours.py: QmephYoPF78rWrwqBwpKWKSJhKUV6pe5GpEm4fgoR3BpPx - dialogues.py: QmaZsSYcxyjNJ4FQz4gTxYjW5qYi4hfkv3Aky5eCXNLbfc - handlers.py: Qmee6K1NvwqiXCM5x1ycAmTp2iS7JbuQxLsytZpckmoMPa - strategy.py: QmP37EH7dWeK6TfAz9pMuJjZUiKzqX8G9VwHqrkrtnwPDJ + README.md: QmRUURLxvnfRR8Qq1UBeecFRoKiJLxQJj5GtUyKP7SyhTu + __init__.py: QmYCvgy81AT3SjWrUKCnjAnmdenDCrdFRE91BhW8tBuLDL + behaviours.py: QmVydJUVMEG4o2WNFdPN1bo8Rv46c7Mpt8K5jQkF2fpPLz + dialogues.py: QmZ8yqZRJ8KhFXcfA5H7XWBTyqZf9tCyCR22HVUpfb6aJs + handlers.py: QmQfGNxqDncaP4ekRKZvjE4SE8P5KSLGFDSLSQbWbM3xaA + strategy.py: QmWZfWVGpbxuZTWPigAzK6mrrHfgwEbsvf41SNq9FggpKr fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: [] behaviours: search: diff --git a/packages/fetchai/skills/generic_buyer/strategy.py b/packages/fetchai/skills/generic_buyer/strategy.py index 9b0a8bae13..6c8378e199 100644 --- a/packages/fetchai/skills/generic_buyer/strategy.py +++ b/packages/fetchai/skills/generic_buyer/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/generic_seller/README.md b/packages/fetchai/skills/generic_seller/README.md index 3ac8c59299..204bada524 100644 --- a/packages/fetchai/skills/generic_seller/README.md +++ b/packages/fetchai/skills/generic_seller/README.md @@ -8,15 +8,15 @@ This skill registers some data selling service on the sOEF. It can be requested ## Behaviours -* `service_registration`: registers data selling service on the sOEF +- `service_registration`: registers data selling service on the sOEF ## Handlers -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful ## Links -* Generic Skills -* Generic Skill Step by Step Guide +- Generic Skills +- Generic Skill Step by Step Guide diff --git a/packages/fetchai/skills/generic_seller/__init__.py b/packages/fetchai/skills/generic_seller/__init__.py index 21adc7e9ab..48caae72c0 100644 --- a/packages/fetchai/skills/generic_seller/__init__.py +++ b/packages/fetchai/skills/generic_seller/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/generic_seller:0.28.5") +PUBLIC_ID = PublicId.from_str("fetchai/generic_seller:0.28.6") diff --git a/packages/fetchai/skills/generic_seller/behaviours.py b/packages/fetchai/skills/generic_seller/behaviours.py index 9ab14db08d..af3ad477ce 100644 --- a/packages/fetchai/skills/generic_seller/behaviours.py +++ b/packages/fetchai/skills/generic_seller/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/generic_seller/dialogues.py b/packages/fetchai/skills/generic_seller/dialogues.py index 7b2a968b55..3c6bd37d60 100644 --- a/packages/fetchai/skills/generic_seller/dialogues.py +++ b/packages/fetchai/skills/generic_seller/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/generic_seller/handlers.py b/packages/fetchai/skills/generic_seller/handlers.py index edfd16a3ee..297f374c03 100644 --- a/packages/fetchai/skills/generic_seller/handlers.py +++ b/packages/fetchai/skills/generic_seller/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/generic_seller/skill.yaml b/packages/fetchai/skills/generic_seller/skill.yaml index 066b4bca8e..92b94a41bd 100644 --- a/packages/fetchai/skills/generic_seller/skill.yaml +++ b/packages/fetchai/skills/generic_seller/skill.yaml @@ -1,27 +1,27 @@ name: generic_seller author: fetchai -version: 0.28.5 +version: 0.28.6 type: skill description: The weather station skill implements the functionality to sell weather data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmQ3hBSdCTwsFziUgPkbUqRcBU95yF2yZfrGXbowgaof5R - __init__.py: QmUDQmcRV47mFV1PcWKm2XxPuuu1gJfULckVwrGCcCMFVT - behaviours.py: Qma28yLbE65GZuhXuTFQgqBxeTntYoZor5iXHPC562ffwv - dialogues.py: QmX6eAjvCiaZ1kT6VYBoLxwNw8zFuP5YKjrbaSuQQdQ2CY - handlers.py: QmT6HZ25cS3mrq4tKW7AukVPRXzTkZLHTacNVt2kico2Bb - strategy.py: QmNngz46Ewx7kqAi3mqbmtF7PUBF7qYHbgG4vjpMKuLggR + README.md: QmfQM11g1zjQYDUmia3eFmeckab2FDBCGwG8QDRZfEG4RY + __init__.py: QmSSfdZmyPsMVbLsS3bjTFL3CCGousHYM3QkJHw6AY1efL + behaviours.py: QmNmZHrFPVninUyyNDWng6o9fBLZ2vJmVLRxP1fzMapLai + dialogues.py: QmXcoYGuAdAD5HerA2khymJicPqf9VgtZ9YS6zx4mx8MWy + handlers.py: QmaXoWxvFBMdtqhChLc3eaWPEsDpur3jwmfJ8Z8DkNrMaD + strategy.py: QmZU5jR78iZ515rMdxUE5KiPRwo9UhDw4yXkZguzN8hnBd fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 skills: [] behaviours: service_registration: diff --git a/packages/fetchai/skills/generic_seller/strategy.py b/packages/fetchai/skills/generic_seller/strategy.py index 65bd367196..5fe0442a42 100644 --- a/packages/fetchai/skills/generic_seller/strategy.py +++ b/packages/fetchai/skills/generic_seller/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/gym/README.md b/packages/fetchai/skills/gym/README.md index 6d27284c17..e62b513585 100644 --- a/packages/fetchai/skills/gym/README.md +++ b/packages/fetchai/skills/gym/README.md @@ -8,11 +8,10 @@ This skill is part of the Fetch.ai Gym demo. It trains a reinforcement learning ## Handlers -* `gym`: handles `gym` messages for interactions with a gym environment. - +- `gym`: handles `gym` messages for interactions with a gym environment. ## Links -* Gym Demo -* Gym Example -* OpenAI Gym \ No newline at end of file +- Gym Demo +- Gym Example +- OpenAI Gym diff --git a/packages/fetchai/skills/gym/__init__.py b/packages/fetchai/skills/gym/__init__.py index 13b6987c7e..5020ca7859 100644 --- a/packages/fetchai/skills/gym/__init__.py +++ b/packages/fetchai/skills/gym/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/gym:0.21.5") +PUBLIC_ID = PublicId.from_str("fetchai/gym:0.21.6") diff --git a/packages/fetchai/skills/gym/dialogues.py b/packages/fetchai/skills/gym/dialogues.py index 0f71788ddd..be7ce7a8f0 100644 --- a/packages/fetchai/skills/gym/dialogues.py +++ b/packages/fetchai/skills/gym/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/gym/handlers.py b/packages/fetchai/skills/gym/handlers.py index d2425f1025..35134dd088 100644 --- a/packages/fetchai/skills/gym/handlers.py +++ b/packages/fetchai/skills/gym/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/gym/helpers.py b/packages/fetchai/skills/gym/helpers.py index 22f5c643a4..8b5a30766f 100644 --- a/packages/fetchai/skills/gym/helpers.py +++ b/packages/fetchai/skills/gym/helpers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/gym/rl_agent.py b/packages/fetchai/skills/gym/rl_agent.py index 3af0cd8374..185a7519b0 100644 --- a/packages/fetchai/skills/gym/rl_agent.py +++ b/packages/fetchai/skills/gym/rl_agent.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/gym/skill.yaml b/packages/fetchai/skills/gym/skill.yaml index 78bbdd8cb7..894f7ca104 100644 --- a/packages/fetchai/skills/gym/skill.yaml +++ b/packages/fetchai/skills/gym/skill.yaml @@ -1,24 +1,24 @@ name: gym author: fetchai -version: 0.21.5 +version: 0.21.6 type: skill description: The gym skill wraps an RL agent. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmPwx59WZfJjauEiEXhcfQeUH1zFeEbkr1G8i2KVPWYao6 - __init__.py: QmfQveqgM7r7QqaEFiTBERzg4WDzLSTDddohnthZuEep6Z - dialogues.py: QmbYTMFd2KPK1enx2AxDDr8ERbEPHb3FDhRbd8cr9ZFXxT - handlers.py: QmP8shGqcc2o1W47nBtdUCPP2PrRxdTPCZ1hxeeaWvdTi2 - helpers.py: QmQbqmHgrgbB279E38mkfR3VKpoA6rSgHdCqAiv5xy9myu - rl_agent.py: QmWtbsgPD6r39aGefT7BRFM7vBG2YvmVdeY8iMGLyswtZa - tasks.py: QmWhwUQdsC3gD71VS51bsvmPiCr2WZPCHcfv7AbWqU717y + README.md: QmeYFajc1RJmSTi37WtrT6bY6cBNs5jua7oVkxbUegK3tW + __init__.py: QmV7evSScN3xK5CzvebBb7bMrkgtinK44yZ1yirgNu7aX5 + dialogues.py: QmVePSYdPfXczXsriLxWguySkzHrRqkvs17HYhCu3W1poH + handlers.py: QmQB9c4Pf4Unr4qDEbsFinKeLJGZVukq5V4k8U3jcfqcAo + helpers.py: QmQ5esD6NubPdadz2zLmXjPHk6RcECyrHYfXhxdLzdKGBA + rl_agent.py: QmPZc3gtESxa3VjPZ2TciB8cPsGRA14f5udyCZKiFyhJhp + tasks.py: QmUx77jqj4BtWUL5pSxmiAnhhpTVww1g8JZmNXFyGHECFE fingerprint_ignore_patterns: [] connections: -- fetchai/gym:0.20.5 +- fetchai/gym:0.20.6 contracts: [] protocols: -- fetchai/gym:1.1.6 +- fetchai/gym:1.1.7 skills: [] behaviours: {} handlers: diff --git a/packages/fetchai/skills/gym/tasks.py b/packages/fetchai/skills/gym/tasks.py index 3ed51f0a44..f85c44a4bc 100644 --- a/packages/fetchai/skills/gym/tasks.py +++ b/packages/fetchai/skills/gym/tasks.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/hello_world/__init__.py b/packages/fetchai/skills/hello_world/__init__.py index f7506f29dc..b8e7f53296 100644 --- a/packages/fetchai/skills/hello_world/__init__.py +++ b/packages/fetchai/skills/hello_world/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/hello_world:0.1.4") +PUBLIC_ID = PublicId.from_str("fetchai/hello_world:0.1.5") diff --git a/packages/fetchai/skills/hello_world/behaviours.py b/packages/fetchai/skills/hello_world/behaviours.py index 5cdb41aae2..ef45f3d6a9 100644 --- a/packages/fetchai/skills/hello_world/behaviours.py +++ b/packages/fetchai/skills/hello_world/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/hello_world/skill.yaml b/packages/fetchai/skills/hello_world/skill.yaml index 1e2569311e..458bebf757 100644 --- a/packages/fetchai/skills/hello_world/skill.yaml +++ b/packages/fetchai/skills/hello_world/skill.yaml @@ -1,14 +1,14 @@ name: hello_world author: fetchai -version: 0.1.4 +version: 0.1.5 type: skill description: This skill prints `Hello World!` on the screen. The message can be configured to be any different string. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - __init__.py: QmbqCTQ8pqsFdS9NTRj66ew6Z63D2spQYqaBPTjBad7F18 - behaviours.py: QmS7yRdXj1Y31GXHL8wJEugF2NaHmosBsAobksQqDSH8aW + __init__.py: QmbChC9LnP2VDCELBpdvjQVWQeGxNGMBSxUCJkYvQAfQyC + behaviours.py: QmageynDzUCdo4SUpQ7S3MxhW2Lfe6HVbWGdkX86rE82hm fingerprint_ignore_patterns: [] connections: [] contracts: [] diff --git a/packages/fetchai/skills/http_echo/README.md b/packages/fetchai/skills/http_echo/README.md index 5614d317fd..990a8e4206 100644 --- a/packages/fetchai/skills/http_echo/README.md +++ b/packages/fetchai/skills/http_echo/README.md @@ -8,8 +8,8 @@ This skill is part of the Fetch.ai "HTTP Connection and Skill" guide. Upon recei ## Handlers -* `http_handler`: handles `http` messages for echoing back an HTTP request as an HTTP response. +- `http_handler`: handles `http` messages for echoing back an HTTP request as an HTTP response. ## Links -* HTTP Connection and Skill \ No newline at end of file +- HTTP Connection and Skill diff --git a/packages/fetchai/skills/http_echo/__init__.py b/packages/fetchai/skills/http_echo/__init__.py index d7ad89de6e..e4fd56438c 100644 --- a/packages/fetchai/skills/http_echo/__init__.py +++ b/packages/fetchai/skills/http_echo/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/http_echo:0.21.5") +PUBLIC_ID = PublicId.from_str("fetchai/http_echo:0.21.6") diff --git a/packages/fetchai/skills/http_echo/dialogues.py b/packages/fetchai/skills/http_echo/dialogues.py index 46c5a71c60..c08cff7509 100644 --- a/packages/fetchai/skills/http_echo/dialogues.py +++ b/packages/fetchai/skills/http_echo/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/http_echo/handlers.py b/packages/fetchai/skills/http_echo/handlers.py index 6b19e85088..bb6fb66e99 100644 --- a/packages/fetchai/skills/http_echo/handlers.py +++ b/packages/fetchai/skills/http_echo/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/http_echo/skill.yaml b/packages/fetchai/skills/http_echo/skill.yaml index 5b928ee738..cee0505fc2 100644 --- a/packages/fetchai/skills/http_echo/skill.yaml +++ b/packages/fetchai/skills/http_echo/skill.yaml @@ -1,22 +1,22 @@ name: http_echo author: fetchai -version: 0.21.5 +version: 0.21.6 type: skill description: The http echo skill prints out the content of received http messages and responds with success. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmYC2Y95Mg327LyHzQ3WbxZA8g1NfSHasmDTRcvrGCXmiR - __init__.py: QmXF3BqJVHhci6YT6GQbCQTPzTKxjPezn2W5iLFudMr8q4 - dialogues.py: QmUSbxe3nGmPYWsV2uL4KXSFFiMyHdr96UhDwTyJn88wWm - handlers.py: QmRmvkeEAUPDESDsPT1rhU5kRH3QqPdSyMc8vqeU43zZwi + README.md: QmPCkgR8tH6rUeBhiykisZsQ3qi4eoSRVSx2xhyjCULnu1 + __init__.py: QmNiooQ4Y6DYyysoPNNhhQsbAksh58y6ec5KxVVLptP4Hv + dialogues.py: QmXft7PHDgb8MgEicPukB768qKLxNgYorX6VpNR4vDSLU6 + handlers.py: QmQrwrsyp5qpFeerfSM8iBVdsowTfZa9Fwso5juN1Q8Vw8 fingerprint_ignore_patterns: [] connections: -- fetchai/http_server:0.23.5 +- fetchai/http_server:0.23.6 contracts: [] protocols: -- fetchai/http:1.1.6 +- fetchai/http:1.1.7 skills: [] behaviours: {} handlers: diff --git a/packages/fetchai/skills/ml_data_provider/README.md b/packages/fetchai/skills/ml_data_provider/README.md index 6369779d5b..a33ca9a5c8 100644 --- a/packages/fetchai/skills/ml_data_provider/README.md +++ b/packages/fetchai/skills/ml_data_provider/README.md @@ -8,14 +8,14 @@ This skill is part of the Fetch.ai ML skill demo. It registers its "ML data sell ## Behaviours -* `service_registration`: registers service on the sOEF search service +- `service_registration`: registers service on the sOEF search service ## Handlers -* `ml_trade`: handles `ml_trade` messages for negotiating the terms of trade -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful +- `ml_trade`: handles `ml_trade` messages for negotiating the terms of trade +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful ## Links -* ML Demo +- ML Demo diff --git a/packages/fetchai/skills/ml_data_provider/__init__.py b/packages/fetchai/skills/ml_data_provider/__init__.py index 08b727721c..40a6fe76f2 100644 --- a/packages/fetchai/skills/ml_data_provider/__init__.py +++ b/packages/fetchai/skills/ml_data_provider/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/ml_data_provider:0.27.5") +PUBLIC_ID = PublicId.from_str("fetchai/ml_data_provider:0.27.6") diff --git a/packages/fetchai/skills/ml_data_provider/behaviours.py b/packages/fetchai/skills/ml_data_provider/behaviours.py index a1554e9bf6..59e47acdc4 100644 --- a/packages/fetchai/skills/ml_data_provider/behaviours.py +++ b/packages/fetchai/skills/ml_data_provider/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/ml_data_provider/dialogues.py b/packages/fetchai/skills/ml_data_provider/dialogues.py index d3cf8f49d2..e4af09cb93 100644 --- a/packages/fetchai/skills/ml_data_provider/dialogues.py +++ b/packages/fetchai/skills/ml_data_provider/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/ml_data_provider/handlers.py b/packages/fetchai/skills/ml_data_provider/handlers.py index 5560f5d0c2..f65234b10b 100644 --- a/packages/fetchai/skills/ml_data_provider/handlers.py +++ b/packages/fetchai/skills/ml_data_provider/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/ml_data_provider/skill.yaml b/packages/fetchai/skills/ml_data_provider/skill.yaml index a5a6b9acb9..8dd09a5e10 100644 --- a/packages/fetchai/skills/ml_data_provider/skill.yaml +++ b/packages/fetchai/skills/ml_data_provider/skill.yaml @@ -1,28 +1,28 @@ name: ml_data_provider author: fetchai -version: 0.27.5 +version: 0.27.6 type: skill description: The ml data provider skill implements a provider for Machine Learning datasets in order to monetize data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmYBr97UhQA8GoWFN6yNKdWix1AKJYx4zY246HYAFGpYRP - __init__.py: QmV7xhaceBN4Hj4taKGhyZBZaEZ1b8Zo1jANkUg3xxQTRj - behaviours.py: QmU6DnhfLsYNGoJMrW9jeQ9CknpJG5cp2WjCFwPQfuJkiV - dialogues.py: QmTWTeidShLf6Pg5pxrYTxAFMYWQ5rRdgLrXLcXMJS8vYn - handlers.py: QmYoipDR88wvdgvNxK4xaEpiugpWAtgcKr6dsp1kxtDm4N - strategy.py: QmVNtB9CfMbVKd1GRymNCr9iQtpayfrjzMg8jQZaZgTVoG + README.md: QmcPsTwjWbUTMamK8aH94yRgYrKrmCwzffmMUueLya5wAg + __init__.py: Qma4KbWbeEcrX2gSghAwGU2fjpvS1xyEWZPTaiifxYgSEM + behaviours.py: QmZvLViapWxG1H41wn4e6Mzt8nmV6yyuk2sSsLJKZTQy2c + dialogues.py: QmaVve3Ldt3TN1QSA1x58tBruPDRZ5bnVYHencsVHvfsoh + handlers.py: QmYkHwQSjJh7CsMDRscidGzn4DMcWTJrFYMhV9yVaGNFZF + strategy.py: QmW8SBVyZyfpQG4b25xvjtEQVuKNPbqryYLdMVzkjtYFxc fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/ml_trade:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/ml_trade:1.1.7 +- fetchai/oef_search:1.1.7 skills: -- fetchai/generic_seller:0.28.5 +- fetchai/generic_seller:0.28.6 behaviours: service_registration: args: diff --git a/packages/fetchai/skills/ml_data_provider/strategy.py b/packages/fetchai/skills/ml_data_provider/strategy.py index 26a50706b8..f767b39daf 100644 --- a/packages/fetchai/skills/ml_data_provider/strategy.py +++ b/packages/fetchai/skills/ml_data_provider/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/ml_train/README.md b/packages/fetchai/skills/ml_train/README.md index 0427f17727..23af78789b 100644 --- a/packages/fetchai/skills/ml_train/README.md +++ b/packages/fetchai/skills/ml_train/README.md @@ -8,17 +8,16 @@ This skill is part of the Fetch.ai ML skill demo. It finds an agent which sells ## Behaviours -* `search`: searches for ML data selling service on the sOEF -* `transaction`: sequentially processes transactions' settlements on a blockchain +- `search`: searches for ML data selling service on the sOEF +- `transaction`: sequentially processes transactions' settlements on a blockchain ## Handlers -* `ml_trade`: handles `ml_trade` messages for negotiating the terms of trade -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages to manage the sellers found -* `signing`: handles `signing` messages for transaction signing by the decision maker - +- `ml_trade`: handles `ml_trade` messages for negotiating the terms of trade +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages to manage the sellers found +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Links -* ML Demo \ No newline at end of file +- ML Demo diff --git a/packages/fetchai/skills/ml_train/__init__.py b/packages/fetchai/skills/ml_train/__init__.py index 6b07a9ce60..1c7ba43c94 100644 --- a/packages/fetchai/skills/ml_train/__init__.py +++ b/packages/fetchai/skills/ml_train/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/ml_train:0.29.5") +PUBLIC_ID = PublicId.from_str("fetchai/ml_train:0.29.6") diff --git a/packages/fetchai/skills/ml_train/behaviours.py b/packages/fetchai/skills/ml_train/behaviours.py index 6585ee4e99..4def9af006 100644 --- a/packages/fetchai/skills/ml_train/behaviours.py +++ b/packages/fetchai/skills/ml_train/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/ml_train/dialogues.py b/packages/fetchai/skills/ml_train/dialogues.py index 8a9e77300a..2e04669f6a 100644 --- a/packages/fetchai/skills/ml_train/dialogues.py +++ b/packages/fetchai/skills/ml_train/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/ml_train/handlers.py b/packages/fetchai/skills/ml_train/handlers.py index 624422ef0a..4871800db3 100644 --- a/packages/fetchai/skills/ml_train/handlers.py +++ b/packages/fetchai/skills/ml_train/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/ml_train/skill.yaml b/packages/fetchai/skills/ml_train/skill.yaml index 98864281ea..d48628c3b8 100644 --- a/packages/fetchai/skills/ml_train/skill.yaml +++ b/packages/fetchai/skills/ml_train/skill.yaml @@ -1,31 +1,31 @@ name: ml_train author: fetchai -version: 0.29.5 +version: 0.29.6 type: skill description: The ml train and predict skill implements a simple skill which buys training data, trains a model and sells predictions. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmUk1XEpYnxte5GKZjSvJY2LJPpVzzP6zLvnxT2Y1g9f4m - __init__.py: QmeDYmjvuxg7w6VPqUUoD5zpTwYRteVKvhKBke6oVFR31X - behaviours.py: QmeKKwsRGKfW6Lw6UVDZigyrcJpnQ9eLLUR4jWb4kJJuWt - dialogues.py: QmRnu5pRsV9jXMxYu81W4Z5Hp8v7RE2zz4yXKJHi8UNYTS - handlers.py: QmZAi3BRs83ysokRy1WkheS8dQccdBVfxWW6sW1AsoA5y3 - strategy.py: QmefdhfAVrqTKXw519z29NcPq4ZW7Ru4SYXkLKRHo5yDJR - tasks.py: QmaxqQ4hBbd2eFAiSzxv66GLpWCpkN7AydQWFFPHQWUsuf + README.md: QmPzgPycfq5bRWQhFqy1ARH1vMyXzDZucn9zXuf4V3hGnS + __init__.py: QmXZYbUeGUQrEZszz8eJGCqXqxMx4VPf4xvy8jZYUSmxip + behaviours.py: QmWeexaVncgAR3vZa3CBDfvzTfZDTcG6GXHwFjbM6wzJed + dialogues.py: QmdVwUF6wjX8bkfpsnog7KGF269HK5395DUjmqD1eT3qUR + handlers.py: QmezY9DZ6Sgi6SqZnyc3Gcte4NUmKSsQUSbZDmr6kWsbAt + strategy.py: QmYmzBsWDe4pxGYpYt1iNHQQz2MFRgMAULygW9Zdu4UkQR + tasks.py: QmPLZyT4pX2Kq2HGkBdS5Jwyz6CFgsk4B4SSBUxJu1kP3C fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/ml_trade:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/ml_trade:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 +- fetchai/generic_buyer:0.27.6 behaviours: search: args: diff --git a/packages/fetchai/skills/ml_train/strategy.py b/packages/fetchai/skills/ml_train/strategy.py index bb7bd243a2..83ed91f0ee 100644 --- a/packages/fetchai/skills/ml_train/strategy.py +++ b/packages/fetchai/skills/ml_train/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/ml_train/tasks.py b/packages/fetchai/skills/ml_train/tasks.py index 822f90e5a4..3eab667845 100644 --- a/packages/fetchai/skills/ml_train/tasks.py +++ b/packages/fetchai/skills/ml_train/tasks.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/registration_aw1/README.md b/packages/fetchai/skills/registration_aw1/README.md index 2160d77884..c80dedfdc5 100644 --- a/packages/fetchai/skills/registration_aw1/README.md +++ b/packages/fetchai/skills/registration_aw1/README.md @@ -6,13 +6,13 @@ The `registration_aw1` skill is for registration in Agent World 1. ## Behaviours -* `registration`: manages the registration flow. +- `registration`: manages the registration flow. ## Handlers -* `registration`: handles `register` messages. -* `signing`: handles `signing` messages for transaction signing by the decision maker +- `registration`: handles `register` messages. +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Models -* `strategy`: contains the registration configurations +- `strategy`: contains the registration configurations diff --git a/packages/fetchai/skills/registration_aw1/__init__.py b/packages/fetchai/skills/registration_aw1/__init__.py index 3d7f3c4d91..6d9bc718df 100644 --- a/packages/fetchai/skills/registration_aw1/__init__.py +++ b/packages/fetchai/skills/registration_aw1/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/registration_aw1:0.13.5") +PUBLIC_ID = PublicId.from_str("fetchai/registration_aw1:0.13.6") diff --git a/packages/fetchai/skills/registration_aw1/behaviours.py b/packages/fetchai/skills/registration_aw1/behaviours.py index c8b0ba8ab4..00dde12547 100644 --- a/packages/fetchai/skills/registration_aw1/behaviours.py +++ b/packages/fetchai/skills/registration_aw1/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/registration_aw1/dialogues.py b/packages/fetchai/skills/registration_aw1/dialogues.py index 92c3b8e12d..f121afbe18 100644 --- a/packages/fetchai/skills/registration_aw1/dialogues.py +++ b/packages/fetchai/skills/registration_aw1/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/registration_aw1/handlers.py b/packages/fetchai/skills/registration_aw1/handlers.py index b5aae41f38..ffc76afbcb 100644 --- a/packages/fetchai/skills/registration_aw1/handlers.py +++ b/packages/fetchai/skills/registration_aw1/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/registration_aw1/skill.yaml b/packages/fetchai/skills/registration_aw1/skill.yaml index d66563c87e..fd30e36192 100644 --- a/packages/fetchai/skills/registration_aw1/skill.yaml +++ b/packages/fetchai/skills/registration_aw1/skill.yaml @@ -1,26 +1,26 @@ name: registration_aw1 author: fetchai -version: 0.13.5 +version: 0.13.6 type: skill description: The registration_aw1 skill is a skill for registration in Agent World 1. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: Qmc9dfzqAXJWCJxYNqLd1yz8U7p4DQNbGGMmXMP73wUvJR - __init__.py: QmW7ZV927qZn1drwfKBkammgQw2CnVPz8FMzGNY4pUYmR8 - behaviours.py: QmXMJ91gk79b9iX9nDLCU4STWHR3Y9BmrYkqFrmHrEMUqv - dialogues.py: QmRJT2YeQxc7yhuaPgEDTvGuWyeKvY5cAcgeNZFLYMY8BY - handlers.py: QmX6ZYbPuuwu7Zht82pgGrCd3jP3vHCV2ALHmBR9fmPmr1 - strategy.py: Qmf1a3sg6afcrgx4CQZbGAApbvioopbWsMiMhEoFAMriEW + README.md: QmUMdQxB7uC3SuP92vfiCRr4fHUeWMcfJNmJ74BoCk8eHT + __init__.py: QmYQgGit93v872iD5etZ5k5F2tNo1b5W6Sjtv7nyNwjDh3 + behaviours.py: QmS5mMwaq2pQSaphNPA4QRxXRBBUpVerLvpYfg532Hb9wk + dialogues.py: QmbdecnniJWxH7dnNUB14JKU16BwSKx37USyqcJahEQpVw + handlers.py: QmUi9Ry9xd7R8RPFbeW3wePBT26s5q4Mvojs2zuR4xFXfW + strategy.py: QmZp5WvwW1qKvgRfWemUDtFiYEQExUqkLuwe89RdBZmtdt fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/register:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/register:1.1.7 +- fetchai/signing:1.1.7 skills: -- fetchai/simple_service_search:0.11.5 +- fetchai/simple_service_search:0.11.6 behaviours: registration: args: diff --git a/packages/fetchai/skills/registration_aw1/strategy.py b/packages/fetchai/skills/registration_aw1/strategy.py index 98dd839bc1..e06ccf6f99 100644 --- a/packages/fetchai/skills/registration_aw1/strategy.py +++ b/packages/fetchai/skills/registration_aw1/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_aggregation/README.md b/packages/fetchai/skills/simple_aggregation/README.md index 9ac71dd434..b3ecbc9051 100644 --- a/packages/fetchai/skills/simple_aggregation/README.md +++ b/packages/fetchai/skills/simple_aggregation/README.md @@ -6,10 +6,10 @@ This skill is used to find peers on the agent communication network, exchange ob ## Behaviours -* `search_behaviour`: searches for other aggregating peers every `search_interval` seconds, as specified in the skill configuration. -* `aggregation_behaviour`: makes observations and aggregates those received from peers every `aggregation_interval` seconds, as specified in the skill configuration. +- `search_behaviour`: searches for other aggregating peers every `search_interval` seconds, as specified in the skill configuration. +- `aggregation_behaviour`: makes observations and aggregates those received from peers every `aggregation_interval` seconds, as specified in the skill configuration. ## Handlers -* `aggregation`: handles `aggregation` messages to and from peers -* `oef_search`: handles `oef_search` messages for interacting with the SOEF +- `aggregation`: handles `aggregation` messages to and from peers +- `oef_search`: handles `oef_search` messages for interacting with the SOEF diff --git a/packages/fetchai/skills/simple_aggregation/__init__.py b/packages/fetchai/skills/simple_aggregation/__init__.py index b7bfcd7061..c5f0b70a8b 100644 --- a/packages/fetchai/skills/simple_aggregation/__init__.py +++ b/packages/fetchai/skills/simple_aggregation/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/simple_aggregation:0.3.5") +PUBLIC_ID = PublicId.from_str("fetchai/simple_aggregation:0.3.6") diff --git a/packages/fetchai/skills/simple_aggregation/behaviours.py b/packages/fetchai/skills/simple_aggregation/behaviours.py index 7bbea4577d..11fecc307c 100644 --- a/packages/fetchai/skills/simple_aggregation/behaviours.py +++ b/packages/fetchai/skills/simple_aggregation/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_aggregation/dialogues.py b/packages/fetchai/skills/simple_aggregation/dialogues.py index 106ebf8159..6642595761 100644 --- a/packages/fetchai/skills/simple_aggregation/dialogues.py +++ b/packages/fetchai/skills/simple_aggregation/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_aggregation/handlers.py b/packages/fetchai/skills/simple_aggregation/handlers.py index c7f17ced08..cd5a8b2af5 100644 --- a/packages/fetchai/skills/simple_aggregation/handlers.py +++ b/packages/fetchai/skills/simple_aggregation/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_aggregation/skill.yaml b/packages/fetchai/skills/simple_aggregation/skill.yaml index 36dd4cf19d..049851aed4 100644 --- a/packages/fetchai/skills/simple_aggregation/skill.yaml +++ b/packages/fetchai/skills/simple_aggregation/skill.yaml @@ -1,23 +1,23 @@ name: simple_aggregation author: fetchai -version: 0.3.5 +version: 0.3.6 type: skill description: The skill for aggregating observations between AEAs license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmSFsC6K217XxwuH5fXGQYU29J44VvW9Qim5yNPAbXLegV - __init__.py: QmNdVdjxMXfyHDAwZeqkLaW5nawkC2DyYvoj28nVFusP4e - behaviours.py: QmRVGGihhrds2ASPUK1bsPQVLQR1ZcsAEjnWAqNqhMCQRg - dialogues.py: QmPBSUmeve76gRwrDuYCdJrLMgwgrrCKYbo6Btepd9SZbm - handlers.py: QmVKtuaGE37ZTAx75mshgwofrcfYBizYBtUjeU9hyJhRjf - strategy.py: QmZesrdzHqJL7ovStUc1uFpYKkt87hA9aoiRq4AJF7bp4J + README.md: QmcHh82NQkgDx4w2cNN6sGzWquSXEYp4BgPrbSBo5tTf2w + __init__.py: QmacrtqzSrgzHTp2bqiVLPjDMydiVKNN6AtJG8sEzRVu1o + behaviours.py: QmXsdJUEC9MPAGQvUgUYuZV8du9Dtejexbe941sqgYaSzh + dialogues.py: QmeGB6miynaHtBG9LU96tiwCp8AKZwJ8y9oGqVeRNkWpvW + handlers.py: QmNYga7nHVfyrqsnHCPYXKSVkY9gvsxHCQufHR4Ls2AVyD + strategy.py: QmTepCGXskTbVh9AqigU5JN4my9Qbj4prvtsPVrreYnt6p fingerprint_ignore_patterns: [] contracts: [] protocols: -- fetchai/aggregation:0.2.6 -- fetchai/default:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/aggregation:0.2.7 +- fetchai/default:1.1.7 +- fetchai/oef_search:1.1.7 skills: [] behaviours: aggregation: diff --git a/packages/fetchai/skills/simple_aggregation/strategy.py b/packages/fetchai/skills/simple_aggregation/strategy.py index f28815b101..79050471d2 100644 --- a/packages/fetchai/skills/simple_aggregation/strategy.py +++ b/packages/fetchai/skills/simple_aggregation/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_buyer/README.md b/packages/fetchai/skills/simple_buyer/README.md index 591907b517..36f9444fab 100644 --- a/packages/fetchai/skills/simple_buyer/README.md +++ b/packages/fetchai/skills/simple_buyer/README.md @@ -6,20 +6,18 @@ This skill purchases information from other agents as specified in its configura This skill searches for an agent in a vicinity on the sOEF that sells the data this skill is configured to buy. Once found, it requests this data, negotiates the price, pays the proposed amount if agreement is reached, and receives the data bought. - ## Behaviours -* `search`: searches for data selling service on the sOEF -* `transaction`: sequentially processes transactions' settlements on a blockchain +- `search`: searches for data selling service on the sOEF +- `transaction`: sequentially processes transactions' settlements on a blockchain ## Handlers -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages to manage the sellers found -* `signing`: handles `signing` messages for transaction signing by the decision maker - +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages to manage the sellers found +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Models -* `strategy`: allows the configuration of the purchasing. In particular, `location` and `search_radius` together determine the vicinity where the service is searched for, `search_query` specifies the query, and the remaining configuration specifies the terms of trade. +- `strategy`: allows the configuration of the purchasing. In particular, `location` and `search_radius` together determine the vicinity where the service is searched for, `search_query` specifies the query, and the remaining configuration specifies the terms of trade. diff --git a/packages/fetchai/skills/simple_buyer/__init__.py b/packages/fetchai/skills/simple_buyer/__init__.py index cf7e789fe1..49aa5cf207 100644 --- a/packages/fetchai/skills/simple_buyer/__init__.py +++ b/packages/fetchai/skills/simple_buyer/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/simple_buyer:0.13.5") +PUBLIC_ID = PublicId.from_str("fetchai/simple_buyer:0.13.6") diff --git a/packages/fetchai/skills/simple_buyer/behaviours.py b/packages/fetchai/skills/simple_buyer/behaviours.py index 6d3046b38a..08b658d2e4 100644 --- a/packages/fetchai/skills/simple_buyer/behaviours.py +++ b/packages/fetchai/skills/simple_buyer/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_buyer/dialogues.py b/packages/fetchai/skills/simple_buyer/dialogues.py index 9119acf663..187b2c5ae8 100644 --- a/packages/fetchai/skills/simple_buyer/dialogues.py +++ b/packages/fetchai/skills/simple_buyer/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_buyer/handlers.py b/packages/fetchai/skills/simple_buyer/handlers.py index 1e422944e5..b8ecd6410c 100644 --- a/packages/fetchai/skills/simple_buyer/handlers.py +++ b/packages/fetchai/skills/simple_buyer/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_buyer/skill.yaml b/packages/fetchai/skills/simple_buyer/skill.yaml index adfcb92ca6..4618da11b3 100644 --- a/packages/fetchai/skills/simple_buyer/skill.yaml +++ b/packages/fetchai/skills/simple_buyer/skill.yaml @@ -1,30 +1,30 @@ name: simple_buyer author: fetchai -version: 0.13.5 +version: 0.13.6 type: skill description: This skill purchases information from other agents as specified in its configuration. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmedLNAAofsr7WC4DqeU3qZNVwSQvPeqNHqdeLeua5qhDW - __init__.py: Qmf7EAvyW9Vuyqy3iJu8nmwCsnVD2EzErddiKqk6HxmiBP - behaviours.py: QmNxVQanY9hn7Cp9tfTvJhF7ghLpUBDd8XUVjhfQ5xCsnj - dialogues.py: QmXsn6zXQoqTMQaq86CAEyMJcyN9TQtKH7a5531t3y4x8J - handlers.py: QmbjJFi15fTmvpvZMwkz83vPhw42Kv3E5eXX6yordGsMoc - strategy.py: QmeBdS7qfMfFjty7jCRnuWezsvZSDXwmHZ4NzmEgr6jDm2 + README.md: QmSYbruWV7Cte46FvKgPK8LcJXsShGMTmW6Q2oMxekz327 + __init__.py: QmRTEKXBc4r4iTUSUTR49ypjPLCZtMGPs13Fuu1c7XNQtM + behaviours.py: QmSr6fB3N7dhVo1cLY1TGd2q8usjGwNmTCNjBBbtgtVf9j + dialogues.py: QmXgXcs25v9ob9a9XwT49wvK788vbUdZyYxUgG3ndHjrix + handlers.py: QmP3Q6x3NMcWgRi6H5GtDtvnLWSoB1HeG8vTd4zcRZUgNj + strategy.py: QmdHPLehqRr1dxuCbp4ENYmVMb8Ykvzg2Uzfos5kFJSr3D fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 +- fetchai/generic_buyer:0.27.6 behaviours: search: args: diff --git a/packages/fetchai/skills/simple_buyer/strategy.py b/packages/fetchai/skills/simple_buyer/strategy.py index 1e762d6755..44b1f2e82f 100644 --- a/packages/fetchai/skills/simple_buyer/strategy.py +++ b/packages/fetchai/skills/simple_buyer/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_data_request/README.md b/packages/fetchai/skills/simple_data_request/README.md index 934e4b49da..858bffc553 100644 --- a/packages/fetchai/skills/simple_data_request/README.md +++ b/packages/fetchai/skills/simple_data_request/README.md @@ -6,8 +6,8 @@ This skill is used to request data from a HTTP endpoint and then save it in the ## Behaviours -* `http_request`: requests data every `request_interval` seconds from a HTTP endpoint using the `url`, `method` and `body` specified in the skill configuration. +- `http_request`: requests data every `request_interval` seconds from a HTTP endpoint using the `url`, `method` and `body` specified in the skill configuration. ## Handlers -* `http`: handles incoming `http` messages. Data received in responses is saved in the shared state using the key specified in the skill configuration: `shared_state_key`. +- `http`: handles incoming `http` messages. Data received in responses is saved in the shared state using the key specified in the skill configuration: `shared_state_key`. diff --git a/packages/fetchai/skills/simple_data_request/__init__.py b/packages/fetchai/skills/simple_data_request/__init__.py index 04649a026f..a5c3a9d544 100644 --- a/packages/fetchai/skills/simple_data_request/__init__.py +++ b/packages/fetchai/skills/simple_data_request/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/simple_data_request:0.14.5") +PUBLIC_ID = PublicId.from_str("fetchai/simple_data_request:0.14.6") diff --git a/packages/fetchai/skills/simple_data_request/behaviours.py b/packages/fetchai/skills/simple_data_request/behaviours.py index bbf0a76665..5e621e43a3 100644 --- a/packages/fetchai/skills/simple_data_request/behaviours.py +++ b/packages/fetchai/skills/simple_data_request/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_data_request/dialogues.py b/packages/fetchai/skills/simple_data_request/dialogues.py index 708632801b..0a390a4202 100644 --- a/packages/fetchai/skills/simple_data_request/dialogues.py +++ b/packages/fetchai/skills/simple_data_request/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_data_request/handlers.py b/packages/fetchai/skills/simple_data_request/handlers.py index c8c9a8f49e..242eb9ef96 100644 --- a/packages/fetchai/skills/simple_data_request/handlers.py +++ b/packages/fetchai/skills/simple_data_request/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_data_request/skill.yaml b/packages/fetchai/skills/simple_data_request/skill.yaml index eeb8ff60c5..726d36ba09 100644 --- a/packages/fetchai/skills/simple_data_request/skill.yaml +++ b/packages/fetchai/skills/simple_data_request/skill.yaml @@ -1,23 +1,23 @@ name: simple_data_request author: fetchai -version: 0.14.5 +version: 0.14.6 type: skill description: This skill is used to request data from a HTTP endpoint and then saving it in the AEA's shared state for use by other skills. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmTpjAtR8qUBsF9TbwDRQ6Zg3TsDu4tP9GcQpYxHXcS6Ap - __init__.py: Qmcv4cYWB4wDikb9i2BYAPghonsPH2zjtyPRSdCkSgBZXs - behaviours.py: QmaUPk1hfqNoxoJagC13pPyUg2SAiUMQkULKvoQpFMTWXc - dialogues.py: QmNcUHWKMoinqxpN3KVKjEFDfCD45C2hTTC4UANoN68irH - handlers.py: QmfMU76tpo3CneZ1RBEgfhMzYv5hH8YznNZdmK2Ronjci3 + README.md: QmemL4YrZjQSMjhF2uymRmntNHSoyvAQ66R9TtnEwmDxiv + __init__.py: QmW6iSrqrczrFvKxaTgkyQXneR4ckMimYZheFu8EHsB66N + behaviours.py: QmcAsxDGEjf2zofag5X3PxmaPBwrjqf9zoSZVdLwCUFRaC + dialogues.py: QmVYsxmS1okvCqTQFs6PwNRWvzP1YeguD1FxLopQWe1a9h + handlers.py: QmZ52t9KWAzLLrUv5ZZvfFT4CgB4YvN9HceDcWuQBvRqxT fingerprint_ignore_patterns: [] connections: -- fetchai/http_client:0.24.5 +- fetchai/http_client:0.24.6 contracts: [] protocols: -- fetchai/http:1.1.6 +- fetchai/http:1.1.7 skills: [] behaviours: http_request: diff --git a/packages/fetchai/skills/simple_oracle/README.md b/packages/fetchai/skills/simple_oracle/README.md index c850234cdd..6c69ddd233 100644 --- a/packages/fetchai/skills/simple_oracle/README.md +++ b/packages/fetchai/skills/simple_oracle/README.md @@ -6,11 +6,11 @@ This skill is used to deploy an oracle smart contract to a ledger, grant oracle ## Behaviours -* `simple_oracle_behaviour`: deploys oracle contract, grants the oracle role to the agent address, and updates the oracle value every `tick_interval` seconds, as specified in the skill configuration. +- `simple_oracle_behaviour`: deploys oracle contract, grants the oracle role to the agent address, and updates the oracle value every `tick_interval` seconds, as specified in the skill configuration. ## Handlers -* `contract_api`: handles `contract_api` messages for interactions with a smart contract -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `prometheus`: handles `prometheus` messages for interactions with a prometheus server -* `signing`: handles `signing` messages for transaction signing by the decision maker \ No newline at end of file +- `contract_api`: handles `contract_api` messages for interactions with a smart contract +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `prometheus`: handles `prometheus` messages for interactions with a prometheus server +- `signing`: handles `signing` messages for transaction signing by the decision maker diff --git a/packages/fetchai/skills/simple_oracle/__init__.py b/packages/fetchai/skills/simple_oracle/__init__.py index 0982076ef1..72a034ad76 100644 --- a/packages/fetchai/skills/simple_oracle/__init__.py +++ b/packages/fetchai/skills/simple_oracle/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/simple_oracle:0.16.4") +PUBLIC_ID = PublicId.from_str("fetchai/simple_oracle:0.16.5") diff --git a/packages/fetchai/skills/simple_oracle/behaviours.py b/packages/fetchai/skills/simple_oracle/behaviours.py index 95a507138b..b1f8f15408 100644 --- a/packages/fetchai/skills/simple_oracle/behaviours.py +++ b/packages/fetchai/skills/simple_oracle/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_oracle/dialogues.py b/packages/fetchai/skills/simple_oracle/dialogues.py index dee89912b3..6ecad4ffea 100644 --- a/packages/fetchai/skills/simple_oracle/dialogues.py +++ b/packages/fetchai/skills/simple_oracle/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_oracle/handlers.py b/packages/fetchai/skills/simple_oracle/handlers.py index e554e17213..33202fcc78 100644 --- a/packages/fetchai/skills/simple_oracle/handlers.py +++ b/packages/fetchai/skills/simple_oracle/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_oracle/skill.yaml b/packages/fetchai/skills/simple_oracle/skill.yaml index 32cf558442..5224639801 100644 --- a/packages/fetchai/skills/simple_oracle/skill.yaml +++ b/packages/fetchai/skills/simple_oracle/skill.yaml @@ -1,26 +1,26 @@ name: simple_oracle author: fetchai -version: 0.16.4 +version: 0.16.5 type: skill description: This skill deploys a Fetch oracle contract license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmcvyraEedZd5PEnmbijkkcsDrQQKDVJxPDUXVrwP3Ni3J - __init__.py: QmecSKiE9yjHS4qVHUJFtQHPWaewKKGDibAfGU2Cr7BJdj - behaviours.py: QmQ5vHdb7hgvSYTR7gtenMF21u5GNTNhLvQMC3cxLpnohG - dialogues.py: Qme9GGuPFfGMNPiwtnXDK8rUuGEN7PHgKnhoZU2ehfipq2 - handlers.py: QmNtS1FAaP3eqCWfJTCyh5uvdBPzb229g3bpzpiSyRpePH - strategy.py: QmbgMqaB3nqy3RQS5acEVi6iJTeMaCSyYLZfvTQ2qPP3cZ + README.md: Qme3QavjkmFm4HWMLEAJpAHCYd4miKq2j2LXayRDSRSGiw + __init__.py: QmYuLwWrL7SLS8H2W3R5SkVtpp5ufJSmjuNkzko6AbN6zS + behaviours.py: QmXyscjzvxLeJcssKgpuxqXwDyX1QGcwPPvEcMa5ymyTbH + dialogues.py: QmS4XJDpNXxjKewDUk6HREXrm8pa3KndTR7vzppVcAURCt + handlers.py: QmQm7ofZBu3HHB1ETwBzmnQiTFHNeouVFssNrfQeJ9Rpfd + strategy.py: QmWw9SzUtphNC1mjST5KNnT5zkjAP7EPu9n4qkeDtJXL2B fingerprint_ignore_patterns: [] contracts: -- fetchai/oracle:0.12.2 +- fetchai/oracle:0.12.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/prometheus:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/prometheus:1.1.7 +- fetchai/signing:1.1.7 skills: [] behaviours: simple_oracle_behaviour: diff --git a/packages/fetchai/skills/simple_oracle/strategy.py b/packages/fetchai/skills/simple_oracle/strategy.py index 7bbe2231f5..bf4ccebfb6 100644 --- a/packages/fetchai/skills/simple_oracle/strategy.py +++ b/packages/fetchai/skills/simple_oracle/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_oracle_client/README.md b/packages/fetchai/skills/simple_oracle_client/README.md index f68f6e9f13..d010d2a29d 100644 --- a/packages/fetchai/skills/simple_oracle_client/README.md +++ b/packages/fetchai/skills/simple_oracle_client/README.md @@ -6,10 +6,10 @@ This skill is used to deploy an oracle client smart contract to a ledger, approv ## Behaviours -* `simple_oracle_client_behaviour`: deploys oracle client contract, approves contract transactions, and calls the contract to request the oracle value every `tick_interval` seconds, as specified in the skill configuration. +- `simple_oracle_client_behaviour`: deploys oracle client contract, approves contract transactions, and calls the contract to request the oracle value every `tick_interval` seconds, as specified in the skill configuration. ## Handlers -* `contract_api`: handles `contract_api` messages for interactions with the smart contract -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `signing`: handles `signing` messages for transaction signing by the decision maker \ No newline at end of file +- `contract_api`: handles `contract_api` messages for interactions with the smart contract +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `signing`: handles `signing` messages for transaction signing by the decision maker diff --git a/packages/fetchai/skills/simple_oracle_client/__init__.py b/packages/fetchai/skills/simple_oracle_client/__init__.py index c6cbe6ecd9..89a7b267af 100644 --- a/packages/fetchai/skills/simple_oracle_client/__init__.py +++ b/packages/fetchai/skills/simple_oracle_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/simple_oracle_client:0.13.4") +PUBLIC_ID = PublicId.from_str("fetchai/simple_oracle_client:0.13.5") diff --git a/packages/fetchai/skills/simple_oracle_client/behaviours.py b/packages/fetchai/skills/simple_oracle_client/behaviours.py index f404071926..2a189d12c7 100644 --- a/packages/fetchai/skills/simple_oracle_client/behaviours.py +++ b/packages/fetchai/skills/simple_oracle_client/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_oracle_client/dialogues.py b/packages/fetchai/skills/simple_oracle_client/dialogues.py index dcf84a3404..1f9bd07849 100644 --- a/packages/fetchai/skills/simple_oracle_client/dialogues.py +++ b/packages/fetchai/skills/simple_oracle_client/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_oracle_client/handlers.py b/packages/fetchai/skills/simple_oracle_client/handlers.py index 0cbc2623e1..13362338b9 100644 --- a/packages/fetchai/skills/simple_oracle_client/handlers.py +++ b/packages/fetchai/skills/simple_oracle_client/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_oracle_client/skill.yaml b/packages/fetchai/skills/simple_oracle_client/skill.yaml index 8bee0b8c7b..069a90377a 100644 --- a/packages/fetchai/skills/simple_oracle_client/skill.yaml +++ b/packages/fetchai/skills/simple_oracle_client/skill.yaml @@ -1,27 +1,27 @@ name: simple_oracle_client author: fetchai -version: 0.13.4 +version: 0.13.5 type: skill description: This skill deploys a Fetch oracle client contract and calls this contract to request an oracle value license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmRqzw2aTE6rsUnoB8XvvWoF4sg4ZUpvgQwStZpAVG5sUj - __init__.py: QmdTG5HFPocmo7BDNkNk9mhmAoDw8u7ifunt7x4bBKAtex - behaviours.py: QmQNPAdfDjZKCsXhS3tWgeXN3gbNNdhZuxRAgdRnMvaLu5 - dialogues.py: QmbbaQXAXr8cUc9YB927pnZYdx6SqFfxc4LQV1iWyFUvGX - handlers.py: QmcHGeTueHdNaB18QB65sso3AMtVQ3EaG2fggf6fd1r23d - strategy.py: QmdcSExPito4H3eRR6j9D2hP75eKxTfg2kX4qWNk83ctHT + README.md: QmeP17RSTejkr3mmh4UsMFN6H6L8XL2a6EsdEaKQshgXJW + __init__.py: QmYnEMkY229Cf6phe8QpcpaNGRMX4HJcLxGTQykHjQp4Mz + behaviours.py: QmafcEseTDXqwTHoPF41PSaFT7reEuV2ZUsrXH26L1dNey + dialogues.py: QmZJwtbs31WczMtXCK9jfaxh29mohBEY7YdRQ4zaReD2mF + handlers.py: QmdHoVdCbSEzDx6ASD4hjdRm742cQPn6d1YCJbe3T3cX3W + strategy.py: QmYmPZwE1zDLvbnv8K18b9GbW9jBW7YS9gZB2tEifmzWnT fingerprint_ignore_patterns: [] contracts: -- fetchai/fet_erc20:0.9.1 -- fetchai/oracle_client:0.11.2 +- fetchai/fet_erc20:0.9.2 +- fetchai/oracle_client:0.11.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/signing:1.1.7 skills: [] behaviours: simple_oracle_client_behaviour: diff --git a/packages/fetchai/skills/simple_oracle_client/strategy.py b/packages/fetchai/skills/simple_oracle_client/strategy.py index 6b6e36ab93..95ad9a74f5 100644 --- a/packages/fetchai/skills/simple_oracle_client/strategy.py +++ b/packages/fetchai/skills/simple_oracle_client/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_seller/README.md b/packages/fetchai/skills/simple_seller/README.md index 88efe2f412..b6db03a49f 100644 --- a/packages/fetchai/skills/simple_seller/README.md +++ b/packages/fetchai/skills/simple_seller/README.md @@ -6,14 +6,14 @@ This skill is used to sell data present in the shared state. ## Behaviours -* `service_registration`: registers data selling service on the sOEF +- `service_registration`: registers data selling service on the sOEF ## Handlers -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful ## Models -* the `strategy` model is extended from the `fetchai/generic_seller` skill and loads data from the shared state using the key `shared_state_key` specified in the skill configuration. +- the `strategy` model is extended from the `fetchai/generic_seller` skill and loads data from the shared state using the key `shared_state_key` specified in the skill configuration. diff --git a/packages/fetchai/skills/simple_seller/__init__.py b/packages/fetchai/skills/simple_seller/__init__.py index c704faca95..43759a0cf5 100644 --- a/packages/fetchai/skills/simple_seller/__init__.py +++ b/packages/fetchai/skills/simple_seller/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/simple_seller:0.14.5") +PUBLIC_ID = PublicId.from_str("fetchai/simple_seller:0.14.6") diff --git a/packages/fetchai/skills/simple_seller/behaviours.py b/packages/fetchai/skills/simple_seller/behaviours.py index 06bccf2763..1ed3276b18 100644 --- a/packages/fetchai/skills/simple_seller/behaviours.py +++ b/packages/fetchai/skills/simple_seller/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_seller/dialogues.py b/packages/fetchai/skills/simple_seller/dialogues.py index 1236b7a5ae..88d1409119 100644 --- a/packages/fetchai/skills/simple_seller/dialogues.py +++ b/packages/fetchai/skills/simple_seller/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_seller/handlers.py b/packages/fetchai/skills/simple_seller/handlers.py index 61cffa71aa..af2d32b0e9 100644 --- a/packages/fetchai/skills/simple_seller/handlers.py +++ b/packages/fetchai/skills/simple_seller/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_seller/skill.yaml b/packages/fetchai/skills/simple_seller/skill.yaml index 5dc3bfd1e7..3cee1453f6 100644 --- a/packages/fetchai/skills/simple_seller/skill.yaml +++ b/packages/fetchai/skills/simple_seller/skill.yaml @@ -1,29 +1,29 @@ name: simple_seller author: fetchai -version: 0.14.5 +version: 0.14.6 type: skill description: The simple_seller skill extends the generic_seller skill and sells data from the shared state of the AEA. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmfKe4D4dyoN9hrJhQFJgDd9myNEqqU6SrZHYqYFAZ8y6Y - __init__.py: QmPX2mZGjV7kBjkpkAWJfcUimhF9SB2dtbTWu7J51hZaBf - behaviours.py: QmNr1BfBdHqbrzpNCJMAyAx42j8Kr62uprPGc57xVpAbdS - dialogues.py: QmUSjiRrWgxWYbmHMfEBis9hpsNukCpAWMmmXvKdyt2HbW - handlers.py: QmZ1ecijEqK5eihGp6FSiuZfNJuJm6cUNHXGtc696WRNcF - strategy.py: QmfYNauUBziBDAoirEUf4rTVoXSPnssrgf8NadhGxbbSGy + README.md: QmcBRmTneLHvBfHcw4ZfVKkMw8cZFbvHdmAactNhNrd4HU + __init__.py: QmQztRLPBQZyWCZmW1ZBpgSTz3JFSnBt6dCYTpTBYsrUhr + behaviours.py: QmPjoQS4RdWpsmhh2xabtW3MDRAdRch4J2MMe8MdpSGFYp + dialogues.py: QmSY1VNCShSjiVuwToNvu7k5pfYEXiHjRQP5fHRkrx8UHz + handlers.py: QmZhWji4oE5odDoxJbWhrMS9yzj42nKhBfwM3KgG5GnrdA + strategy.py: QmUdEa63iofjreKba2oQc3CkACV6PYyevmTTyiit6pWnij fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 skills: -- fetchai/generic_seller:0.28.5 +- fetchai/generic_seller:0.28.6 behaviours: service_registration: args: diff --git a/packages/fetchai/skills/simple_seller/strategy.py b/packages/fetchai/skills/simple_seller/strategy.py index a0a6f050e7..e947a09313 100644 --- a/packages/fetchai/skills/simple_seller/strategy.py +++ b/packages/fetchai/skills/simple_seller/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_service_registration/README.md b/packages/fetchai/skills/simple_service_registration/README.md index 38c1e24666..70f2e3d57e 100644 --- a/packages/fetchai/skills/simple_service_registration/README.md +++ b/packages/fetchai/skills/simple_service_registration/README.md @@ -8,12 +8,12 @@ This skill is used in the "Guide on Writing a Skill" section in the documentatio ## Behaviours -* `service`: registers and unregisters a service on the sOEF +- `service`: registers and unregisters a service on the sOEF ## Handlers -* `oef_search`: handles `oef_search` messages if interactions with the sOEF is erratic +- `oef_search`: handles `oef_search` messages if interactions with the sOEF is erratic ## Links -* Guide on Building a Skill +- Guide on Building a Skill diff --git a/packages/fetchai/skills/simple_service_registration/__init__.py b/packages/fetchai/skills/simple_service_registration/__init__.py index 3faffaf031..7d77867249 100644 --- a/packages/fetchai/skills/simple_service_registration/__init__.py +++ b/packages/fetchai/skills/simple_service_registration/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/simple_service_registration:0.23.5") +PUBLIC_ID = PublicId.from_str("fetchai/simple_service_registration:0.23.6") diff --git a/packages/fetchai/skills/simple_service_registration/behaviours.py b/packages/fetchai/skills/simple_service_registration/behaviours.py index 1b31185e76..bdaa0fe81c 100644 --- a/packages/fetchai/skills/simple_service_registration/behaviours.py +++ b/packages/fetchai/skills/simple_service_registration/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_service_registration/dialogues.py b/packages/fetchai/skills/simple_service_registration/dialogues.py index 90e2388db9..8737241428 100644 --- a/packages/fetchai/skills/simple_service_registration/dialogues.py +++ b/packages/fetchai/skills/simple_service_registration/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_service_registration/handlers.py b/packages/fetchai/skills/simple_service_registration/handlers.py index b02da98d2c..3e4d325a5a 100644 --- a/packages/fetchai/skills/simple_service_registration/handlers.py +++ b/packages/fetchai/skills/simple_service_registration/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_service_registration/skill.yaml b/packages/fetchai/skills/simple_service_registration/skill.yaml index 096fada8e7..6f2d15f26f 100644 --- a/packages/fetchai/skills/simple_service_registration/skill.yaml +++ b/packages/fetchai/skills/simple_service_registration/skill.yaml @@ -1,22 +1,22 @@ name: simple_service_registration author: fetchai -version: 0.23.5 +version: 0.23.6 type: skill description: The simple service registration skills is a skill to register a service. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmUgCcR7sDBQeeCBRKwDT7tPBTi3t4zSibyEqR3xdQUKmh - __init__.py: QmYmua5kBdXWDA3NnmxHZ5oSAhGFMoq13ZjbqyCusoBCXM - behaviours.py: QmeHRYpWwbXVt5TikSGDaZHv34ouu3uCGBv2Xw2K17mBsc - dialogues.py: QmW3VCm1q3xUvr11APWvRQo4z64rs2eUp9svg8zWSqk2Zi - handlers.py: QmX3bdLbmZtMwzU3u7NAc8q3NuwERV9xohLrCNZyvey2VL - strategy.py: QmXcRCe5herdhFEqPyF7rbzLY7UeFGnkjrDsEnyUC12dwv + README.md: QmcAU3oi7tWS86UmAePbubQLinLutQsSQ1eGce5LperZty + __init__.py: QmTBYeERGsytUjBYUFCBCA55yuXaQSetGT235Zz8fbV16L + behaviours.py: QmWuomUzWYZXeshgbnnzzeC9xE3tNwJReGwCBtbqhMXcaY + dialogues.py: QmbgKy2b6WiWSFXxdwDaawAsoBY2VsBAdhRgUL6WTaGhEt + handlers.py: QmehzwbrYqX2VAoAzVC7754rdJFjYoNCs58R5oBu5ChnDq + strategy.py: QmcwQhz4RsqN35BiApeTDoyuggqXXooezW6HvsTx9ugXGj fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/oef_search:1.1.6 +- fetchai/oef_search:1.1.7 skills: [] behaviours: service: diff --git a/packages/fetchai/skills/simple_service_registration/strategy.py b/packages/fetchai/skills/simple_service_registration/strategy.py index 9b09a52f94..09b7d32d35 100644 --- a/packages/fetchai/skills/simple_service_registration/strategy.py +++ b/packages/fetchai/skills/simple_service_registration/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_service_search/README.md b/packages/fetchai/skills/simple_service_search/README.md index ec32c4d63e..81fb46507e 100644 --- a/packages/fetchai/skills/simple_service_search/README.md +++ b/packages/fetchai/skills/simple_service_search/README.md @@ -6,12 +6,12 @@ This skill searches for services on the sOEF. ## Behaviours -* `service_search`: sends search queries to the sOEF using the `oef_search` protocol. +- `service_search`: sends search queries to the sOEF using the `oef_search` protocol. ## Handlers -* `oef_search`: handles `oef_search` messages, in particular search responses. Search results are stored in the shared state using the key `shared_storage_key`. +- `oef_search`: handles `oef_search` messages, in particular search responses. Search results are stored in the shared state using the key `shared_storage_key`. ## Models -* `strategy`: builds the search query from the data provided in the skill configuration: `search_location`, `search_query` and `search_radius`. +- `strategy`: builds the search query from the data provided in the skill configuration: `search_location`, `search_query` and `search_radius`. diff --git a/packages/fetchai/skills/simple_service_search/__init__.py b/packages/fetchai/skills/simple_service_search/__init__.py index f67c8cce65..9e4465b3a4 100644 --- a/packages/fetchai/skills/simple_service_search/__init__.py +++ b/packages/fetchai/skills/simple_service_search/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/simple_service_search:0.11.5") +PUBLIC_ID = PublicId.from_str("fetchai/simple_service_search:0.11.6") diff --git a/packages/fetchai/skills/simple_service_search/behaviours.py b/packages/fetchai/skills/simple_service_search/behaviours.py index 368477074f..f8e2a72bab 100644 --- a/packages/fetchai/skills/simple_service_search/behaviours.py +++ b/packages/fetchai/skills/simple_service_search/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_service_search/dialogues.py b/packages/fetchai/skills/simple_service_search/dialogues.py index 38ba4eb9c4..9cafd04821 100644 --- a/packages/fetchai/skills/simple_service_search/dialogues.py +++ b/packages/fetchai/skills/simple_service_search/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_service_search/handlers.py b/packages/fetchai/skills/simple_service_search/handlers.py index 36b152a244..936143d6b5 100644 --- a/packages/fetchai/skills/simple_service_search/handlers.py +++ b/packages/fetchai/skills/simple_service_search/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/simple_service_search/skill.yaml b/packages/fetchai/skills/simple_service_search/skill.yaml index 0e4c942b5d..8ea0cf19f8 100644 --- a/packages/fetchai/skills/simple_service_search/skill.yaml +++ b/packages/fetchai/skills/simple_service_search/skill.yaml @@ -1,22 +1,22 @@ name: simple_service_search author: fetchai -version: 0.11.5 +version: 0.11.6 type: skill description: A simple search skill utilising the SOEF search node. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmdwNVXwPsrA2sYiGae2koQjETVTfxLe6VXyfS3ya5KnyG - __init__.py: Qma9tbLh3jb8n7buTKsG2Vuh4TQUwmn1sYHnWUfCK48jir - behaviours.py: QmY9bp1Wsrr5i3cnQF2o6tzk1N5UGHRm2qG9tFmCx8s4cP - dialogues.py: QmQjau19pqHZj3iLrEsoT4uAtsYdXiAznesmrG49G8EUg8 - handlers.py: QmYuMqoUZNN84kEiobg3z78c9CjbtgkMpYhTJu3Mf5woTf - strategy.py: Qma5RcctMzNjvhHcQ1aJ3X1A4Qj3sztRjRZmqFMZEomzta + README.md: Qme6VKFeMeJe4BjUEeqL1tTVisW4QUEFDu3PCgcHyUJWG8 + __init__.py: QmcbnC34XeYwZkpeUXdBEoaD8NQ35xpzQ2VT2Y5tpXAxu6 + behaviours.py: QmQVn5ASsL6fPgyvLJbKt9DHKaPRtQbtvNbj4L9Wk1zKr8 + dialogues.py: QmazwDnVLDM3UsfDHPcamVWaipNVnNDAsRqTZe8vB6cXTn + handlers.py: Qmd8rkgUezaM9LbHmZnAp7Mn9uCGJ14WaCPgeMQF6QPWy7 + strategy.py: QmZ6vRXXSMJgzFxgWT8rZcdxZ4oBuXbuWooGnfo8neWqr9 fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/oef_search:1.1.6 +- fetchai/oef_search:1.1.7 skills: [] behaviours: service_search: diff --git a/packages/fetchai/skills/simple_service_search/strategy.py b/packages/fetchai/skills/simple_service_search/strategy.py index 89462fdba7..03a52e22f1 100644 --- a/packages/fetchai/skills/simple_service_search/strategy.py +++ b/packages/fetchai/skills/simple_service_search/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_control/README.md b/packages/fetchai/skills/tac_control/README.md index 84317a5868..fd1da621c0 100644 --- a/packages/fetchai/skills/tac_control/README.md +++ b/packages/fetchai/skills/tac_control/README.md @@ -8,13 +8,13 @@ This skill is part of the Fetch.ai TAC demo. It manages the progression of the c ## Behaviours -* `tac`: manages progression of the competition +- `tac`: manages progression of the competition ## Handlers -* `tac`: handles `tac` messages for managing the competition -* `oef`: handles `oef_search` messages if registration or unregistration on the sOEF is unsuccessful +- `tac`: handles `tac` messages for managing the competition +- `oef`: handles `oef_search` messages if registration or unregistration on the sOEF is unsuccessful ## Links -* TAC Demo +- TAC Demo diff --git a/packages/fetchai/skills/tac_control/__init__.py b/packages/fetchai/skills/tac_control/__init__.py index ac8a13fdb1..9f268cf399 100644 --- a/packages/fetchai/skills/tac_control/__init__.py +++ b/packages/fetchai/skills/tac_control/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/tac_control:0.25.5") +PUBLIC_ID = PublicId.from_str("fetchai/tac_control:0.25.6") diff --git a/packages/fetchai/skills/tac_control/behaviours.py b/packages/fetchai/skills/tac_control/behaviours.py index 6e1841c07c..f54360a95d 100644 --- a/packages/fetchai/skills/tac_control/behaviours.py +++ b/packages/fetchai/skills/tac_control/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_control/dialogues.py b/packages/fetchai/skills/tac_control/dialogues.py index 4c180b15ec..96cf4b761a 100644 --- a/packages/fetchai/skills/tac_control/dialogues.py +++ b/packages/fetchai/skills/tac_control/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_control/game.py b/packages/fetchai/skills/tac_control/game.py index 55773be112..0f526c80b5 100644 --- a/packages/fetchai/skills/tac_control/game.py +++ b/packages/fetchai/skills/tac_control/game.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_control/handlers.py b/packages/fetchai/skills/tac_control/handlers.py index a4e56d7568..0ebb3e101d 100644 --- a/packages/fetchai/skills/tac_control/handlers.py +++ b/packages/fetchai/skills/tac_control/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_control/helpers.py b/packages/fetchai/skills/tac_control/helpers.py index 591161c332..ed394dc2f0 100644 --- a/packages/fetchai/skills/tac_control/helpers.py +++ b/packages/fetchai/skills/tac_control/helpers.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -314,9 +314,9 @@ def generate_equilibrium_prices_and_holdings( # pylint: disable=unused-argument utility_params_l.append(temp_u_p) # maths - endowments_a = np.array(good_endowments_l, dtype=np.int) # type: ignore + endowments_a = np.array(good_endowments_l, dtype=int) # type: ignore scaled_utility_params_a = np.array( # type: ignore - utility_params_l, dtype=np.float # type: ignore + utility_params_l, dtype=float # type: ignore ) # note, they are already scaled endowments_by_good = np.sum(endowments_a, axis=0) scaled_params_by_good = np.sum(scaled_utility_params_a, axis=0) diff --git a/packages/fetchai/skills/tac_control/parameters.py b/packages/fetchai/skills/tac_control/parameters.py index e061c10a25..db1f4ceb56 100644 --- a/packages/fetchai/skills/tac_control/parameters.py +++ b/packages/fetchai/skills/tac_control/parameters.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_control/skill.yaml b/packages/fetchai/skills/tac_control/skill.yaml index badf041362..29bc700ad6 100644 --- a/packages/fetchai/skills/tac_control/skill.yaml +++ b/packages/fetchai/skills/tac_control/skill.yaml @@ -1,28 +1,28 @@ name: tac_control author: fetchai -version: 0.25.5 +version: 0.25.6 type: skill description: The tac control skill implements the logic for an AEA to control an instance of the TAC. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmPakq2qYHCenyWKfqQHRLWdF7uo6eG24GTprsBfrkyny2 - __init__.py: QmRFPFwWaoNpyzWWfD8AMGsyphDaeEUKhdD32ZSJzsE3nw - behaviours.py: QmcuWLHYBAE8gM9AwrfPmaucgJsnctqmhNj38mH5H6Tbst - dialogues.py: QmU2S3AvctrMNKTspSm8f3CGgKpZKQ6tWhuZsqv62LeZ5e - game.py: QmfRHDfF91SD8BDtUomXnFWPbSrHifrGYixfYLDQaQjMdw - handlers.py: QmQ71eC6osB1RX4MXfEJQ9QkqEfDqHKNetiJLoeqcT3QW7 - helpers.py: Qmf11rS9J6ezmB9QBi9AdxEsdQiMZXD1z3pSQRaaUtoB9V - parameters.py: QmZuXLsLVncd53KPemCvSwG16Ft7ff613yAi8uk7Nz6Qcp + README.md: QmdQcAgQ21CSovduTzvhf1nsxwQZWTYkDAc9Tfsz6gXWMh + __init__.py: QmQLj6yg3zW6EBiRVLbZVqQojUSEJPcxwqMjFmUeyxkiAn + behaviours.py: QmNmcawRFT6NEFCWpwECwE7bbX7ZnVVZXDLDeP5pKiQSZr + dialogues.py: QmQWmTQKxhNV9A8B4h2dfmy917LCut3PY7Ny61nJvdxJPH + game.py: QmVsUWKiNaQL3Fv58Huqf2BCTePApxkXiedqGMYgJvXyXE + handlers.py: QmYdCncGTRQgdi5XB6VdjKZ7oBtphXKt3atrdYM2VtHU6N + helpers.py: QmZByC5bR7Fz7K6eDS9Ccu7jMajUPcnQT6KSQouMmHLR13 + parameters.py: QmVuYzxPYenwTGUcswCuXC912AeZLaSYb9Sr2Tu3R4chvK fingerprint_ignore_patterns: [] connections: [] contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/default:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/tac:1.1.6 +- fetchai/default:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/tac:1.1.7 skills: [] behaviours: tac: diff --git a/packages/fetchai/skills/tac_control_contract/README.md b/packages/fetchai/skills/tac_control_contract/README.md index 5b5da779c3..1f03ff8327 100644 --- a/packages/fetchai/skills/tac_control_contract/README.md +++ b/packages/fetchai/skills/tac_control_contract/README.md @@ -8,16 +8,16 @@ This skill is part of the Fetch.ai TAC demo. It manages the smart contract (cont ## Behaviours -* `tac`: deploys smart contract, manages progression of the competition +- `tac`: deploys smart contract, manages progression of the competition ## Handlers -* `contract_api`: handles `contract_api` messages for interaction with a smart contract -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef`: handles `oef_search` messages if registration or unregistration on the sOEF is unsuccessful -* `signing`: handles `signing` messages for interaction with the decision maker -* `tac`: handles `tac` messages for registering/unregistering agents in the TAC +- `contract_api`: handles `contract_api` messages for interaction with a smart contract +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef`: handles `oef_search` messages if registration or unregistration on the sOEF is unsuccessful +- `signing`: handles `signing` messages for interaction with the decision maker +- `tac`: handles `tac` messages for registering/unregistering agents in the TAC ## Links -* TAC Demo +- TAC Demo diff --git a/packages/fetchai/skills/tac_control_contract/__init__.py b/packages/fetchai/skills/tac_control_contract/__init__.py index 39d0ede74f..cf325a0462 100644 --- a/packages/fetchai/skills/tac_control_contract/__init__.py +++ b/packages/fetchai/skills/tac_control_contract/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/tac_control_contract:0.27.5") +PUBLIC_ID = PublicId.from_str("fetchai/tac_control_contract:0.27.6") diff --git a/packages/fetchai/skills/tac_control_contract/behaviours.py b/packages/fetchai/skills/tac_control_contract/behaviours.py index 7f70f160f4..7812bf0832 100644 --- a/packages/fetchai/skills/tac_control_contract/behaviours.py +++ b/packages/fetchai/skills/tac_control_contract/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_control_contract/dialogues.py b/packages/fetchai/skills/tac_control_contract/dialogues.py index 2a14f74795..10876b417e 100644 --- a/packages/fetchai/skills/tac_control_contract/dialogues.py +++ b/packages/fetchai/skills/tac_control_contract/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_control_contract/game.py b/packages/fetchai/skills/tac_control_contract/game.py index b8872adc53..eef7490792 100644 --- a/packages/fetchai/skills/tac_control_contract/game.py +++ b/packages/fetchai/skills/tac_control_contract/game.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_control_contract/handlers.py b/packages/fetchai/skills/tac_control_contract/handlers.py index af25a8da98..9a6e5069bf 100644 --- a/packages/fetchai/skills/tac_control_contract/handlers.py +++ b/packages/fetchai/skills/tac_control_contract/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_control_contract/helpers.py b/packages/fetchai/skills/tac_control_contract/helpers.py index fc50e5854d..51eebe3b1c 100644 --- a/packages/fetchai/skills/tac_control_contract/helpers.py +++ b/packages/fetchai/skills/tac_control_contract/helpers.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -288,9 +288,9 @@ def generate_equilibrium_prices_and_holdings( # pylint: disable=unused-argument utility_params_l.append(temp_u_p) # maths - endowments_a = np.array(good_endowments_l, dtype=np.int) # type: ignore + endowments_a = np.array(good_endowments_l, dtype=int) # type: ignore scaled_utility_params_a = np.array( # type: ignore - utility_params_l, dtype=np.float # type: ignore + utility_params_l, dtype=float # type: ignore ) # note, they are already scaled endowments_by_good = np.sum(endowments_a, axis=0) scaled_params_by_good = np.sum(scaled_utility_params_a, axis=0) diff --git a/packages/fetchai/skills/tac_control_contract/parameters.py b/packages/fetchai/skills/tac_control_contract/parameters.py index 21b3e14ff4..99f725b62d 100644 --- a/packages/fetchai/skills/tac_control_contract/parameters.py +++ b/packages/fetchai/skills/tac_control_contract/parameters.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_control_contract/skill.yaml b/packages/fetchai/skills/tac_control_contract/skill.yaml index 784aef552b..9de0e956a0 100644 --- a/packages/fetchai/skills/tac_control_contract/skill.yaml +++ b/packages/fetchai/skills/tac_control_contract/skill.yaml @@ -1,34 +1,34 @@ name: tac_control_contract author: fetchai -version: 0.27.5 +version: 0.27.6 type: skill description: The tac control skill implements the logic for an AEA to control an instance of the TAC. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmX9HuMvkRptLc4QnuagUGmN4HzxH5jnxXJYtw565dMnXg - __init__.py: QmfEnyDyRzWPtPH6yqZDuMkTxbV9pFjjeZgLMiBNkiDowA - behaviours.py: QmckJcxgpL3AbyDahg7PArzT46ZUFsXbyqezQJaL6GyBhr - dialogues.py: QmV4V7MxSHQaAsN3MA3ybQkfZ8WYgoymqQkf6byz1GkiBe - game.py: QmSFZKLLqSjcoWqF9skD8zjd1SwDvUwNro77zk4QWEY49J - handlers.py: QmeyAguBbjSfEjXRpUzkMm271xf6ibmMm75imHyfyVL73B - helpers.py: QmPov2VdtXWBPTypkB2BHDXEmZhJcFF64PpRt7dA6dvWEE - parameters.py: QmQDgHpapxWQgLRza1dNgi79z5dBxhWsnTgnznTf1zmjPR + README.md: QmYoLcfTSQNX3FPna6g2ttKTQRjF8DpxpzLxEQLdg4whe1 + __init__.py: QmVpmZmA7JNrBUTRdeThgw9GTnPMDEg4JRNLu8WUh8ZqWa + behaviours.py: QmV6UDZrmUXVfoqU8J5GgQmtanDKNbUd14t6UEJGSaynx8 + dialogues.py: QmbxjXD42RbKtYWUwnQzscAiKJuijfNgUK3G1WJfU9Lkxf + game.py: QmYuh179BNFk4vt2df8WYDWT6C4J7ogJEgm4d1vUUNCEa7 + handlers.py: QmUF3inkBDQ7ufvYyw238BM5LFeTq2T19FBT2MTBKHK7uo + helpers.py: QmdkhuZ1tAb5fn16dSiwLDHzhpF16FKK7DCHp5cJnGobHQ + parameters.py: QmcgNoSMmvEj4kwLJSdfZYi6hSG6os6WuwgYuZoj4DbWQc fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/default:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/tac:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/default:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/tac:1.1.7 skills: -- fetchai/tac_control:0.25.5 +- fetchai/tac_control:0.25.6 behaviours: tac: args: {} diff --git a/packages/fetchai/skills/tac_negotiation/README.md b/packages/fetchai/skills/tac_negotiation/README.md index a1f42868d6..dbc784d04c 100644 --- a/packages/fetchai/skills/tac_negotiation/README.md +++ b/packages/fetchai/skills/tac_negotiation/README.md @@ -8,17 +8,17 @@ This skill is part of the Fetch.ai TAC demo. It manages registration and searchi ## Behaviours -* `clean_up`: updates and cleans up confirmed and pending transactions -* `tac_negotiation`: registers/unregisters the agent and its buying/selling services on the sOEF +- `clean_up`: updates and cleans up confirmed and pending transactions +- `tac_negotiation`: registers/unregisters the agent and its buying/selling services on the sOEF ## Handlers -* `contract_api`: handles `contract_api` messages for interaction with a smart contract -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef`: handles `oef_search` messages to manage the buyers/sellers it finds -* `signing`: handles `signing` messages for transaction signing by the decision maker +- `contract_api`: handles `contract_api` messages for interaction with a smart contract +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef`: handles `oef_search` messages to manage the buyers/sellers it finds +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Links -* TAC Demo +- TAC Demo diff --git a/packages/fetchai/skills/tac_negotiation/__init__.py b/packages/fetchai/skills/tac_negotiation/__init__.py index a3de8bb805..2d5e83f4ad 100644 --- a/packages/fetchai/skills/tac_negotiation/__init__.py +++ b/packages/fetchai/skills/tac_negotiation/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/tac_negotiation:0.29.5") +PUBLIC_ID = PublicId.from_str("fetchai/tac_negotiation:0.29.6") diff --git a/packages/fetchai/skills/tac_negotiation/behaviours.py b/packages/fetchai/skills/tac_negotiation/behaviours.py index 4f9dc80b84..c43471bfa7 100644 --- a/packages/fetchai/skills/tac_negotiation/behaviours.py +++ b/packages/fetchai/skills/tac_negotiation/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_negotiation/dialogues.py b/packages/fetchai/skills/tac_negotiation/dialogues.py index a49b0de4f7..4bec6b91ec 100644 --- a/packages/fetchai/skills/tac_negotiation/dialogues.py +++ b/packages/fetchai/skills/tac_negotiation/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_negotiation/handlers.py b/packages/fetchai/skills/tac_negotiation/handlers.py index 50c562136e..f5b6b58054 100644 --- a/packages/fetchai/skills/tac_negotiation/handlers.py +++ b/packages/fetchai/skills/tac_negotiation/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_negotiation/helpers.py b/packages/fetchai/skills/tac_negotiation/helpers.py index 9817d4f0b1..8d9c11eaca 100644 --- a/packages/fetchai/skills/tac_negotiation/helpers.py +++ b/packages/fetchai/skills/tac_negotiation/helpers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_negotiation/skill.yaml b/packages/fetchai/skills/tac_negotiation/skill.yaml index 472df5cd00..284782d271 100644 --- a/packages/fetchai/skills/tac_negotiation/skill.yaml +++ b/packages/fetchai/skills/tac_negotiation/skill.yaml @@ -1,35 +1,35 @@ name: tac_negotiation author: fetchai -version: 0.29.5 +version: 0.29.6 type: skill description: The tac negotiation skill implements the logic for an AEA to do fipa negotiation in the TAC. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmdpJypf1uoDBW54DC2req7bst1Hw548piYmMKUaPPVHeB - __init__.py: QmWwZRa7ksVeF8392hc8PKxa1BrStSeaSgAPDcM56wdusS - behaviours.py: QmRYUEG3Xh6D53BcWwhepTaXHTsz5Ag2ZghETLfc37AvsB - dialogues.py: Qme98nNXajpA42LcZY6r1QARtycYkovnJWvJdfUoV6dtgB - handlers.py: QmXLa466taabMV97G5ZiVxNBtjeBumoS2N4hxr5RrGLsKm - helpers.py: QmaziekDk2Zg1NtKFXRe6WAd1xUm5sFoboJThe4YTX21fM - strategy.py: QmYtojBvPCKwGEfAzQDZQcNgJmBxz8p9kERVH5wunbfZxk - transactions.py: Qmch1rpN7L9dFDvZ2yg2udHtV4Ljy9yUKQHhNGVLBfYi4K + README.md: QmNWeRkM9RzqkyPu5vQpdgXw5Qw8DpkX2ghNaAD6cNQnUo + __init__.py: Qmecsd4pHWrSSo4vdCLjzyersvLPDGcvQtudp2MdnbydA1 + behaviours.py: QmP4S2fTjtYXYc4YRAgwafE3uXAAERbPienc4yBuAJojDA + dialogues.py: QmT3koAkBQ8ZBRMDrkKQV9K7s71mYxPTVDCDL7b9UcmsRe + handlers.py: QmTgPAgrMByEgbQLdR9a3DHfPGvf4LobtnppxVv3HPoTGA + helpers.py: QmUdAigxsjxG7qH34AYGTGySj7UXMm6AbruFGibhQXk9U7 + strategy.py: QmchRFawnZrWso9gqiefSfJ1Z3wz7Z6dWeQLgNxnZ7h8Tx + transactions.py: QmbxD3g2Bc52GDhcy6njkbkA77C5Y1RxusNnRZ5Laounov fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/contract_api:1.1.6 -- fetchai/cosm_trade:0.2.6 -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/contract_api:1.1.7 +- fetchai/cosm_trade:0.2.7 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: -- fetchai/tac_participation:0.25.5 +- fetchai/tac_participation:0.25.6 behaviours: clean_up: args: diff --git a/packages/fetchai/skills/tac_negotiation/strategy.py b/packages/fetchai/skills/tac_negotiation/strategy.py index e2d5dfeca6..66bdbe4dfe 100644 --- a/packages/fetchai/skills/tac_negotiation/strategy.py +++ b/packages/fetchai/skills/tac_negotiation/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_negotiation/transactions.py b/packages/fetchai/skills/tac_negotiation/transactions.py index 6eb464f9ae..5fb54fb6bc 100644 --- a/packages/fetchai/skills/tac_negotiation/transactions.py +++ b/packages/fetchai/skills/tac_negotiation/transactions.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_participation/README.md b/packages/fetchai/skills/tac_participation/README.md index 77c7071e33..1f26f3f45e 100644 --- a/packages/fetchai/skills/tac_participation/README.md +++ b/packages/fetchai/skills/tac_participation/README.md @@ -8,14 +8,14 @@ This skill is part of the Fetch.ai TAC demo. It searches for a TAC on the sOEF, ## Behaviours -* `tac_search`: searches for a TAC -* `transaction_processing`: processes transactions during the competition +- `tac_search`: searches for a TAC +- `transaction_processing`: processes transactions during the competition ## Handlers -* `tac`: handles `tac` messages by the controller for participating in the competition -* `oef`: handles `oef_search` messages to find and connect with a controller +- `tac`: handles `tac` messages by the controller for participating in the competition +- `oef`: handles `oef_search` messages to find and connect with a controller ## Links -* TAC Demo +- TAC Demo diff --git a/packages/fetchai/skills/tac_participation/__init__.py b/packages/fetchai/skills/tac_participation/__init__.py index a0c19cda80..77d489304e 100644 --- a/packages/fetchai/skills/tac_participation/__init__.py +++ b/packages/fetchai/skills/tac_participation/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/tac_participation:0.25.5") +PUBLIC_ID = PublicId.from_str("fetchai/tac_participation:0.25.6") diff --git a/packages/fetchai/skills/tac_participation/behaviours.py b/packages/fetchai/skills/tac_participation/behaviours.py index be8d62fa76..9ffbeb2b90 100644 --- a/packages/fetchai/skills/tac_participation/behaviours.py +++ b/packages/fetchai/skills/tac_participation/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_participation/dialogues.py b/packages/fetchai/skills/tac_participation/dialogues.py index dd6145b313..05a95fbac3 100644 --- a/packages/fetchai/skills/tac_participation/dialogues.py +++ b/packages/fetchai/skills/tac_participation/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_participation/game.py b/packages/fetchai/skills/tac_participation/game.py index 8f571d8929..1b9c9f7622 100644 --- a/packages/fetchai/skills/tac_participation/game.py +++ b/packages/fetchai/skills/tac_participation/game.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_participation/handlers.py b/packages/fetchai/skills/tac_participation/handlers.py index eddb63ff56..c19e662aea 100644 --- a/packages/fetchai/skills/tac_participation/handlers.py +++ b/packages/fetchai/skills/tac_participation/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/tac_participation/skill.yaml b/packages/fetchai/skills/tac_participation/skill.yaml index 465773fd52..5374469870 100644 --- a/packages/fetchai/skills/tac_participation/skill.yaml +++ b/packages/fetchai/skills/tac_participation/skill.yaml @@ -1,26 +1,26 @@ name: tac_participation author: fetchai -version: 0.25.5 +version: 0.25.6 type: skill description: The tac participation skill implements the logic for an AEA to participate in the TAC. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmXMADH6TxdWKhQ5EUxq7XjzHN4ECK3rD6Zj8RV2Pt9DYF - __init__.py: QmQSKhuDHjxdti8sHXpnUcSCCXBj4JkNABQDcQaKNxFYjz - behaviours.py: QmRWqVzd8jCX6WwG8W3yY3c8J23ygCy9rZEtKebyee8o54 - dialogues.py: Qmc9moXyoYeRoz9xixNT9fuhtBbGx71Mn87yBGBuxu711F - game.py: Qmas2ztJL4tapAePMWdWzgLBdcCfkvtA7xuMKpm3NEMQT4 - handlers.py: QmZJYXU6EV5T4BmfygXQwqHPSCPTquNtnQXw3WaQAuDHwc + README.md: QmW3M9mYP2NdtzpBytNaLCUrkno3xZoNieBZ58cdcku5nm + __init__.py: QmNS35yXppvMYqXC9E9P7hw8LYUcuWXdZKP5avkjWNWgT5 + behaviours.py: QmVVeGX9SfhS59k1FDxdUNTexybigvjLRPZiVkrf2yG5kd + dialogues.py: QmWrqCc6RpPQW8Dw4sEocGHSRHPkrnAHfPqLhZsT1H5FJB + game.py: QmP5j5YdYyr5oKN2zGnurzCQSm25qGHh4RG9zVqQLkmdix + handlers.py: QmRDG5WLmebXtahUMG4DBNVgqKZUBmPv6Whvs5ogS58YuP fingerprint_ignore_patterns: [] connections: [] contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/oef_search:1.1.6 -- fetchai/state_update:1.1.6 -- fetchai/tac:1.1.6 +- fetchai/oef_search:1.1.7 +- fetchai/state_update:1.1.7 +- fetchai/tac:1.1.7 skills: [] behaviours: tac_search: diff --git a/packages/fetchai/skills/task_test_skill/README.md b/packages/fetchai/skills/task_test_skill/README.md index 1313d425f4..9be12d64e3 100644 --- a/packages/fetchai/skills/task_test_skill/README.md +++ b/packages/fetchai/skills/task_test_skill/README.md @@ -6,6 +6,4 @@ Simple task skill to test ## Handlers - - ## Links diff --git a/packages/fetchai/skills/task_test_skill/__init__.py b/packages/fetchai/skills/task_test_skill/__init__.py index 17da0baf49..ae52e71836 100644 --- a/packages/fetchai/skills/task_test_skill/__init__.py +++ b/packages/fetchai/skills/task_test_skill/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/task_test_skill:0.1.1") +PUBLIC_ID = PublicId.from_str("fetchai/task_test_skill:0.1.2") diff --git a/packages/fetchai/skills/task_test_skill/behaviours.py b/packages/fetchai/skills/task_test_skill/behaviours.py index ed88002fb2..75ee19cdbe 100644 --- a/packages/fetchai/skills/task_test_skill/behaviours.py +++ b/packages/fetchai/skills/task_test_skill/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/task_test_skill/skill.yaml b/packages/fetchai/skills/task_test_skill/skill.yaml index 38c06a8fcf..89b3fa9d69 100644 --- a/packages/fetchai/skills/task_test_skill/skill.yaml +++ b/packages/fetchai/skills/task_test_skill/skill.yaml @@ -1,15 +1,15 @@ name: task_test_skill author: fetchai -version: 0.1.1 +version: 0.1.2 type: skill description: Skill with simple task to run. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmYkiShbUg3zyT8SMxh9ty2MLg7LMgVwEJAAGxVEXyjRk8 - __init__.py: QmavARvUDakWBvsRjsDZ12f9dDhYb2AnAhA1abkdj464ia - behaviours.py: QmZzbUVcqhgiiXYepQh1B3E2UrJVg3CueDeyjjbVdz7HoT - tasks.py: QmTbr1yQ4dXq9xePffrdXmovaPS3PFiAijVqwVVbtAtE7r + README.md: QmcXGDniXKQgNuoKwYor6mb5qXMWRHSvFT8cppxTj66Ngz + __init__.py: QmVg95RRZXNFRM17PCy8iZSXBzsFo4Xm1PVP9k1nC7epiT + behaviours.py: QmSV3NmWaVLDF5GvCLXMjYSxUqZ5dAT5vXtazNZUtiquV8 + tasks.py: QmUA5k1vGCXVfBA5RTcJZXnbQgy5YL7ZWtVViiJiBVmLiF fingerprint_ignore_patterns: [] connections: [] contracts: [] diff --git a/packages/fetchai/skills/task_test_skill/tasks.py b/packages/fetchai/skills/task_test_skill/tasks.py index 8c1ea20ccb..f3514866c8 100644 --- a/packages/fetchai/skills/task_test_skill/tasks.py +++ b/packages/fetchai/skills/task_test_skill/tasks.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/thermometer/README.md b/packages/fetchai/skills/thermometer/README.md index 760fca0912..8ed80f3236 100644 --- a/packages/fetchai/skills/thermometer/README.md +++ b/packages/fetchai/skills/thermometer/README.md @@ -8,14 +8,14 @@ This skill is part of the Fetch.ai thermometer demo. It can be requested (for ex ## Behaviours -* `service_registration`: registers thermometer data selling service on the sOEF +- `service_registration`: registers thermometer data selling service on the sOEF ## Handlers -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful ## Links -* Thermometer Demo +- Thermometer Demo diff --git a/packages/fetchai/skills/thermometer/__init__.py b/packages/fetchai/skills/thermometer/__init__.py index 0106f4d5db..7ffa498bf4 100644 --- a/packages/fetchai/skills/thermometer/__init__.py +++ b/packages/fetchai/skills/thermometer/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/thermometer:0.27.5") +PUBLIC_ID = PublicId.from_str("fetchai/thermometer:0.27.6") diff --git a/packages/fetchai/skills/thermometer/behaviours.py b/packages/fetchai/skills/thermometer/behaviours.py index a1554e9bf6..59e47acdc4 100644 --- a/packages/fetchai/skills/thermometer/behaviours.py +++ b/packages/fetchai/skills/thermometer/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/thermometer/dialogues.py b/packages/fetchai/skills/thermometer/dialogues.py index fe0a06a9de..35c98da146 100644 --- a/packages/fetchai/skills/thermometer/dialogues.py +++ b/packages/fetchai/skills/thermometer/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/thermometer/handlers.py b/packages/fetchai/skills/thermometer/handlers.py index 2501e55989..464b8a5b05 100644 --- a/packages/fetchai/skills/thermometer/handlers.py +++ b/packages/fetchai/skills/thermometer/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/thermometer/skill.yaml b/packages/fetchai/skills/thermometer/skill.yaml index 76a0bc82c2..87fb69a9b4 100644 --- a/packages/fetchai/skills/thermometer/skill.yaml +++ b/packages/fetchai/skills/thermometer/skill.yaml @@ -1,27 +1,27 @@ name: thermometer author: fetchai -version: 0.27.5 +version: 0.27.6 type: skill description: The thermometer skill implements the functionality to sell data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmdmXfMJB3eGNJYE71MbfdtZPWLDiWKwW4SLhxjmcH45H1 - __init__.py: QmSa7Aay7d3bwNHuoyeVpUBpb4Qqfm1ahBHK6r5FHGHVPF - behaviours.py: QmU6DnhfLsYNGoJMrW9jeQ9CknpJG5cp2WjCFwPQfuJkiV - dialogues.py: QmXxgcYDTbUb68kZdftmQgpQLL4EqnJK6uUpjhbxEfLvks - handlers.py: QmQnyVVwm19b4zZ7gMySETogX9c8Khn3WSHJ5SwU3RNseU - strategy.py: QmeuPS9zgd2edwTyf1NJf68xorpUjuxXW4Utufjk3Fe23m + README.md: QmUTeGxHXAZcM9hLcWTYywxMTdKjw7gQrXs2EAwgqejce9 + __init__.py: QmNmBXfP81RZWToRq1JAoccVj6fgXg1VRFM9wpCrDjgKHz + behaviours.py: QmZvLViapWxG1H41wn4e6Mzt8nmV6yyuk2sSsLJKZTQy2c + dialogues.py: QmZckK3x2oPgXmnP4XaEBJQoaPp8Gh4ojDHnxzeNsTf4tC + handlers.py: QmZ2gCqdxWntR6nB7CZS5UBtKjFC4Y8g5Ex8afJq2B1b65 + strategy.py: QmZGPb3pSyKYcz76yg9XiJYN1PZDjTL8VM7Y4tF19NtE9B fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 skills: -- fetchai/generic_seller:0.28.5 +- fetchai/generic_seller:0.28.6 behaviours: service_registration: args: diff --git a/packages/fetchai/skills/thermometer/strategy.py b/packages/fetchai/skills/thermometer/strategy.py index f1731b74a0..0e073ff83e 100644 --- a/packages/fetchai/skills/thermometer/strategy.py +++ b/packages/fetchai/skills/thermometer/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/thermometer_client/README.md b/packages/fetchai/skills/thermometer_client/README.md index 0ed6b566c8..5fcf4dd159 100644 --- a/packages/fetchai/skills/thermometer_client/README.md +++ b/packages/fetchai/skills/thermometer_client/README.md @@ -8,17 +8,16 @@ This skill is part of the Fetch.ai thermometer demo. It finds an agent which sel ## Behaviours -* `search`: searches for thermometer data selling service on the sOEF -* `transaction`: sequentially processes transactions' settlements on a blockchain +- `search`: searches for thermometer data selling service on the sOEF +- `transaction`: sequentially processes transactions' settlements on a blockchain ## Handlers -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages to manage the sellers found -* `signing`: handles `signing` messages for transaction signing by the decision maker - +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages to manage the sellers found +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Links -* Thermometer Demo +- Thermometer Demo diff --git a/packages/fetchai/skills/thermometer_client/__init__.py b/packages/fetchai/skills/thermometer_client/__init__.py index fc45accfad..10191258ae 100644 --- a/packages/fetchai/skills/thermometer_client/__init__.py +++ b/packages/fetchai/skills/thermometer_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/thermometer_client:0.26.5") +PUBLIC_ID = PublicId.from_str("fetchai/thermometer_client:0.26.6") diff --git a/packages/fetchai/skills/thermometer_client/behaviours.py b/packages/fetchai/skills/thermometer_client/behaviours.py index 6d3046b38a..08b658d2e4 100644 --- a/packages/fetchai/skills/thermometer_client/behaviours.py +++ b/packages/fetchai/skills/thermometer_client/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/thermometer_client/dialogues.py b/packages/fetchai/skills/thermometer_client/dialogues.py index 9119acf663..187b2c5ae8 100644 --- a/packages/fetchai/skills/thermometer_client/dialogues.py +++ b/packages/fetchai/skills/thermometer_client/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/thermometer_client/handlers.py b/packages/fetchai/skills/thermometer_client/handlers.py index 1e422944e5..b8ecd6410c 100644 --- a/packages/fetchai/skills/thermometer_client/handlers.py +++ b/packages/fetchai/skills/thermometer_client/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/thermometer_client/skill.yaml b/packages/fetchai/skills/thermometer_client/skill.yaml index a21c4e5706..485b736f53 100644 --- a/packages/fetchai/skills/thermometer_client/skill.yaml +++ b/packages/fetchai/skills/thermometer_client/skill.yaml @@ -1,29 +1,29 @@ name: thermometer_client author: fetchai -version: 0.26.5 +version: 0.26.6 type: skill description: The thermometer client skill implements the skill to purchase temperature data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmT1Nm7vfaUs3oxt5awfQLkezXkqkkabYaKc2q5bDgdq1K - __init__.py: QmQRt24xAovmPKGVyUFQqd3T2Ud4gfiYFfg7LLnhaCvDxz - behaviours.py: QmNxVQanY9hn7Cp9tfTvJhF7ghLpUBDd8XUVjhfQ5xCsnj - dialogues.py: QmXsn6zXQoqTMQaq86CAEyMJcyN9TQtKH7a5531t3y4x8J - handlers.py: QmbjJFi15fTmvpvZMwkz83vPhw42Kv3E5eXX6yordGsMoc - strategy.py: QmeBdS7qfMfFjty7jCRnuWezsvZSDXwmHZ4NzmEgr6jDm2 + README.md: QmdjHRzrhq636HNZYKaR8YCFKromFJqkKL3vMKHFpnmwSq + __init__.py: QmcrMiyeunFmRmJM8DsLg8FsHbFfqQaKChn3bcKp1sTumt + behaviours.py: QmSr6fB3N7dhVo1cLY1TGd2q8usjGwNmTCNjBBbtgtVf9j + dialogues.py: QmXgXcs25v9ob9a9XwT49wvK788vbUdZyYxUgG3ndHjrix + handlers.py: QmP3Q6x3NMcWgRi6H5GtDtvnLWSoB1HeG8vTd4zcRZUgNj + strategy.py: QmdHPLehqRr1dxuCbp4ENYmVMb8Ykvzg2Uzfos5kFJSr3D fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 +- fetchai/generic_buyer:0.27.6 behaviours: search: args: diff --git a/packages/fetchai/skills/thermometer_client/strategy.py b/packages/fetchai/skills/thermometer_client/strategy.py index 1e762d6755..44b1f2e82f 100644 --- a/packages/fetchai/skills/thermometer_client/strategy.py +++ b/packages/fetchai/skills/thermometer_client/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/weather_client/README.md b/packages/fetchai/skills/weather_client/README.md index 0cd5d30a32..f1921c99b1 100644 --- a/packages/fetchai/skills/weather_client/README.md +++ b/packages/fetchai/skills/weather_client/README.md @@ -8,17 +8,16 @@ This skill is part of the Fetch.ai weather demo. It finds an agent which sells w ## Behaviours -* `search`: searches for weather data selling service on the sOEF -* `transaction`: sequentially processes transactions' settlements on a blockchain +- `search`: searches for weather data selling service on the sOEF +- `transaction`: sequentially processes transactions' settlements on a blockchain ## Handlers -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages to manage the sellers found -* `signing`: handles `signing` messages for transaction signing by the decision maker - +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages to manage the sellers found +- `signing`: handles `signing` messages for transaction signing by the decision maker ## Links -* Weather Demo \ No newline at end of file +- Weather Demo diff --git a/packages/fetchai/skills/weather_client/__init__.py b/packages/fetchai/skills/weather_client/__init__.py index d4db1b5dd1..f8b8d80781 100644 --- a/packages/fetchai/skills/weather_client/__init__.py +++ b/packages/fetchai/skills/weather_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/weather_client:0.26.5") +PUBLIC_ID = PublicId.from_str("fetchai/weather_client:0.26.6") diff --git a/packages/fetchai/skills/weather_client/behaviours.py b/packages/fetchai/skills/weather_client/behaviours.py index 6d3046b38a..08b658d2e4 100644 --- a/packages/fetchai/skills/weather_client/behaviours.py +++ b/packages/fetchai/skills/weather_client/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/weather_client/dialogues.py b/packages/fetchai/skills/weather_client/dialogues.py index 9119acf663..187b2c5ae8 100644 --- a/packages/fetchai/skills/weather_client/dialogues.py +++ b/packages/fetchai/skills/weather_client/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/weather_client/handlers.py b/packages/fetchai/skills/weather_client/handlers.py index 1e422944e5..b8ecd6410c 100644 --- a/packages/fetchai/skills/weather_client/handlers.py +++ b/packages/fetchai/skills/weather_client/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/weather_client/skill.yaml b/packages/fetchai/skills/weather_client/skill.yaml index 299ec3d46f..28a88e5642 100644 --- a/packages/fetchai/skills/weather_client/skill.yaml +++ b/packages/fetchai/skills/weather_client/skill.yaml @@ -1,28 +1,28 @@ name: weather_client author: fetchai -version: 0.26.5 +version: 0.26.6 type: skill description: The weather client skill implements the skill to purchase weather data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmPmhswajW8dw1sJgvkCQXYMVCf9nCsHxJX3nzX21qEbN2 - __init__.py: QmWU7bcqd2wCASp7sVsm6XaxgfqchXDv8pPYHqciH3zRxH - behaviours.py: QmNxVQanY9hn7Cp9tfTvJhF7ghLpUBDd8XUVjhfQ5xCsnj - dialogues.py: QmXsn6zXQoqTMQaq86CAEyMJcyN9TQtKH7a5531t3y4x8J - handlers.py: QmbjJFi15fTmvpvZMwkz83vPhw42Kv3E5eXX6yordGsMoc - strategy.py: QmeBdS7qfMfFjty7jCRnuWezsvZSDXwmHZ4NzmEgr6jDm2 + README.md: Qma4TrocZKtFcLeL1xKZxwz5no5qVHp5HjLrynYsKpw15Z + __init__.py: QmTEC9T2zb2a9pYoVeAJigGhAjKWN48MUnTRuyqm761UdM + behaviours.py: QmSr6fB3N7dhVo1cLY1TGd2q8usjGwNmTCNjBBbtgtVf9j + dialogues.py: QmXgXcs25v9ob9a9XwT49wvK788vbUdZyYxUgG3ndHjrix + handlers.py: QmP3Q6x3NMcWgRi6H5GtDtvnLWSoB1HeG8vTd4zcRZUgNj + strategy.py: QmdHPLehqRr1dxuCbp4ENYmVMb8Ykvzg2Uzfos5kFJSr3D fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: -- fetchai/generic_buyer:0.27.5 +- fetchai/generic_buyer:0.27.6 behaviours: search: args: diff --git a/packages/fetchai/skills/weather_client/strategy.py b/packages/fetchai/skills/weather_client/strategy.py index 1e762d6755..44b1f2e82f 100644 --- a/packages/fetchai/skills/weather_client/strategy.py +++ b/packages/fetchai/skills/weather_client/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/weather_station/README.md b/packages/fetchai/skills/weather_station/README.md index 0be0db4d48..28656f029e 100644 --- a/packages/fetchai/skills/weather_station/README.md +++ b/packages/fetchai/skills/weather_station/README.md @@ -8,14 +8,14 @@ This skill is part of the Fetch.ai weather demo. It reads data from a database, ## Behaviours -* `service_registration`: registers weather selling service on the sOEF +- `service_registration`: registers weather selling service on the sOEF ## Handlers -* `fipa`: handles `fipa` messages for negotiation -* `ledger_api`: handles `ledger_api` messages for interacting with a ledger -* `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful +- `fipa`: handles `fipa` messages for negotiation +- `ledger_api`: handles `ledger_api` messages for interacting with a ledger +- `oef_search`: handles `oef_search` messages if service registration on the sOEF is unsuccessful ## Links -* Weather Demo +- Weather Demo diff --git a/packages/fetchai/skills/weather_station/__init__.py b/packages/fetchai/skills/weather_station/__init__.py index 60263e3a86..9cfa5dac61 100644 --- a/packages/fetchai/skills/weather_station/__init__.py +++ b/packages/fetchai/skills/weather_station/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -22,4 +22,4 @@ from aea.configurations.base import PublicId -PUBLIC_ID = PublicId.from_str("fetchai/weather_station:0.27.5") +PUBLIC_ID = PublicId.from_str("fetchai/weather_station:0.27.6") diff --git a/packages/fetchai/skills/weather_station/behaviours.py b/packages/fetchai/skills/weather_station/behaviours.py index 74f437521f..b3d842d8af 100644 --- a/packages/fetchai/skills/weather_station/behaviours.py +++ b/packages/fetchai/skills/weather_station/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/weather_station/db_communication.py b/packages/fetchai/skills/weather_station/db_communication.py index 8b0a822bb1..e525cb8e8f 100644 --- a/packages/fetchai/skills/weather_station/db_communication.py +++ b/packages/fetchai/skills/weather_station/db_communication.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/weather_station/dialogues.py b/packages/fetchai/skills/weather_station/dialogues.py index fe0a06a9de..35c98da146 100644 --- a/packages/fetchai/skills/weather_station/dialogues.py +++ b/packages/fetchai/skills/weather_station/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/weather_station/dummy_weather_station_data.py b/packages/fetchai/skills/weather_station/dummy_weather_station_data.py index 9649f1eb1f..7180a67e09 100644 --- a/packages/fetchai/skills/weather_station/dummy_weather_station_data.py +++ b/packages/fetchai/skills/weather_station/dummy_weather_station_data.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/weather_station/handlers.py b/packages/fetchai/skills/weather_station/handlers.py index 2501e55989..464b8a5b05 100644 --- a/packages/fetchai/skills/weather_station/handlers.py +++ b/packages/fetchai/skills/weather_station/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/fetchai/skills/weather_station/skill.yaml b/packages/fetchai/skills/weather_station/skill.yaml index ccc5967180..6f2eb302fd 100644 --- a/packages/fetchai/skills/weather_station/skill.yaml +++ b/packages/fetchai/skills/weather_station/skill.yaml @@ -1,31 +1,31 @@ name: weather_station author: fetchai -version: 0.27.5 +version: 0.27.6 type: skill description: The weather station skill implements the functionality to sell weather data. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - README.md: QmV56JmGf2DsJw3m2zu8fjL7Jvgdtsg7pXsgN7J35suZk4 - __init__.py: QmSmrbiEqYxeYrMMoQfCqBCigvE5dwsnPP6z9TwA5i6Ro9 - behaviours.py: QmWSZHCVxHv59bt72xutyBK7j81jCe92rYeWZ8ZQcYA52G - db_communication.py: QmaJ4m3e2ndNhCsJJJ6rFGdWv4uWKc718X1zGFGGoRNPAq - dialogues.py: QmXxgcYDTbUb68kZdftmQgpQLL4EqnJK6uUpjhbxEfLvks - dummy_weather_station_data.py: Qmb5o8HssrGqBgZJLGzbhtdacEjPZj1C9tsFvye9XUtGkg - handlers.py: QmQnyVVwm19b4zZ7gMySETogX9c8Khn3WSHJ5SwU3RNseU - strategy.py: QmYpmkD22Nj1zrD4cUxCow3yAsUqYDjRm6NCMeUdiG9t9F + README.md: QmVbpEJquwxzBZ2feJuRYBWrWjxQ9jhE1Er4LvmPU24ki9 + __init__.py: QmPR7BN5S1moGnV6Wf9SjNE1Sm8tGd4aXLEp2G48Ys1LWM + behaviours.py: QmaRDMaDVsjVfkAtAHkWLU9Fa88UxyLTczdkm97E9c5TFT + db_communication.py: QmYY2eMJ8YHSnkKzvrQYe46rgwZJCjwDayCGKv8C2HroRQ + dialogues.py: QmZckK3x2oPgXmnP4XaEBJQoaPp8Gh4ojDHnxzeNsTf4tC + dummy_weather_station_data.py: QmTXFBa29Zi62jPJksjfUAvNCpRJVBkTGK33bbekaP4Loh + handlers.py: QmZ2gCqdxWntR6nB7CZS5UBtKjFC4Y8g5Ex8afJq2B1b65 + strategy.py: QmTdN7JpBdbfVJ2sSW5VQuWprfB4kUawF5PqQMC3AVcxds fingerprint_ignore_patterns: - '*.db' connections: [] contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 skills: -- fetchai/generic_seller:0.28.5 +- fetchai/generic_seller:0.28.6 behaviours: service_registration: args: diff --git a/packages/fetchai/skills/weather_station/strategy.py b/packages/fetchai/skills/weather_station/strategy.py index 6898cb4936..6f52b2c3ae 100644 --- a/packages/fetchai/skills/weather_station/strategy.py +++ b/packages/fetchai/skills/weather_station/strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/packages/hashes.csv b/packages/hashes.csv index 0a2515dfdf..fcc4a94c43 100644 --- a/packages/hashes.csv +++ b/packages/hashes.csv @@ -1,119 +1,119 @@ -fetchai/agents/aries_alice,QmNWJQkuoVNopQDYY7p1YkXGkvdi8eaBrn6qdzUEzFYJrt -fetchai/agents/aries_faber,QmNtJEXZBozPYxAHkqnP3zkmniEi4nXwvHEkuYwFmJgK64 -fetchai/agents/car_data_buyer,QmNySV8JzviUKC5wMqx4wM7HePHky2bhETM9Dsv6QfHgNc -fetchai/agents/car_detector,QmR58ffeqVsTWpKj9MaVk4k9Eyh4ZM55qkAQHHRgBN5RrT -fetchai/agents/coin_price_feed,QmWbQmUvQ7HgPzG9Srx4TW389pdigKooVgmzqKhheRNWkZ -fetchai/agents/coin_price_oracle,QmWyiDHqdMEWdCtqNzQ9JdF8i4Q5NY9L62htTM2iu3AQjw -fetchai/agents/coin_price_oracle_client,QmdK4ByHbuamz6QCpYQmn9BTiqJfCqpk2VRRwb8qGh3crs -fetchai/agents/confirmation_aea_aw1,Qmc6oN9GRwfww4aHMGymhEW9wSyyoKtE5Xc54fs71sG5VG -fetchai/agents/confirmation_aea_aw2,QmUEGiVmwgLP65jgzw44wHD61G2fiSZC3e37N3KLP2QyK8 -fetchai/agents/confirmation_aea_aw3,QmWprPePHGAFJVRheU7tquHL7bqup3wYD62xBph6qSx24y -fetchai/agents/confirmation_aea_aw5,QmSHX7itB2gxEZNkEysmt8Qrarc9dXghDJ2ZK7iMMQn8qs -fetchai/agents/erc1155_client,QmQ8kE7DCJi5mXWfHbPfW3Lv6rMfmAAZ11uuQUdedkSAAk -fetchai/agents/erc1155_deployer,QmdKybfNFHSCWStHffEusiQThk16sovz94kWYp5YYADmV2 -fetchai/agents/error_test,QmXXnkxCrMKK2nba2UVjofKgNrGRaxrhvqhNX2PkZqrgd9 -fetchai/agents/fipa_dummy_buyer,Qmbrs5FPFXPbFFBMa8Kth12Yrx8sb4c8GdbHCZ718N183G -fetchai/agents/generic_buyer,QmVyvrfL3JBHnvY9CrnV9yqG9KVtz7t31cZr15nE26za9u -fetchai/agents/generic_seller,QmYStzCcrU4q1kJiFix5kVgcKWPjC5QWjXy4e63cNRPfqz -fetchai/agents/gym_aea,QmXw5DDYJjpLso9yKbtc1umsqz9XxYi21QuDcVkrA181tC -fetchai/agents/hello_world,QmZ1Zf5HUo1hS8t9TTsFZX8aYsFjknN3Tny2aF4AV9gr1s -fetchai/agents/latest_block_feed,QmYEDg2MrWFmD3FzT1n2WyJ9M8892SH3y7CntbBMYvCBHu -fetchai/agents/ml_data_provider,QmWyFi6bB8Q2ZqQfSKHazYyvbpYkA8Cxipk7ToRxUjny27 -fetchai/agents/ml_model_trainer,QmeZf18pg1rpfYxdCy2LiaM4r1vqhpCRgW96d6Uf5Xd4TG -fetchai/agents/my_first_aea,QmPXDz7a5Rie9b44kJY4p9Nj2P6vJbLHgvEziPhQKdoQWW -fetchai/agents/registration_aea_aw1,QmSJapmBH1o5CLoq72JoQyAunrpbeZC1JgAbXx1Emuc6jw -fetchai/agents/simple_aggregator,QmaHpMKj9fts4LwMDkETy5L7oTkMHHcqkFoLJpX3vXsn8q -fetchai/agents/simple_buyer_aw2,QmbFyS6f7wZnVbiEEQroAdTHdB7z2RNpU7BKE3jaxmgfdy -fetchai/agents/simple_buyer_aw5,QmPRxczS8uFycFjNEdiopEqknVHLnYjUrwY9LyF4ZNQyJ8 -fetchai/agents/simple_seller_aw2,QmeASk1owaDjWiZkYSheGSaGWYaonQjSpAkUpWRNfR2Vz1 -fetchai/agents/simple_seller_aw5,QmT443Y4UcoirDLvkHe9KGuJf8GzvEnqgNAZKSgThxwgFs -fetchai/agents/simple_service_registration,QmNpkNzhHyDr7GbsrriqkqDQEWym3sx48jhjp4GzF5k9DK -fetchai/agents/simple_service_search,QmU4WG4iD7E9JzpCfDqeGzsByazyZ3TTHN5wCx3yhDZ3s2 -fetchai/agents/tac_controller,QmTwzz3NwztyAjdEccC4Rq45fYcHVZWrSR4rZJz6pxFymX -fetchai/agents/tac_controller_contract,Qma51FtBt2R7wxkGTqvkWFgQ3teZzbVLSGVdEHhRbcZywm -fetchai/agents/tac_participant,QmXPq16BjJsqxbVB2mEWf2npaBvkXLYHfNt5wijC6YK5Xo -fetchai/agents/tac_participant_contract,QmdmDACF2eBjDoMdGWLktoX457pVMhC5zeux4CFuFCwEMH -fetchai/agents/thermometer_aea,QmPUatESAbWbyQyhTPTFCroo3wZQh2RqXE9uJB2qUGfk5M -fetchai/agents/thermometer_client,QmPRGD3J9qjxiFFzmQ5GTE3em82kYgXZCBV3VBsueNTW5o -fetchai/agents/weather_client,QmRLD1bqumvgohLFpoJJigoLsoZYuyBRFzMe9qKddNYhdU -fetchai/agents/weather_station,QmRL3siKgX2WwJhTnShJh1HiXQPuKncmQ2hkeoRy1fo5Dw -fetchai/connections/gym,QmVgExT8jot16LB8aMLixXKGLYFHUWvpnSNKFV4GysDEbF -fetchai/connections/http_client,QmXNwzFrhedJCZHLYrEY2iZL2gp1t6jbiQjrecwCHt7dBg -fetchai/connections/http_server,QmYqQGcqqdosvderTV4hSstu9hQqxZvvePiCS7fkeAkyhn -fetchai/connections/ledger,QmejA8nVKXYT9g1iFKUGaEMDh7vHCMxZxTuAzfSM4hkdza -fetchai/connections/local,QmQrn3UqRhwrt1NhzBWSi1k5RdTyzZQw4CCUoX1bAzFB3B -fetchai/connections/oef,Qmen8dyfnxhVE5Aczr7JJDaj9Q39EVZPD6FDeSW27KC2mV -fetchai/connections/p2p_libp2p,QmXWgyhdowaj8qyWbCzFiSMtUXpZ4USwmyag4fsTgmCQCD -fetchai/connections/p2p_libp2p_client,QmUePnKUknogwNC7mWrmTRsCXcZvwNdcnGmKg29Z4ZdWWv -fetchai/connections/p2p_libp2p_mailbox,QmSpgivnHcKPT2HA56HAN3Z7PfEHv9jvwJajHCWuMYc2eF -fetchai/connections/p2p_stub,QmTNNPjzfmmJ9LANFNLcb6R7UJipvbhiVP4XPJTjmTeUef -fetchai/connections/prometheus,QmYRVim26Yejho1DMkdymFD48ptiqnfiZoQ6QHeMdNih5R -fetchai/connections/scaffold,QmPgH9YEPE7hvWwvcpNASt9UtPc3qzFChjVvLdpuP2LpZJ -fetchai/connections/soef,QmV6kpRR5Ba7WsfjNkHRnPebuCRtrnbMmc1HZBuEgWpPcN -fetchai/connections/stub,QmYnsC2zuJrkdaqZDduurxTt81dACnj9aTuCysZDinG65e -fetchai/connections/tcp,QmYu9TQHBgWijZkexTKbM7hS634w4yDVfoYndJvUUKBsdE -fetchai/connections/webhook,QmXkDPmYzaiNRNoBfHtBdKJziovc7G7ojjkKvjAS66mELR -fetchai/contracts/erc1155,QmTEGontuT5n5xES1ys9hi4QpKveYNPghfJMtRadFfCeLx -fetchai/contracts/fet_erc20,QmSjyBQzzxHTwydFDhEQgqoPBynP9VrDuqeTr6b6ARxkf7 -fetchai/contracts/oracle,QmXJ8x16PCbFnjCMZuBASVHohY5EWVf4JxHB5T2TgXeFGV -fetchai/contracts/oracle_client,QmPatPGgBZjkRp8tCWdXKQPAYSJqzbnhWbVbJzCVavJmw8 -fetchai/contracts/scaffold,QmQcsrXKtEkPsxnzxJgDVopq6Su2fGAzJ1Vzs2DYqkWjWt -fetchai/contracts/staking_erc20,QmbTPkr8cFEfVgAxUVGEckapyyBEAXk21SvZViqdbreBKc -fetchai/protocols/acn,QmTade4yLv2MEGnWf4kyJwJvjiXnHd5cLXauN8if6X21nU -fetchai/protocols/aggregation,QmTnS1HZTQ8skkxDCr9ysXuNCMRPsKcbJ8UpDg9kPmvnjx -fetchai/protocols/contract_api,QmVpe7PkjuG4DBEN4fpYupBg13Y5u4hMV74ahaQqkMQoUQ -fetchai/protocols/cosm_trade,QmWXBLXxqTnAZ5wWtAFjhMctWmE3zzaatAYkm56Vgr9QTe -fetchai/protocols/default,Qma7PhcudRh1x6Pu4NeYz4XR7cVtvwd5nBgripCkrnbDFz -fetchai/protocols/fipa,Qmd27v7RWuJ93yfkteQEGXbgTAhCQtGYEVJsWGLsdQffRY -fetchai/protocols/gym,QmZVRxWEiCkiXTZd6WnrWZJN152ZoiimFocbdps7Ba3b9m -fetchai/protocols/http,QmQURf54Hhiti5afjr5U3sPrykpviMYhvMAFXJx1ftDG14 -fetchai/protocols/ledger_api,QmNecxRWA1KSRXzRyBxCXbzdMppQnpgvGkjcxWio2tDDmj -fetchai/protocols/ml_trade,QmYQbHkDkxxhj9CKeUuxtKtsGR9Nagr5EkF1Q3ZZAuqWAL -fetchai/protocols/oef_search,QmUoHHEYsN931PfRk6bjZ9SXqLbrYMo3VbKRFXwShDceUk -fetchai/protocols/prometheus,QmZfjSGoPfsK749gsuTnRmJELMKgExErQSzeBQv9Gjkd5R -fetchai/protocols/register,QmeWAVHMahXzve7DcJz8BTNDd4eJYaX3AP3tsHyHXC6R82 -fetchai/protocols/scaffold,QmVWbfATDgeerXzM1zBGZcruiWb9gbSf69PwmqbVKU7MXV -fetchai/protocols/signing,QmXJQ2amTamD5qALxMrhjJzAKv36kdyeaM7HmGsVt6ABig -fetchai/protocols/state_update,QmUCNSQzpMd9BZ5jFpEwMWFb6a251HwTj7VAHsNoiYb6Kj -fetchai/protocols/tac,QmQzsrx7op6uCGHiAagCWkLNcSnwTMgT1dj6TkkoPr7s2L -fetchai/skills/advanced_data_request,QmQQXK5f96tgVZsXqpbw842zcZ5ZuBEnajWcrtHhyoFAUh -fetchai/skills/aries_alice,Qmbo52NwuXN7yvz5oCvpubK3H4xCeb7XwfZdczfSSaxsNi -fetchai/skills/aries_faber,QmbC2LA82FTZoL5va4UYPYtmUpuWMHWJBxLWiPiaHBwwNQ -fetchai/skills/carpark_client,QmSpuDcDeebB8ztWWopeViBbdN7jnwuGhNSPKU4GvonDEF -fetchai/skills/carpark_detection,QmbDrLSmuDUxsgRtRzopsDukSmnEz7GESpawvoY2WFQ44W -fetchai/skills/confirmation_aw1,QmRiGz8pr1oHYxmx8fuBtXbZpy7xo6oE6YAN5GLUaqEWWF -fetchai/skills/confirmation_aw2,Qma2G2QFbQhugVUHAF7qnib7kzdCwyDokcygCQTjrx77QV -fetchai/skills/confirmation_aw3,QmQK1j2X6ESSP2mR6kMR54dX7KtpCwuJZo4eJhxQ9UizXR -fetchai/skills/echo,QmQMG7s7KUVu4qvgzEgq3ajXvxEBn5ELzFm8hFN7fqGCXF -fetchai/skills/erc1155_client,QmcCXEZAMRcRG348k4pJH5XHvJw85ahU6BK8nx5kV9D7dK -fetchai/skills/erc1155_deploy,QmTpZWLuEpK1YeHaJzVrKfUnkgJ9WfhKkPQW3s4ydFoBaQ -fetchai/skills/error,QmTCPFVWMF2BCjtc9R79ayueAP1WPF2PPdD2w59siVKu6B -fetchai/skills/error_test_skill,QmUnaKbqJsfaG7mthrcViSoh28PPLtH74zt64fgYie3oL6 -fetchai/skills/fetch_block,QmQnJLYHD4Y6JmU7PEULkpBD3pifTjQSMmGmgX2i8p2Bod -fetchai/skills/fipa_dummy_buyer,QmZ29tmCFWvQMdqSmh5BKxsUGzXQTr1eBsbFb3F3vguhhC -fetchai/skills/generic_buyer,QmaJJZmQ6rsTzgyzmCsCrCQP5a6xho4cqyMV6zQe2YRcLo -fetchai/skills/generic_seller,Qmbx8aMCKGJi4zE5go1y7JPabZpkihMzkWsm9BKE5Z7q2n -fetchai/skills/gym,Qme9hyuyr2rHNH25MVXuN2ErTKXugEaYCe9Pj2gyDLmwRH -fetchai/skills/hello_world,QmTyPCVbCCN75T1R2bHbENo7L9bpiXzE6kQfWoryYgizfQ -fetchai/skills/http_echo,QmVAwferALUMqDiRJ4sp2sBLkheKEbCKegAbFs9egVecX3 -fetchai/skills/ml_data_provider,Qmd6RSFJ8SmSKTBete3Xrg6ZVua5HgQCqqdcJRwnYwoxqP -fetchai/skills/ml_train,Qma9TNrEaws8WgZepK3HGwZ7a9eZmLCECBVyXmYPNVf1cd -fetchai/skills/registration_aw1,QmYR1oL6Q9KK4ko3kEiCLmPSRuvgCHBpJ9zvszk5Tr5ksV -fetchai/skills/scaffold,QmbiJHvKtBqGYBNiKcgdVnubGSAXDfSjknMH1Fngzqe5WR -fetchai/skills/simple_aggregation,QmUdZgW7JLxoqwRPGehoEL7ZqDBnG9awKSUyUzhv6wfv2D -fetchai/skills/simple_buyer,QmRSmCcvbMVL3PCddXm8zmUBdoURiLEPi7bGHhEBHJ8Su2 -fetchai/skills/simple_data_request,Qmb3NV1e7sVK8vscv4VF7CpDXyNCxa7kEz6H4xQ8uWVNBC -fetchai/skills/simple_oracle,Qmb3Agye3jZQYRbWKCxSvABeVUp4qd37nLQPsDuVrFZ9kq -fetchai/skills/simple_oracle_client,QmX9tX1GW9fuR5nkMmvM11PKdGWTM6K33D7c9hMRWNhJj8 -fetchai/skills/simple_seller,QmPCwENun6XnoFPtXbkstzxowPcUGP7QF82Jp9WKA3AYst -fetchai/skills/simple_service_registration,QmRF1tv732cE2K2driHtrkyopDRgU7A6gtiDrFcJwLmgoc -fetchai/skills/simple_service_search,QmbNdsei5CPZy6waSoLSF9d76bJtn6TtPnnaHLcFZuvr66 -fetchai/skills/tac_control,QmWco7neLXRanbMYL2TbMcmtdiJF4TGvrnvZ7dNKzwGKzE -fetchai/skills/tac_control_contract,QmapmzcmKnxQJhxUksT7XW5Mb8gLD5aUvw4RREs5CB7XjV -fetchai/skills/tac_negotiation,QmZxHtkPkPeTpBxbrrWgsDgi4eSy3J41k2943s8Jjh5uku -fetchai/skills/tac_participation,Qma2wdKg6oQzQkRRPfSqmiyy1bKvuCX5r4Bd1BKxZygrTo -fetchai/skills/task_test_skill,QmRuZXLQq4aW6EWgxnXbZRZZgG7JygAcNiCUBegXWwT2Lj -fetchai/skills/thermometer,QmdNPFe3JzBEu8AvitMfPH41KebQH1YXhUPuuKegx3vgX6 -fetchai/skills/thermometer_client,QmX7bfkXgmDEXitJSFVegpmpSh87KTNtkaB3Q8jxd1L5S1 -fetchai/skills/weather_client,Qmepiq3C2T7cVdi6z8CbNYCgkNBgGjQAcnELY3ebBS7rJS -fetchai/skills/weather_station,QmYtBx9jGWrqPws3nsPAAhudcHcJZg9skGACVT9psadwW4 +fetchai/agents/aries_alice,QmSVGggvwbxziatmYxgzhZBuqNp5GSjmZuuvPYshNstCyK +fetchai/agents/aries_faber,QmUAAu88wkoa3EM7RZrNsJ9h7Pj6p5w1d1nNHzsSVGyWoh +fetchai/agents/car_data_buyer,QmTqTbUpRv7ktaXPe1yicvvkfzBvd48uyoEodanMJREQW2 +fetchai/agents/car_detector,QmdQEkPuy7KfpFXttSzoRjw9GoX6KJbroopUjQcYAxHevM +fetchai/agents/coin_price_feed,QmXiv1BkaBaQcvm6JfKYrUpycY8TQZEf14rzMQnVWtjBuq +fetchai/agents/coin_price_oracle,QmaT13ZATFEDPuw4BPECZ4hrgpBj9L15XcRx2SxUH5wFZd +fetchai/agents/coin_price_oracle_client,Qmb9WaU3ZGZBHQjHiSf6e6CShSz8JVpaxm42T6EHuzoGRG +fetchai/agents/confirmation_aea_aw1,QmRbg76Kh7Ew9VD47hb9L8kC217oUJWn68dtTfeeBj2AZv +fetchai/agents/confirmation_aea_aw2,QmRUvLAKLB1eppazDByupnH8eErLRoFaiBWQQv5KoHBubu +fetchai/agents/confirmation_aea_aw3,QmaFMsn4fVCpnnHbMcGZk2GtdVugjbnsEwTyTNwQMznJxo +fetchai/agents/confirmation_aea_aw5,QmfQbjLsvXm4eK8HtfMJBGaAr2dmLN2WfH59H1fBL6B4Yp +fetchai/agents/erc1155_client,QmX43bRz1n6ZiFTtwGFMvip4GrKYNEikywbdaYKSXqxEnX +fetchai/agents/erc1155_deployer,QmTnz2dQ8HxsfM9zYTaZzFgJrouCz5hXstZz7GBanNosCC +fetchai/agents/error_test,QmQH8h8mzs87wdC4pYoeKEiJAyQmifhVBvaPs643qXk9A2 +fetchai/agents/fipa_dummy_buyer,QmTGcmMQA1aSFF1LvmNrVk72qJ8YQu3k7NcE6FCNAvEggd +fetchai/agents/generic_buyer,QmPVHoQAcqetX3B2UVsqH2K9LWVSarWxgBgfApePDqbTca +fetchai/agents/generic_seller,QmdB7xfGviAypy5Xbh3vtattyrYGKXSGsrQqywfo9XspXk +fetchai/agents/gym_aea,QmfZsRWfudLF4JcG75wMvKHX7ncJa6vSmJKwGcoKfSiEos +fetchai/agents/hello_world,QmRDz4xeFfW4zMCmndaEkWkg8yz5K6tXgnUrfq6mzmnjot +fetchai/agents/latest_block_feed,QmQ6VPSxHoC7rnhy3b6K3ksTonJ82TC4MoJRn8qi9VGWP8 +fetchai/agents/ml_data_provider,QmdzzZugBvfTfzZ6TNJoQCfL1mLLg9R7KNSTmBTmU1fbiu +fetchai/agents/ml_model_trainer,QmNqhDoZpwf8oAxbdcRrHXW9JyjAoMBmjjuGT6EuwCVXua +fetchai/agents/my_first_aea,QmcCvC8HagrMcpKVDzjADy1SsiqYPGGRjafhBHJa1Xr1qR +fetchai/agents/registration_aea_aw1,QmU3sSdJ9jpcdiU9Davcz6QtoLShPqEcSgk6CXdRXwMuL4 +fetchai/agents/simple_aggregator,QmWh4zCi4Pbuy8w4Li7FYLzHrr7h7tAxrS5NgY3bSwwmPb +fetchai/agents/simple_buyer_aw2,QmSxMusFh7FAWQ68kEVCqt4KNHT9r27fmhtgvULqVVZ7Cj +fetchai/agents/simple_buyer_aw5,QmXyEPAk3CBWFMhko48JUFAJJtKTYfErWj2cU6caRD3bEk +fetchai/agents/simple_seller_aw2,QmNnStVWhTGVhinc5DkT7qXqhLQa48TafmHf5KqNM3mnLv +fetchai/agents/simple_seller_aw5,QmcQekaHYcXeCJ31cdiv89Pz3KSe5dPsY9QWso6xntDHms +fetchai/agents/simple_service_registration,QmejN5MTSFDYqgk55w6mibYaBsUEAQGg9Pt3uaMjkT69vR +fetchai/agents/simple_service_search,QmToaJcurxQHQG1pX9nfR4UgWGxAfu9vC5uruCu4s4nhRV +fetchai/agents/tac_controller,QmW1SUYBsGAWfgetVChEUweXYenZv6gbPfJcrXsQW36T7C +fetchai/agents/tac_controller_contract,QmPWkjkgKNx59jtCgqezKQHnRjoBfzRooShkvE6sT1ti8T +fetchai/agents/tac_participant,QmbCnA38beKrg86kxjaKa5A87ZfQE1rYgbubHQGhWwdQgp +fetchai/agents/tac_participant_contract,QmT4PkNF2cpJgpR4oUubwvwxPqdF5qJeTQFhjjLePunCa5 +fetchai/agents/thermometer_aea,QmZ48DA8dpc6bt5qygU9K5RVdrNdSy3yji7z5nM3f38EF1 +fetchai/agents/thermometer_client,QmS5drSLH3kNLhFvDfmdEh5MvtwXnfFdNNEvwFArfyq5Q1 +fetchai/agents/weather_client,QmV3jNVcYG8vrrbRK4ZQ7NSr949iJVKh8awPSxXV6Arsn1 +fetchai/agents/weather_station,QmdHEjfCrn6EmkVC2xuLsq4J8xae2ZPtdga3NmWGfiBrqV +fetchai/connections/gym,QmYoYrLTgA4HBcprxVmWJwGzrmKcyjsBYVKamcStYVGzJr +fetchai/connections/http_client,QmPXUdzkaZt2CSUXeyrc1gTj7eHfuNKa9XL3gvoohvoGgt +fetchai/connections/http_server,QmSA3qQVrztMucpZevvvAe1mLFPknNBKEXZSq9kAQJP1he +fetchai/connections/ledger,QmcEbe77YiRRwCbAh1JduyPsABSUYDnsJSNZ4BicEoiDDN +fetchai/connections/local,QmQogxCUruQTzCKQxnrquEnmUNsoV9NjdDYqwng37uhgf7 +fetchai/connections/oef,QmfUr3wQyHMnQ5C57NeD3ypL2JPe2BVMM8w1DZ79e63ycK +fetchai/connections/p2p_libp2p,QmWpakcMeK6DGa7BSUtnXK7cAW1shLpK2UjDsKwjFu9jcS +fetchai/connections/p2p_libp2p_client,QmU4NArBA92C5GfGUNuXB1zo8kz5DoNuYjM2Zwmu1g6YHp +fetchai/connections/p2p_libp2p_mailbox,QmTNxWRQSU6KtuYqBog7WKvYwuTswHJ7XunxtAtbiNTpCv +fetchai/connections/p2p_stub,QmQjwk8myY3JgVuwKLnoMb4e6DGeomaBY5ETFxgn45cZZ4 +fetchai/connections/prometheus,Qmdb1fEagWSxbwPZsVytdzrQ1xFbKXvo5ZVWUZTxfhtBze +fetchai/connections/scaffold,QmYRgd4gLA3CtevU3Rj72Vafu9V6sjk4xRrHu5JosvB7gP +fetchai/connections/soef,QmYU9X28XttovDc27mLWZznG1KHNJjgcUxE8rhNfVLkvah +fetchai/connections/stub,QmYKqNesPLTz1RiTGTXS5qoZTDnWxsMqP12Dfj93TrT1Yp +fetchai/connections/tcp,QmdaPEEGf2oL6uV1CGqPR1Dm2t4mh9nadqg3tU2waZPr97 +fetchai/connections/webhook,QmfXrJrSjbX6xw2QpkvZPibdGXmtRAY7mcScTYvUJ9ztvP +fetchai/contracts/erc1155,QmYd8y8nccJwdsbrh3Muq3xJZgjpEEWXATWeydoPhvuQ78 +fetchai/contracts/fet_erc20,QmPddVorxNKahXJJPAaRFo39AsDkE3bJWerQSDY8iY4zy1 +fetchai/contracts/oracle,QmPdNhJTFquUbFigNQFtM3ne2QH24NMVsz1bvuCezg3T1M +fetchai/contracts/oracle_client,QmdrkLzEdUFThsLwnhQLmH3gyWG1keB6Fawo2VKLdaYiQQ +fetchai/contracts/scaffold,QmVgRzr6yJ3AV2Y6DFxz5EMtTgDmSkeg2b6Cx3H2WkFBHR +fetchai/contracts/staking_erc20,Qmf7hfDNUWCBzZij7bWVtNgKGVVodp41oWTDymzpS5oEKj +fetchai/protocols/acn,QmNQpXzAGSzu3nBW4sNvnUVrjbxn7x6ZWGoP4ttWyXdrW1 +fetchai/protocols/aggregation,QmX3Mrkk2SagPESD6z8ejtUiVP2ZC8j7w4QRfYTGNj8USe +fetchai/protocols/contract_api,QmUuKXkDbArLq7URiEjgJy2eN23KciXUsR5f6tV1mdRaYZ +fetchai/protocols/cosm_trade,QmTpGR4Svn5d9UBix3RpQfRLgWXXHBmpdw9zmbWK7pvH3i +fetchai/protocols/default,QmVTKic2PP7MbaE5Dnfgy3CLZn6WTwcJ3r6sq5dKBkooLL +fetchai/protocols/fipa,QmZ4deeTdrcp1tP3UbBDxgSR5jEjsyvRqdN7aiNaNjnD3n +fetchai/protocols/gym,QmWdcJWAFNb4eCCHS2T8bzzpzDFgpMMkamM8JY3bvgTUuz +fetchai/protocols/http,Qmb5yKV5p7TiNa1X96VMpdA2MZU6exHAEfrJenhUsjUBWX +fetchai/protocols/ledger_api,QmVc7nC5T9swaBskuAKQkzzixQVQ6g1gnPpopGYa9f79P1 +fetchai/protocols/ml_trade,QmWyjEdkx6Y2H3kctMP7A6oDZsdDZJYFua61K3c4bFZB8K +fetchai/protocols/oef_search,QmPZj5Wt7dgL8N2rZT9ThiVe4pehR5sDS6q3j5v9gkSpEQ +fetchai/protocols/prometheus,QmTiCY15XgeurxmPrmv6euXfrc3GdeM1JmbFy9Tz698xvt +fetchai/protocols/register,QmQN8wjYTeZ6tGW2vM9cCn47QFwDCawcNBcoPR8AYf4Xae +fetchai/protocols/scaffold,QmakHDyafqNtxVyV47M17zHyhzf7osfcnzsbfmvsorhydL +fetchai/protocols/signing,QmZzbiFHPjhmj4FATsAPTrrnnaCMQQco7XR8NYCwrGi3yo +fetchai/protocols/state_update,QmbyYfchCK6QydpsGdxecShLBZfuKNMoPhamW1qXC68PXy +fetchai/protocols/tac,QmT2iCyx55dpSFPVoVEarkoosn1o2FcRzfiMPFMs3nybhC +fetchai/skills/advanced_data_request,QmQs2Mj7WTmvxCajV8TQSdA2RPMPKLSCvYgybNzBQve1Si +fetchai/skills/aries_alice,QmWy7T7twbXd3fsg4rmmxvmaB21pTDdAGp8Eycpbj6JWfj +fetchai/skills/aries_faber,QmVZo6pMmLc73W4SGBYrRfwpaqBMHjyG9UGLHh3G2r1QBU +fetchai/skills/carpark_client,Qmc9qTrfUkXTrc1RcP9rhZ2tackvHBHm5bR6c6q3D8A1kb +fetchai/skills/carpark_detection,QmURfz1pazMoaCjuEtWqaPce5hU2521PwCjyuYwvbdBqUB +fetchai/skills/confirmation_aw1,QmeYFKJmTfkzVyjb5VamqNjAVMawuqSSx3mqBT1GZVqU8b +fetchai/skills/confirmation_aw2,QmPvHhtunr3UZibEabpRx2XMNUQaWSxtFSmJ99SgbdRj8q +fetchai/skills/confirmation_aw3,QmXzUFTYPgJcH2XoFobWxsw3icf7N86gHNSrwcHg3vychV +fetchai/skills/echo,QmQQBsarJtA7Eo9dr6hVwz7DziYzxv51zdJeUHjquUGgec +fetchai/skills/erc1155_client,QmVKTQc1TDVHJ5ZRvAWhCZFBx3rteUHLir3yNJJ8EsPCmE +fetchai/skills/erc1155_deploy,QmV2v5RU6jf55f3zh2bhxWV439fJMjWqWz9zYTXZheSXAY +fetchai/skills/error,QmZGZZAuwSCJkZ4atmcUNE3d3q5iErKQ5AZNsjWJnBT1N8 +fetchai/skills/error_test_skill,QmV1AH2aEEzKec9mG76wGm1q1BsrZLxwYH7SFtw4ACfeAd +fetchai/skills/fetch_block,QmNP6YvsPuNTPB7E2N3dbZ65WDdbCkXrG7WpAJJ9qkbTWG +fetchai/skills/fipa_dummy_buyer,QmRnMgmXLJ7ZHRX5jFvUVyXVrQMoZy1f7pAi6wY8NfBttD +fetchai/skills/generic_buyer,QmTCCZsrRuS7R1GY6EdJnKvXAfhsxBV6YJT2pyLVsokkyx +fetchai/skills/generic_seller,QmZ4HkEwPdad5UXEJ7rcgAvVBUZZ3xSdSqnNGmT6FWtemh +fetchai/skills/gym,QmPK9MD8xDYDRZM9mvXKycxoyoUvFUvWPkp1aBjR7T8tM1 +fetchai/skills/hello_world,QmUxmB8E9HhQy5At1FGjD4RCELbZFxhxaN97NAgDi7Dx7U +fetchai/skills/http_echo,QmfAXHmFQ6CPTZxnt82LWVEyDKC6PdrYGraogcHyL8X9Uf +fetchai/skills/ml_data_provider,QmWgTAUEK9nnSDXE49Gunb2QhrbfBnSkaVhXwGjvTxYfCP +fetchai/skills/ml_train,QmcWjoaTKSKALwye6guQCFYLw2PNrqmaxMzaUMod9SJSJt +fetchai/skills/registration_aw1,QmP4JAhVEnTaQLFUSEE1DCBPpDHt2Mb4KYNmAeBixMqCGv +fetchai/skills/scaffold,QmfMLDBLPiBjQmDJHthYm59565NGNKEp9nCNgU4YaMrgSf +fetchai/skills/simple_aggregation,QmPQQxmV469eJTuqa7ajPG4LGUiNqQERmHLtpn5NcHd1az +fetchai/skills/simple_buyer,QmUGHbgtw1TceTzYmEh4AMT73Fv7xsEuuE4xykpXdkZCcc +fetchai/skills/simple_data_request,QmPxN2aDVEUzyjpBCYy4FB8bzDRHV86f4egMgsngPzvHXa +fetchai/skills/simple_oracle,QmcckbJGCNffeoQuon7GhSjNkJxaSbmAkRCW6yZk7LQUnf +fetchai/skills/simple_oracle_client,Qmb13j9KcdgRTuvEHyQSvRRs5Z2gMtHSxf8wmUCfLK5AKt +fetchai/skills/simple_seller,Qmbt3cy9ZZEWZU2m3QwtsutDVsT1wCkXB32hQLQevbTnXo +fetchai/skills/simple_service_registration,QmaLvqZDZyz5XaRKjkw4PLTkHpuchUwdiRTne5oajSJc9x +fetchai/skills/simple_service_search,QmbhL9rGxpdzk2Va4PeNYjNvMSheN9iEHkqPPJWYpwcp2n +fetchai/skills/tac_control,QmcAH9LkQHULdihxe2b3uPXm3AEYUbY3pio6rr22oB4Mb9 +fetchai/skills/tac_control_contract,QmWVkwj4gZgmKHEg6iH3cqTNNNUpxWJJ5jkfoBfkE7gUK7 +fetchai/skills/tac_negotiation,Qmb4GLTCEU4hfkSdmdJ3NusLMHFv1o5J5P19r3Fwv5xxRB +fetchai/skills/tac_participation,QmaWj9n5cpp1nWo3HCwVtJbU6M9zB4Qut4prBxRhNha6cC +fetchai/skills/task_test_skill,QmeSJeSZ8d8Do1jL8AbgiLWtnchNShWaJs9ChL9heFT4Po +fetchai/skills/thermometer,QmaAyLDL9MaiuFZHnmjoVB42zgVsGxJ8G6eHL8VzwjbJfj +fetchai/skills/thermometer_client,QmScE56BE6eMDELi1ntNBbjSkhvvfPC3YGEsyGoCN23sq8 +fetchai/skills/weather_client,QmcUvp36Berop9VzuC2T8AD5q2ELx27q5Zvy4jPsPn4Hnk +fetchai/skills/weather_station,QmXYnZ4Dahc9xoEJ6yAWyw8Ba5Zu7fsrhR8iDEJ6pJNStz diff --git a/plugins/aea-cli-ipfs/README.md b/plugins/aea-cli-ipfs/README.md index 583432bc96..732117a73c 100644 --- a/plugins/aea-cli-ipfs/README.md +++ b/plugins/aea-cli-ipfs/README.md @@ -7,6 +7,7 @@ IPFS command to publish and download directories. Make sure you have `aea` installed. Then, install the plug-in: + ``` bash pip install aea-cli-ipfs ``` diff --git a/plugins/aea-cli-ipfs/aea_cli_ipfs/__init__.py b/plugins/aea-cli-ipfs/aea_cli_ipfs/__init__.py index 4fd7844392..8e4ff3b3ae 100644 --- a/plugins/aea-cli-ipfs/aea_cli_ipfs/__init__.py +++ b/plugins/aea-cli-ipfs/aea_cli_ipfs/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-cli-ipfs/aea_cli_ipfs/core.py b/plugins/aea-cli-ipfs/aea_cli_ipfs/core.py index 00c2612d64..9313b5bfc2 100644 --- a/plugins/aea-cli-ipfs/aea_cli_ipfs/core.py +++ b/plugins/aea-cli-ipfs/aea_cli_ipfs/core.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-cli-ipfs/aea_cli_ipfs/ipfs_utils.py b/plugins/aea-cli-ipfs/aea_cli_ipfs/ipfs_utils.py index fe41daac5e..cc53fcea21 100644 --- a/plugins/aea-cli-ipfs/aea_cli_ipfs/ipfs_utils.py +++ b/plugins/aea-cli-ipfs/aea_cli_ipfs/ipfs_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-cli-ipfs/setup.py b/plugins/aea-cli-ipfs/setup.py index 8aae5dc57b..3a12ab59b8 100755 --- a/plugins/aea-cli-ipfs/setup.py +++ b/plugins/aea-cli-ipfs/setup.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -27,7 +27,7 @@ setup( name="aea-cli-ipfs", - version="1.0.3", + version="1.0.4", author="Fetch.AI Limited", license="Apache-2.0", description="CLI extension for AEA framework wrapping IPFS functionality.", diff --git a/plugins/aea-cli-ipfs/tests/__init__.py b/plugins/aea-cli-ipfs/tests/__init__.py index 9deb8e145d..0c20c76dd7 100644 --- a/plugins/aea-cli-ipfs/tests/__init__.py +++ b/plugins/aea-cli-ipfs/tests/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-cli-ipfs/tests/test_aea_cli_ipfs.py b/plugins/aea-cli-ipfs/tests/test_aea_cli_ipfs.py index ff98d3901b..85a5b7f9f9 100644 --- a/plugins/aea-cli-ipfs/tests/test_aea_cli_ipfs.py +++ b/plugins/aea-cli-ipfs/tests/test_aea_cli_ipfs.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-cosmos/aea_ledger_cosmos/__init__.py b/plugins/aea-ledger-cosmos/aea_ledger_cosmos/__init__.py index 5d83f8312a..5273dbc725 100644 --- a/plugins/aea-ledger-cosmos/aea_ledger_cosmos/__init__.py +++ b/plugins/aea-ledger-cosmos/aea_ledger_cosmos/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-cosmos/aea_ledger_cosmos/cosmos.py b/plugins/aea-ledger-cosmos/aea_ledger_cosmos/cosmos.py index 8b4910c9f9..e02ba65ab5 100644 --- a/plugins/aea-ledger-cosmos/aea_ledger_cosmos/cosmos.py +++ b/plugins/aea-ledger-cosmos/aea_ledger_cosmos/cosmos.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-cosmos/setup.py b/plugins/aea-ledger-cosmos/setup.py index 8e141349e7..0b038cefa3 100644 --- a/plugins/aea-ledger-cosmos/setup.py +++ b/plugins/aea-ledger-cosmos/setup.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,7 +25,7 @@ setup( name="aea-ledger-cosmos", - version="1.2.4", + version="1.2.5", author="Fetch.AI Limited", license="Apache-2.0", description="Python package wrapping the public and private key cryptography and ledger api of Cosmos.", diff --git a/plugins/aea-ledger-cosmos/tests/__init__.py b/plugins/aea-ledger-cosmos/tests/__init__.py index aeeb844c61..3f7393f723 100644 --- a/plugins/aea-ledger-cosmos/tests/__init__.py +++ b/plugins/aea-ledger-cosmos/tests/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-cosmos/tests/conftest.py b/plugins/aea-ledger-cosmos/tests/conftest.py index 94bffeeb45..0b697b26c4 100644 --- a/plugins/aea-ledger-cosmos/tests/conftest.py +++ b/plugins/aea-ledger-cosmos/tests/conftest.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-cosmos/tests/data/dummy_contract/__init__.py b/plugins/aea-ledger-cosmos/tests/data/dummy_contract/__init__.py index 01bef33dc0..43fd8d0633 100644 --- a/plugins/aea-ledger-cosmos/tests/data/dummy_contract/__init__.py +++ b/plugins/aea-ledger-cosmos/tests/data/dummy_contract/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-cosmos/tests/data/dummy_contract/contract.py b/plugins/aea-ledger-cosmos/tests/data/dummy_contract/contract.py index 03a8c7126a..1cf17ff476 100644 --- a/plugins/aea-ledger-cosmos/tests/data/dummy_contract/contract.py +++ b/plugins/aea-ledger-cosmos/tests/data/dummy_contract/contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-cosmos/tests/test_cosmos.py b/plugins/aea-ledger-cosmos/tests/test_cosmos.py index 510cdc61f4..cb4536fb41 100644 --- a/plugins/aea-ledger-cosmos/tests/test_cosmos.py +++ b/plugins/aea-ledger-cosmos/tests/test_cosmos.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-ethereum/aea_ledger_ethereum/__init__.py b/plugins/aea-ledger-ethereum/aea_ledger_ethereum/__init__.py index f4b810c726..44a5273a1c 100644 --- a/plugins/aea-ledger-ethereum/aea_ledger_ethereum/__init__.py +++ b/plugins/aea-ledger-ethereum/aea_ledger_ethereum/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-ethereum/aea_ledger_ethereum/ethereum.py b/plugins/aea-ledger-ethereum/aea_ledger_ethereum/ethereum.py index cbcd2e2fa6..ce890a5294 100644 --- a/plugins/aea-ledger-ethereum/aea_ledger_ethereum/ethereum.py +++ b/plugins/aea-ledger-ethereum/aea_ledger_ethereum/ethereum.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-ethereum/setup.py b/plugins/aea-ledger-ethereum/setup.py index 0e9656cf08..1a0e2192c6 100644 --- a/plugins/aea-ledger-ethereum/setup.py +++ b/plugins/aea-ledger-ethereum/setup.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,14 +25,14 @@ setup( name="aea-ledger-ethereum", - version="1.1.1", + version="1.1.2", author="Fetch.AI Limited", license="Apache-2.0", description="Python package wrapping the public and private key cryptography and ledger api of Ethereum.", packages=find_packages(include=["aea_ledger_ethereum*"]), install_requires=[ "aea>=1.0.0, <2.0.0", - "web3>=5.31.0,<6.0.0", + "web3==5.31.1", "ipfshttpclient==0.8.0a2", ], tests_require=["pytest"], diff --git a/plugins/aea-ledger-ethereum/tests/__init__.py b/plugins/aea-ledger-ethereum/tests/__init__.py index b68c9e313c..3c8392dd6e 100644 --- a/plugins/aea-ledger-ethereum/tests/__init__.py +++ b/plugins/aea-ledger-ethereum/tests/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-ethereum/tests/conftest.py b/plugins/aea-ledger-ethereum/tests/conftest.py index b3dccfb6a1..648d39253f 100644 --- a/plugins/aea-ledger-ethereum/tests/conftest.py +++ b/plugins/aea-ledger-ethereum/tests/conftest.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-ethereum/tests/data/dummy_contract/__init__.py b/plugins/aea-ledger-ethereum/tests/data/dummy_contract/__init__.py index 01bef33dc0..43fd8d0633 100644 --- a/plugins/aea-ledger-ethereum/tests/data/dummy_contract/__init__.py +++ b/plugins/aea-ledger-ethereum/tests/data/dummy_contract/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-ethereum/tests/data/dummy_contract/contract.py b/plugins/aea-ledger-ethereum/tests/data/dummy_contract/contract.py index 03a8c7126a..1cf17ff476 100644 --- a/plugins/aea-ledger-ethereum/tests/data/dummy_contract/contract.py +++ b/plugins/aea-ledger-ethereum/tests/data/dummy_contract/contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-ethereum/tests/docker_image.py b/plugins/aea-ledger-ethereum/tests/docker_image.py index 82be71b4c3..2bf2a2b1fc 100644 --- a/plugins/aea-ledger-ethereum/tests/docker_image.py +++ b/plugins/aea-ledger-ethereum/tests/docker_image.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-ethereum/tests/test_ethereum.py b/plugins/aea-ledger-ethereum/tests/test_ethereum.py index 90204d139f..5b36963e80 100644 --- a/plugins/aea-ledger-ethereum/tests/test_ethereum.py +++ b/plugins/aea-ledger-ethereum/tests/test_ethereum.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-ethereum/tests/test_ethereum_contract.py b/plugins/aea-ledger-ethereum/tests/test_ethereum_contract.py index 298bd32956..56208868b5 100644 --- a/plugins/aea-ledger-ethereum/tests/test_ethereum_contract.py +++ b/plugins/aea-ledger-ethereum/tests/test_ethereum_contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-fetchai/aea_ledger_fetchai/__init__.py b/plugins/aea-ledger-fetchai/aea_ledger_fetchai/__init__.py index a1ac62ff08..dcd291b05c 100644 --- a/plugins/aea-ledger-fetchai/aea_ledger_fetchai/__init__.py +++ b/plugins/aea-ledger-fetchai/aea_ledger_fetchai/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-fetchai/aea_ledger_fetchai/_cosmos.py b/plugins/aea-ledger-fetchai/aea_ledger_fetchai/_cosmos.py index 8b4910c9f9..e02ba65ab5 100644 --- a/plugins/aea-ledger-fetchai/aea_ledger_fetchai/_cosmos.py +++ b/plugins/aea-ledger-fetchai/aea_ledger_fetchai/_cosmos.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-fetchai/aea_ledger_fetchai/fetchai.py b/plugins/aea-ledger-fetchai/aea_ledger_fetchai/fetchai.py index a6db45b7b7..01b26a1022 100644 --- a/plugins/aea-ledger-fetchai/aea_ledger_fetchai/fetchai.py +++ b/plugins/aea-ledger-fetchai/aea_ledger_fetchai/fetchai.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-fetchai/setup.py b/plugins/aea-ledger-fetchai/setup.py index ef0db9b54f..eb8591934a 100644 --- a/plugins/aea-ledger-fetchai/setup.py +++ b/plugins/aea-ledger-fetchai/setup.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ setup( name="aea-ledger-fetchai", - version="1.2.4", + version="1.2.5", author="Fetch.AI Limited", license="Apache-2.0", description="Python package wrapping the public and private key cryptography and ledger API of Fetch.AI.", diff --git a/plugins/aea-ledger-fetchai/tests/__init__.py b/plugins/aea-ledger-fetchai/tests/__init__.py index f0a55c354d..984babbf70 100644 --- a/plugins/aea-ledger-fetchai/tests/__init__.py +++ b/plugins/aea-ledger-fetchai/tests/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-fetchai/tests/conftest.py b/plugins/aea-ledger-fetchai/tests/conftest.py index 08de2b1830..d174f39acc 100644 --- a/plugins/aea-ledger-fetchai/tests/conftest.py +++ b/plugins/aea-ledger-fetchai/tests/conftest.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-fetchai/tests/data/dummy_contract/__init__.py b/plugins/aea-ledger-fetchai/tests/data/dummy_contract/__init__.py index 01bef33dc0..43fd8d0633 100644 --- a/plugins/aea-ledger-fetchai/tests/data/dummy_contract/__init__.py +++ b/plugins/aea-ledger-fetchai/tests/data/dummy_contract/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-fetchai/tests/data/dummy_contract/contract.py b/plugins/aea-ledger-fetchai/tests/data/dummy_contract/contract.py index 03a8c7126a..1cf17ff476 100644 --- a/plugins/aea-ledger-fetchai/tests/data/dummy_contract/contract.py +++ b/plugins/aea-ledger-fetchai/tests/data/dummy_contract/contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/plugins/aea-ledger-fetchai/tests/test_fetchai.py b/plugins/aea-ledger-fetchai/tests/test_fetchai.py index 3f40d259b8..793e9d141b 100644 --- a/plugins/aea-ledger-fetchai/tests/test_fetchai.py +++ b/plugins/aea-ledger-fetchai/tests/test_fetchai.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/poetry.lock b/poetry.lock index 437db5a4fb..4af3e5b017 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,6 +1,6 @@ [[package]] name = "absl-py" -version = "1.3.0" +version = "1.4.0" description = "Abseil Python Common Libraries, see https://github.com/abseil/abseil-py." category = "dev" optional = false @@ -62,7 +62,7 @@ python-versions = "*" [[package]] name = "astroid" -version = "2.12.13" +version = "2.13.2" description = "An abstract syntax tree for Python with inference support." category = "dev" optional = false @@ -70,7 +70,7 @@ python-versions = ">=3.7.2" [package.dependencies] lazy-object-proxy = ">=1.4.0" -typing-extensions = {version = ">=3.10", markers = "python_version < \"3.10\""} +typing-extensions = ">=4.0.0" wrapt = {version = ">=1.11,<2", markers = "python_version < \"3.11\""} [[package]] @@ -95,17 +95,18 @@ python-versions = ">=3.6" [[package]] name = "attrs" -version = "22.1.0" +version = "22.2.0" description = "Classes Without Boilerplate" category = "main" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" [package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] -docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +cov = ["attrs[tests]", "coverage-enable-subprocess", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope.interface"] +tests = ["attrs[tests-no-zope]", "zope.interface"] +tests-no-zope = ["cloudpickle", "cloudpickle", "hypothesis", "hypothesis", "mypy (>=0.971,<0.990)", "mypy (>=0.971,<0.990)", "pympler", "pympler", "pytest (>=4.3.0)", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-mypy-plugins", "pytest-xdist[psutil]", "pytest-xdist[psutil]"] [[package]] name = "bandit" @@ -183,7 +184,7 @@ develop = ["coverage (>=5.3)", "flake8 (>=3.8)", "isort (>=5.8)", "mypy (>=0.900 [[package]] name = "bitarray" -version = "2.6.0" +version = "2.6.2" description = "efficient arrays of booleans -- C extension" category = "dev" optional = false @@ -191,7 +192,7 @@ python-versions = "*" [[package]] name = "black" -version = "22.10.0" +version = "22.12.0" description = "The uncompromising code formatter." category = "dev" optional = false @@ -224,7 +225,7 @@ wheel = "*" [[package]] name = "cachetools" -version = "5.2.0" +version = "5.2.1" description = "Extensible memoizing collections and decorators" category = "dev" optional = false @@ -232,7 +233,7 @@ python-versions = "~=3.7" [[package]] name = "cbor2" -version = "5.4.3" +version = "5.4.6" description = "CBOR (de)serializer with extensive tag support" category = "dev" optional = false @@ -244,7 +245,7 @@ test = ["pytest", "pytest-cov"] [[package]] name = "certifi" -version = "2022.9.24" +version = "2022.12.7" description = "Python package for providing Mozilla's CA Bundle." category = "main" optional = false @@ -339,7 +340,7 @@ testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-chec [[package]] name = "cosmpy" -version = "0.6.1" +version = "0.6.2" description = "A library for interacting with the cosmos networks" category = "dev" optional = false @@ -358,7 +359,7 @@ requests = "*" [[package]] name = "coverage" -version = "6.5.0" +version = "7.0.5" description = "Code coverage measurement for Python" category = "dev" optional = false @@ -388,11 +389,11 @@ python-versions = ">=3.6" [[package]] name = "cytoolz" -version = "0.12.0" +version = "0.12.1" description = "Cython implementation of Toolz: High performance functional utilities" category = "dev" optional = false -python-versions = ">=3.5" +python-versions = ">=3.6" [package.dependencies] toolz = ">=0.8.0" @@ -738,7 +739,7 @@ test = ["hypothesis (>=4.43.0,<5.0.0)", "pytest (==5.4.1)", "pytest-xdist", "tox [[package]] name = "exceptiongroup" -version = "1.0.4" +version = "1.1.0" description = "Backport of PEP 654 (exception groups)" category = "dev" optional = false @@ -749,15 +750,15 @@ test = ["pytest (>=6)"] [[package]] name = "filelock" -version = "3.8.0" +version = "3.9.0" description = "A platform independent file lock." category = "dev" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo (>=2022.6.21)", "sphinx (>=5.1.1)", "sphinx-autodoc-typehints (>=1.19.1)"] -testing = ["covdefaults (>=2.2)", "coverage (>=6.4.2)", "pytest (>=7.1.2)", "pytest-cov (>=3)", "pytest-timeout (>=2.1)"] +docs = ["furo (>=2022.12.7)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] +testing = ["covdefaults (>=2.2.2)", "coverage (>=7.0.1)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-timeout (>=2.1)"] [[package]] name = "flake8" @@ -829,7 +830,7 @@ test = ["pytest"] [[package]] name = "flatbuffers" -version = "22.11.23" +version = "23.1.4" description = "The FlatBuffers serialization format for Python" category = "dev" optional = false @@ -845,7 +846,7 @@ python-versions = ">=3.7" [[package]] name = "future" -version = "0.18.2" +version = "0.18.3" description = "Clean single-source support for Python 3 and 2" category = "dev" optional = false @@ -897,26 +898,26 @@ gitdb = ">=4.0.1,<5" [[package]] name = "google-api-core" -version = "2.10.2" +version = "2.11.0" description = "Google API client core library" category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] -google-auth = ">=1.25.0,<3.0dev" +google-auth = ">=2.14.1,<3.0dev" googleapis-common-protos = ">=1.56.2,<2.0dev" protobuf = ">=3.19.5,<3.20.0 || >3.20.0,<3.20.1 || >3.20.1,<4.21.0 || >4.21.0,<4.21.1 || >4.21.1,<4.21.2 || >4.21.2,<4.21.3 || >4.21.3,<4.21.4 || >4.21.4,<4.21.5 || >4.21.5,<5.0.0dev" requests = ">=2.18.0,<3.0.0dev" [package.extras] -grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio-status (>=1.33.2,<2.0dev)"] +grpc = ["grpcio (>=1.33.2,<2.0dev)", "grpcio (>=1.49.1,<2.0dev)", "grpcio-status (>=1.33.2,<2.0dev)", "grpcio-status (>=1.49.1,<2.0dev)"] grpcgcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] grpcio-gcp = ["grpcio-gcp (>=0.2.2,<1.0dev)"] [[package]] name = "google-api-python-client" -version = "2.66.0" +version = "2.72.0" description = "Google API Client Library for Python" category = "dev" optional = false @@ -931,7 +932,7 @@ uritemplate = ">=3.0.1,<5" [[package]] name = "google-auth" -version = "2.14.1" +version = "2.16.0" description = "Google Authentication Library" category = "dev" optional = false @@ -948,6 +949,7 @@ aiohttp = ["aiohttp (>=3.6.2,<4.0.0dev)", "requests (>=2.20.0,<3.0.0dev)"] enterprise-cert = ["cryptography (==36.0.2)", "pyopenssl (==22.0.0)"] pyopenssl = ["cryptography (>=38.0.3)", "pyopenssl (>=20.0.0)"] reauth = ["pyu2f (>=0.1.5)"] +requests = ["requests (>=2.20.0,<3.0.0dev)"] [[package]] name = "google-auth-httplib2" @@ -990,7 +992,7 @@ six = "*" [[package]] name = "googleapis-common-protos" -version = "1.57.0" +version = "1.58.0" description = "Common protobufs used in Google APIs" category = "dev" optional = false @@ -1109,7 +1111,7 @@ python-versions = ">=3.5" [[package]] name = "imageio" -version = "2.22.4" +version = "2.24.0" description = "Library for reading and writing a wide range of image, video, scientific, and volumetric data formats." category = "dev" optional = false @@ -1120,19 +1122,19 @@ numpy = "*" pillow = ">=8.3.2" [package.extras] -all-plugins = ["astropy", "av (!=10.0.0)", "imageio-ffmpeg", "opencv-python", "psutil", "tifffile"] -all-plugins-pypy = ["av (!=10.0.0)", "imageio-ffmpeg", "psutil", "tifffile"] +all-plugins = ["astropy", "av", "imageio-ffmpeg", "opencv-python", "psutil", "tifffile"] +all-plugins-pypy = ["av", "imageio-ffmpeg", "psutil", "tifffile"] build = ["wheel"] dev = ["black", "flake8", "fsspec[github]", "invoke", "pytest", "pytest-cov"] -docs = ["numpydoc", "pydata-sphinx-theme", "sphinx"] +docs = ["numpydoc", "pydata-sphinx-theme", "sphinx (<6)"] ffmpeg = ["imageio-ffmpeg", "psutil"] fits = ["astropy"] -full = ["astropy", "av (!=10.0.0)", "black", "flake8", "fsspec[github]", "gdal", "imageio-ffmpeg", "invoke", "itk", "numpydoc", "opencv-python", "psutil", "pydata-sphinx-theme", "pytest", "pytest-cov", "sphinx", "tifffile", "wheel"] +full = ["astropy", "av", "black", "flake8", "fsspec[github]", "gdal", "imageio-ffmpeg", "invoke", "itk", "numpydoc", "opencv-python", "psutil", "pydata-sphinx-theme", "pytest", "pytest-cov", "sphinx (<6)", "tifffile", "wheel"] gdal = ["gdal"] itk = ["itk"] linting = ["black", "flake8"] opencv = ["opencv-python"] -pyav = ["av (!=10.0.0)"] +pyav = ["av"] test = ["fsspec[github]", "invoke", "pytest", "pytest-cov"] tifffile = ["tifffile"] @@ -1154,7 +1156,7 @@ testing = ["flake8 (<5)", "flufl.flake8", "importlib-resources (>=1.3)", "packag [[package]] name = "importlib-resources" -version = "5.10.0" +version = "5.10.2" description = "Read resources from Python packages" category = "main" optional = false @@ -1164,16 +1166,16 @@ python-versions = ">=3.7" zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] [[package]] name = "iniconfig" -version = "1.1.1" -description = "iniconfig: brain-dead simple config-ini parsing" +version = "2.0.0" +description = "brain-dead simple config-ini parsing" category = "dev" optional = false -python-versions = "*" +python-versions = ">=3.7" [[package]] name = "ipfshttpclient" @@ -1217,7 +1219,7 @@ i18n = ["Babel (>=2.7)"] [[package]] name = "jsonschema" -version = "4.17.1" +version = "4.17.3" description = "An implementation of JSON Schema validation for Python" category = "main" optional = false @@ -1268,7 +1270,7 @@ python-versions = ">=3.7" [[package]] name = "lazy-object-proxy" -version = "1.8.0" +version = "1.9.0" description = "A fast and thorough lazy object proxy." category = "dev" optional = false @@ -1276,7 +1278,7 @@ python-versions = ">=3.7" [[package]] name = "libclang" -version = "14.0.6" +version = "15.0.6.1" description = "Clang Python Bindings, mirrored from the official LLVM repo: https://github.com/llvm/llvm-project/tree/main/clang/bindings/python, to make the installation process easier." category = "dev" optional = false @@ -1406,19 +1408,21 @@ min-versions = ["babel (==2.9.0)", "click (==7.0)", "colorama (==0.4)", "ghp-imp [[package]] name = "mkdocs-material" -version = "8.5.10" +version = "9.0.5" description = "Documentation that simply works" category = "dev" optional = false python-versions = ">=3.7" [package.dependencies] -jinja2 = ">=3.0.2" +colorama = ">=0.4" +jinja2 = ">=3.0" markdown = ">=3.2" -mkdocs = ">=1.4.0" +mkdocs = ">=1.4.2" mkdocs-material-extensions = ">=1.1" -pygments = ">=2.12" -pymdown-extensions = ">=9.4" +pygments = ">=2.14" +pymdown-extensions = ">=9.9.1" +regex = ">=2022.4.24" requests = ">=2.26" [[package]] @@ -1465,7 +1469,7 @@ varint = "*" [[package]] name = "multidict" -version = "6.0.2" +version = "6.0.4" description = "multidict implementation" category = "dev" optional = false @@ -1507,17 +1511,17 @@ python-versions = "*" [[package]] name = "networkx" -version = "2.8.8" +version = "3.0" description = "Python package for creating and manipulating graphs and networks" category = "dev" optional = false python-versions = ">=3.8" [package.extras] -default = ["matplotlib (>=3.4)", "numpy (>=1.19)", "pandas (>=1.3)", "scipy (>=1.8)"] -developer = ["mypy (>=0.982)", "pre-commit (>=2.20)"] -doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.2)", "pydata-sphinx-theme (>=0.11)", "sphinx (>=5.2)", "sphinx-gallery (>=0.11)", "texext (>=0.6.6)"] -extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.9)", "sympy (>=1.10)"] +default = ["matplotlib (>=3.4)", "numpy (>=1.20)", "pandas (>=1.3)", "scipy (>=1.8)"] +developer = ["mypy (>=0.991)", "pre-commit (>=2.20)"] +doc = ["nb2plots (>=0.6)", "numpydoc (>=1.5)", "pillow (>=9.2)", "pydata-sphinx-theme (>=0.11)", "sphinx (==5.2.3)", "sphinx-gallery (>=0.11)", "texext (>=0.6.7)"] +extra = ["lxml (>=4.6)", "pydot (>=1.4.2)", "pygraphviz (>=1.10)", "sympy (>=1.10)"] test = ["codecov (>=2.1)", "pytest (>=7.2)", "pytest-cov (>=4.0)"] [[package]] @@ -1534,8 +1538,8 @@ typing-extensions = ">=3.0.0" [[package]] name = "numpy" -version = "1.23.5" -description = "NumPy is the fundamental package for array computing with Python." +version = "1.24.1" +description = "Fundamental package for array computing in Python" category = "dev" optional = false python-versions = ">=3.8" @@ -1617,7 +1621,7 @@ six = ">=1.9.0" [[package]] name = "pathspec" -version = "0.10.2" +version = "0.10.3" description = "Utility library for gitignore style pattern matching of file paths." category = "dev" optional = false @@ -1625,7 +1629,7 @@ python-versions = ">=3.7" [[package]] name = "pbr" -version = "5.11.0" +version = "5.11.1" description = "Python Build Reasonableness" category = "dev" optional = false @@ -1644,14 +1648,14 @@ ptyprocess = ">=0.5" [[package]] name = "pillow" -version = "9.3.0" +version = "9.4.0" description = "Python Imaging Library (Fork)" category = "dev" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] +docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-issues (>=3.0.1)", "sphinx-removed-in", "sphinxext-opengraph"] tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] [[package]] @@ -1664,15 +1668,15 @@ python-versions = ">=3.6" [[package]] name = "platformdirs" -version = "2.5.4" +version = "2.6.2" description = "A small Python package for determining appropriate platform-specific dirs, e.g. a \"user data dir\"." category = "dev" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo (>=2022.9.29)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.4)"] -test = ["appdirs (==1.4.4)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] +docs = ["furo (>=2022.12.7)", "proselint (>=0.13)", "sphinx (>=5.3)", "sphinx-autodoc-typehints (>=1.19.5)"] +test = ["appdirs (==1.4.4)", "covdefaults (>=2.2.2)", "pytest (>=7.2)", "pytest-cov (>=4)", "pytest-mock (>=3.10)"] [[package]] name = "pluggy" @@ -1766,7 +1770,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "pycryptodome" -version = "3.15.0" +version = "3.16.0" description = "Cryptographic library for Python" category = "dev" optional = false @@ -1797,17 +1801,17 @@ yapf = ">=0.30.0" [[package]] name = "pydocstyle" -version = "6.1.1" +version = "6.2.3" description = "Python docstring style checker" category = "dev" optional = false python-versions = ">=3.6" [package.dependencies] -snowballstemmer = "*" +snowballstemmer = ">=2.2.0" [package.extras] -toml = ["toml"] +toml = ["tomli (>=1.2.3)"] [[package]] name = "pyflakes" @@ -1830,7 +1834,7 @@ future = "*" [[package]] name = "pygments" -version = "2.13.0" +version = "2.14.0" description = "Pygments is a syntax highlighting package written in Python." category = "dev" optional = false @@ -1864,7 +1868,7 @@ testutils = ["gitpython (>3)"] [[package]] name = "pymdown-extensions" -version = "9.9" +version = "9.9.1" description = "Extension pack for Python Markdown." category = "dev" optional = false @@ -1924,7 +1928,7 @@ pywin32 = ">=223" [[package]] name = "pyrsistent" -version = "0.19.2" +version = "0.19.3" description = "Persistent/Functional/Immutable data structures" category = "main" optional = false @@ -1943,7 +1947,7 @@ cp2110 = ["hidapi"] [[package]] name = "pytest" -version = "7.2.0" +version = "7.2.1" description = "pytest: simple powerful testing with Python" category = "dev" optional = false @@ -1963,7 +1967,7 @@ testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "pygments (>=2. [[package]] name = "pytest-asyncio" -version = "0.20.2" +version = "0.20.3" description = "Pytest support for asyncio" category = "dev" optional = false @@ -1973,6 +1977,7 @@ python-versions = ">=3.7" pytest = ">=6.1.0" [package.extras] +docs = ["sphinx (>=5.3)", "sphinx-rtd-theme (>=1.0)"] testing = ["coverage (>=6.2)", "flaky (>=3.5.0)", "hypothesis (>=5.7.1)", "mypy (>=0.931)", "pytest-trio (>=0.7.0)"] [[package]] @@ -2093,9 +2098,17 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "regex" +version = "2022.10.31" +description = "Alternative regular expression module, to replace re." +category = "dev" +optional = false +python-versions = ">=3.6" + [[package]] name = "requests" -version = "2.28.1" +version = "2.28.2" description = "Python HTTP for Humans." category = "main" optional = false @@ -2103,7 +2116,7 @@ python-versions = ">=3.7, <4" [package.dependencies] certifi = ">=2017.4.17" -charset-normalizer = ">=2,<3" +charset-normalizer = ">=2,<4" idna = ">=2.5,<4" urllib3 = ">=1.21.1,<1.27" @@ -2180,7 +2193,7 @@ python-versions = ">=3.5" [[package]] name = "safety" -version = "2.3.1" +version = "2.3.5" description = "Checks installed dependencies for known vulnerabilities and licenses." category = "dev" optional = false @@ -2189,7 +2202,7 @@ python-versions = "*" [package.dependencies] Click = ">=8.0.2" dparse = ">=0.6.2" -packaging = ">=21.0" +packaging = ">=21.0,<22.0" requests = "*" "ruamel.yaml" = ">=0.17.21" setuptools = ">=19.3" @@ -2224,19 +2237,19 @@ test = ["asv", "codecov", "flake8", "matplotlib (>=3.0.3)", "pooch (>=1.3.0)", " [[package]] name = "scipy" -version = "1.9.3" +version = "1.10.0" description = "Fundamental algorithms for scientific computing in Python" category = "dev" optional = false -python-versions = ">=3.8" +python-versions = "<3.12,>=3.8" [package.dependencies] -numpy = ">=1.18.5,<1.26.0" +numpy = ">=1.19.5,<1.27.0" [package.extras] -dev = ["flake8", "mypy", "pycodestyle", "typing_extensions"] -doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-panels (>=0.5.2)", "sphinx-tabs"] -test = ["asv", "gmpy2", "mpmath", "pytest", "pytest-cov", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] +dev = ["click", "doit (>=0.36.0)", "flake8", "mypy", "pycodestyle", "pydevtool", "rich-click", "typing_extensions"] +doc = ["matplotlib (>2)", "numpydoc", "pydata-sphinx-theme (==0.9.0)", "sphinx (!=4.1.0)", "sphinx-design (>=0.2.0)"] +test = ["asv", "gmpy2", "mpmath", "pooch", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "scikit-umfpack", "threadpoolctl"] [[package]] name = "semantic-version" @@ -2260,14 +2273,14 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" [[package]] name = "setuptools" -version = "65.6.3" +version = "66.0.0" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "dev" optional = false python-versions = ">=3.7" [package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-hoverxref (<2)", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (==0.8.3)", "sphinx-reredirects", "sphinxcontrib-towncrier"] testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8 (<5)", "flake8-2020", "ini2toml[lite] (>=0.9)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pip (>=19.1)", "pip-run (>=8.8)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)", "pytest-perf", "pytest-timeout", "pytest-xdist", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"] testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] @@ -2305,7 +2318,7 @@ python-versions = ">=3.6" [[package]] name = "sqlalchemy" -version = "1.4.44" +version = "1.4.46" description = "Database Abstraction Library" category = "dev" optional = false @@ -2438,11 +2451,11 @@ python-versions = ">=3.7" [[package]] name = "tensorflow-io-gcs-filesystem" -version = "0.28.0" +version = "0.29.0" description = "TensorFlow IO" category = "dev" optional = false -python-versions = ">=3.7, <3.11" +python-versions = ">=3.7, <3.12" [package.extras] tensorflow = ["tensorflow (>=2.11.0,<2.12.0)"] @@ -2453,7 +2466,7 @@ tensorflow-rocm = ["tensorflow-rocm (>=2.11.0,<2.12.0)"] [[package]] name = "termcolor" -version = "2.1.1" +version = "2.2.0" description = "ANSI color formatting for output in terminal" category = "dev" optional = false @@ -2518,7 +2531,7 @@ python-versions = ">=3.5" [[package]] name = "tox" -version = "3.27.1" +version = "3.28.0" description = "tox is a generic virtualenv management and test command line tool" category = "dev" optional = false @@ -2554,6 +2567,14 @@ category = "dev" optional = false python-versions = "*" +[[package]] +name = "types-docutils" +version = "0.19.1.1" +description = "Typing stubs for docutils" +category = "dev" +optional = false +python-versions = "*" + [[package]] name = "types-pyyaml" version = "6.0.12.2" @@ -2564,7 +2585,7 @@ python-versions = "*" [[package]] name = "types-requests" -version = "2.28.11.5" +version = "2.28.11.7" description = "Typing stubs for requests" category = "dev" optional = false @@ -2575,12 +2596,15 @@ types-urllib3 = "<1.27" [[package]] name = "types-setuptools" -version = "65.6.0.1" +version = "65.7.0.1" description = "Typing stubs for setuptools" category = "dev" optional = false python-versions = "*" +[package.dependencies] +types-docutils = "*" + [[package]] name = "types-urllib3" version = "1.26.25.4" @@ -2607,7 +2631,7 @@ python-versions = ">=3.6" [[package]] name = "urllib3" -version = "1.26.13" +version = "1.26.14" description = "HTTP library with thread-safe connection pooling, file post, and more." category = "main" optional = false @@ -2628,7 +2652,7 @@ python-versions = "*" [[package]] name = "virtualenv" -version = "20.16.7" +version = "20.17.1" description = "Virtual Python Environment builder" category = "dev" optional = false @@ -2656,7 +2680,7 @@ toml = "*" [[package]] name = "watchdog" -version = "2.1.9" +version = "2.2.1" description = "Filesystem events monitoring" category = "dev" optional = false @@ -2760,7 +2784,7 @@ python-versions = "*" [[package]] name = "yarl" -version = "1.8.1" +version = "1.8.2" description = "Yet another URL library" category = "dev" optional = false @@ -2789,12 +2813,12 @@ cli = ["click"] [metadata] lock-version = "1.1" python-versions = ">=3.8,<3.11" -content-hash = "981b41e8f995123f2e94b4cf5ec885ceb21d1d9f42e000d49a85a893755cf201" +content-hash = "313d90b2beaeec043b6228f275e6fbcb60f0a3a3eb350225e20c73d73e9d8761" [metadata.files] absl-py = [ - {file = "absl-py-1.3.0.tar.gz", hash = "sha256:463c38a08d2e4cef6c498b76ba5bd4858e4c6ef51da1a5a1f27139a022e20248"}, - {file = "absl_py-1.3.0-py3-none-any.whl", hash = "sha256:34995df9bd7a09b3b8749e230408f5a2a2dd7a68a0d33c12a3d0cb15a041a507"}, + {file = "absl-py-1.4.0.tar.gz", hash = "sha256:d2c244d01048ba476e7c080bd2c6df5e141d211de80223460d5b3b8a2a58433d"}, + {file = "absl_py-1.4.0-py3-none-any.whl", hash = "sha256:0d3fe606adfa4f7db64792dd4c7aee4ee0c38ab75dfd353b7a83ed3e957fcb47"}, ] aiohttp = [ {file = "aiohttp-3.8.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ba71c9b4dcbb16212f334126cc3d8beb6af377f6703d9dc2d9fb3874fd667ee9"}, @@ -2897,8 +2921,8 @@ asn1crypto = [ {file = "asn1crypto-1.5.1.tar.gz", hash = "sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c"}, ] astroid = [ - {file = "astroid-2.12.13-py3-none-any.whl", hash = "sha256:10e0ad5f7b79c435179d0d0f0df69998c4eef4597534aae44910db060baeb907"}, - {file = "astroid-2.12.13.tar.gz", hash = "sha256:1493fe8bd3dfd73dc35bd53c9d5b6e49ead98497c47b2307662556a5692d29d7"}, + {file = "astroid-2.13.2-py3-none-any.whl", hash = "sha256:8f6a8d40c4ad161d6fc419545ae4b2f275ed86d1c989c97825772120842ee0d2"}, + {file = "astroid-2.13.2.tar.gz", hash = "sha256:3bc7834720e1a24ca797fd785d77efb14f7a28ee8e635ef040b6e2d80ccb3303"}, ] astunparse = [ {file = "astunparse-1.6.3-py2.py3-none-any.whl", hash = "sha256:c2652417f2c8b5bb325c885ae329bdf3f86424075c4fd1a128674bc6fba4b8e8"}, @@ -2909,8 +2933,8 @@ async-timeout = [ {file = "async_timeout-4.0.2-py3-none-any.whl", hash = "sha256:8ca1e4fcf50d07413d66d1a5e416e42cfdf5851c981d679a09851a6853383b3c"}, ] attrs = [ - {file = "attrs-22.1.0-py2.py3-none-any.whl", hash = "sha256:86efa402f67bf2df34f51a335487cf46b1ec130d02b8d39fd248abfd30da551c"}, - {file = "attrs-22.1.0.tar.gz", hash = "sha256:29adc2665447e5191d0e7c568fde78b21f9672d344281d0c6e1ab085429b22b6"}, + {file = "attrs-22.2.0-py3-none-any.whl", hash = "sha256:29e95c7f6778868dbd49170f98f8818f78f3dc5e0e37c0b1f474e3561b240836"}, + {file = "attrs-22.2.0.tar.gz", hash = "sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99"}, ] bandit = [ {file = "bandit-1.7.4-py3-none-any.whl", hash = "sha256:412d3f259dab4077d0e7f0c11f50f650cc7d10db905d98f6520a95a18049658a"}, @@ -2933,101 +2957,107 @@ bip-utils = [ {file = "bip_utils-2.7.0.tar.gz", hash = "sha256:bc6302840a95695609e215ad362ddb42d70d472b3cb1494d1fb2112d08c1c707"}, ] bitarray = [ - {file = "bitarray-2.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:b080eb25811db46306dfce58b4760df32f40bcf5551ebba3b7c8d3ec90d9b988"}, - {file = "bitarray-2.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b0cfca1b5a57b540f4761b57de485196218733153c430d58f9e048e325c98b47"}, - {file = "bitarray-2.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:6fa63a86aad0f45a27c7c5a27cd9b787fe9b1aed431f97f49ee8b834fa0780a0"}, - {file = "bitarray-2.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:15d2a1c060a11fc5508715fef6177937614f9354dd3afe6a00e261775f8b0e8f"}, - {file = "bitarray-2.6.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4ffc076a0e22cda949ccd062f37ecc3dc53856c6e8bdfe07e1e81c411cf31621"}, - {file = "bitarray-2.6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ecce266e24b21615a3ed234869be84bef492f6a34bb650d0e25dc3662c59bce4"}, - {file = "bitarray-2.6.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0399886ca8ead7d0f16f94545bda800467d6d9c63fbd4866ee7ede7981166ba8"}, - {file = "bitarray-2.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f263b18fdb8bf42cd7cf9849d5863847d215024c68fe74cf33bcd82641d4376a"}, - {file = "bitarray-2.6.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:119d503edf09bef37f2d0dc3b4a23c36c3c1e88e17701ab71388eb4780c046c7"}, - {file = "bitarray-2.6.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:985a937218aa3d1ac7013174bfcbb1cb2f3157e17c6e349e83386f33459be1c0"}, - {file = "bitarray-2.6.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:d34673ebaf562347d004a465e16e2930c6568d196bb79d67fc6358f1213a1ac7"}, - {file = "bitarray-2.6.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7126563c86f6b60d87414124f035ff0d29de02ad9e46ea085de2c772b0be1331"}, - {file = "bitarray-2.6.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:76c4e3261d6370383b02018cb964b5d9260e3c62dea31949910e9cc3a1c802d2"}, - {file = "bitarray-2.6.0-cp310-cp310-win32.whl", hash = "sha256:346d2c5452cc024c41d267ba99e48d38783c1706c50c4632a4484cc57b152d0e"}, - {file = "bitarray-2.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:b849a6cdd46608e7cc108c75e1265304e79488480a822bae7471e628f971a6f0"}, - {file = "bitarray-2.6.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d7bec01818c3a9d185f929cd36a82cc7acf13905920f7f595942105c5eef2300"}, - {file = "bitarray-2.6.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a0bb91363041b45523e5bcbc4153a5e1eb1ddb21e46fe1910340c0d095e1a8e"}, - {file = "bitarray-2.6.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e7ba4c964a36fe198a8c4b5d08924709d4ed0337b65ae222b6503ed3442a46e8"}, - {file = "bitarray-2.6.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a239313e75da37d1f6548d666d4dd8554c4a92dabed15741612855d186e86e72"}, - {file = "bitarray-2.6.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9c492644f70f80f8266748c18309a0d73c22c47903f4b62f3fb772a15a8fd5f"}, - {file = "bitarray-2.6.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0b756e5c771cdceb17622b6a0678fa78364e329d875de73a4f26bbacab8915a8"}, - {file = "bitarray-2.6.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:c24d4a1b5baa46920b801aa55c0e0a640c6e7683a73a941302e102e2bd11a830"}, - {file = "bitarray-2.6.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:f253b9bdf5abd039741a9594a681453c973b09dcb7edac9105961838675b7c6b"}, - {file = "bitarray-2.6.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:f4849709571b1a53669798d23cc8430e677dcf0eea88610a0412e1911233899a"}, - {file = "bitarray-2.6.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:67c5822f4bb6a419bc2f2dba9fa07b5646f0cda930bafa9e1130af6822e4bdf3"}, - {file = "bitarray-2.6.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:6071d12043300e50a4b7ba9caeeca92aac567bb4ac4a227709e3c77a3d788587"}, - {file = "bitarray-2.6.0-cp36-cp36m-win32.whl", hash = "sha256:12c96dedd6e4584fecc2bf5fbffe1c635bd516eee7ade7b839c35aeba84336b4"}, - {file = "bitarray-2.6.0-cp36-cp36m-win_amd64.whl", hash = "sha256:d53520b54206d8569b81eee56ccd9477af2f1b3ca355df9c48ee615a11e1a637"}, - {file = "bitarray-2.6.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:7ae3b8b48167579066a17c5ba1631d089f931f4eae8b4359ad123807d5e75c51"}, - {file = "bitarray-2.6.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24331bd2f52cd5410e48c132f486ed02a4ca3b96133fb26e3a8f50a57c354be6"}, - {file = "bitarray-2.6.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:742d43cbbc7267caae6379e2156a1fd8532332920a3d919b68c2982d439a98ba"}, - {file = "bitarray-2.6.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1479f533eaff4080078b6e5d06b467868bd6edd73bb6651a295bf662d40afa62"}, - {file = "bitarray-2.6.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec18a0b97ea6b912ea57dc00a3f8f3ce515d774d00951d30e2ae243589d3d021"}, - {file = "bitarray-2.6.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e6bd32e492cdc740ec36b6725457685c9f2aa012dd8cbdae1643fed2b6821895"}, - {file = "bitarray-2.6.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:bfda0af4072df6e932ec510b72c461e1ec0ad0820a76df588cdfebf5a07f5b5d"}, - {file = "bitarray-2.6.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:d523ffef1927cb686ad787b25b2e98a5bd53e3c40673c394f07bf9b281e69796"}, - {file = "bitarray-2.6.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b0e4a6f5360e5f6c3a2b250c9e9cd539a9aabf0465dbedbaf364203e74ff101b"}, - {file = "bitarray-2.6.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5bd315ac63b62de5eefbfa07969162ffbda8e535c3b7b3d41b565d2a88817b71"}, - {file = "bitarray-2.6.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d697cc38cb6fa9bae3b994dd3ce68552ffe69c453a3b6fd6a4f94bb8a8bfd70b"}, - {file = "bitarray-2.6.0-cp37-cp37m-win32.whl", hash = "sha256:c19e900b6f9df13c7f406f827c5643f83c0839a58d007b35a4d7df827601f740"}, - {file = "bitarray-2.6.0-cp37-cp37m-win_amd64.whl", hash = "sha256:878f16daa9c2062e4d29c1928b6f3eb50911726ad6d2006918a29ca6b38b5080"}, - {file = "bitarray-2.6.0-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:565c4334cb410f5eb62280dcfb3a52629e60ce430f31dfa4bbef92ec80de4890"}, - {file = "bitarray-2.6.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6d8ba8065d1b60da24d94078249cbf24a02d869d7dc9eba12db1fb513a375c79"}, - {file = "bitarray-2.6.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fc635b27939969d53cac53e8b8f860ea69fc98cc9867cac17dd193f41dc2a57f"}, - {file = "bitarray-2.6.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f853589426920d9bb3683f6b6cd11ce48d9d06a62c0b98ea4b82ebd8db3bddec"}, - {file = "bitarray-2.6.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:076a72531bcca99114036c3714bac8124f5529b60fb6a6986067c6f345238c76"}, - {file = "bitarray-2.6.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:874a222ece2100b3a3a8f08c57da3267a4e2219d26474a46937552992fcec771"}, - {file = "bitarray-2.6.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e6a4a4bf6fbc42b2674023ca58a47c86ee55c023a8af85420f266e86b10e7065"}, - {file = "bitarray-2.6.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5f5df0377f3e7f1366e506c5295f08d3f8761e4a6381918931fc1d9594aa435e"}, - {file = "bitarray-2.6.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:42a071c9db755f267e5d3b9909ea8c22fb071d27860dd940facfacffbde79de8"}, - {file = "bitarray-2.6.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:36802129a3115023700c07725d981c74e23b0914551898f788e5a41aed2d63bf"}, - {file = "bitarray-2.6.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:c774328057a4b1fc48bee2dd5a60ee1e8e0ec112d29c4e6b9c550e1686b6db5c"}, - {file = "bitarray-2.6.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:763cac57692d07aa950b92c20f55ef66801955b71b4a1f4f48d5422d748c6dda"}, - {file = "bitarray-2.6.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:11996c4da9c1ca9f97143e939af75c5b24ad0fdc2fa13aeb0007ebfa3c602caf"}, - {file = "bitarray-2.6.0-cp38-cp38-win32.whl", hash = "sha256:3f238127789c993de937178c3ff836d0fad4f2da08af9f579668873ac1332a42"}, - {file = "bitarray-2.6.0-cp38-cp38-win_amd64.whl", hash = "sha256:7f369872d551708d608e50a9ab8748d3d4f32a697dc5c2c37ff16cb8d7060210"}, - {file = "bitarray-2.6.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:049e8f017b5b6d1763ababa156ca5cbdea8a01e20a1e80525b0fbe9fb839d695"}, - {file = "bitarray-2.6.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:035d3e5ab3c1afa2cd88bbc33af595b4875a24b0d037dfef907b41bc4b0dbe2b"}, - {file = "bitarray-2.6.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:97609495479c5214c7b57173c17206ebb056507a8d26eebc17942d62f8f25944"}, - {file = "bitarray-2.6.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71cc3d1da4f682f27728745f21ed3447ee8f6a0019932126c422dd91278eb414"}, - {file = "bitarray-2.6.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6c3d0a4a6061adc3d3128e1e1146940d17df8cbfe3d77cb66a1df69ddcdf27d5"}, - {file = "bitarray-2.6.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6c46c2ba24a517f391c3ab9e7a214185f95146d0b664b4b0463ab31e5387669f"}, - {file = "bitarray-2.6.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0302605b3bbc439083a400cf57d7464f1ac098c722309a03abaa7d97cd420b5"}, - {file = "bitarray-2.6.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4d42fee0add2114e572b0cd6edefc4c52207874f58b70043f82faa8bb7141620"}, - {file = "bitarray-2.6.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:5276c7247d350819d1dae385d8f78ebfb44ee90ff11a775f981d45cb366573e5"}, - {file = "bitarray-2.6.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e76642232db8330589ed1ac1cec0e9c3814c708521c336a5c79d39a5d8d8c206"}, - {file = "bitarray-2.6.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:1d0a2d896bcbcb5f32f60571ebd48349ec322dee5e137b342483108c5cbd0f03"}, - {file = "bitarray-2.6.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:8c811e59c86ce0a8515daf47db9c2484fd42e51bdb44581d7bcc9caad6c9a7a1"}, - {file = "bitarray-2.6.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:febaf00e498230ce2e75dac910056f0e3a91c8631b7ceb6385bb39d448960bc5"}, - {file = "bitarray-2.6.0-cp39-cp39-win32.whl", hash = "sha256:2cfe1661b614314d67e6884e5e19e36957ff6faea5fcea7f25840dff95288248"}, - {file = "bitarray-2.6.0-cp39-cp39-win_amd64.whl", hash = "sha256:f37b5282b029d9f51454f8c580eb6a24e5dc140ef5866290afb20e607d2dce5f"}, - {file = "bitarray-2.6.0.tar.gz", hash = "sha256:56d3f16dd807b1c56732a244ce071c135ee973d3edc9929418c1b24c5439a0fd"}, + {file = "bitarray-2.6.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5d3edf2988fff6629698e693b08787567016559f5d28f94ea0179f59a492cd74"}, + {file = "bitarray-2.6.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f14f628e984d46988d01402fb6ea3fae323c4bf374701c9f9c3c0d47698f02f2"}, + {file = "bitarray-2.6.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e73a6f8f5e42092bc5369276d8852d3f01412f135bc8338575841886a90095b7"}, + {file = "bitarray-2.6.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ff7ad4a624a70e13361aedeab1c4043aa3ceb0f1af2fe36b1a74bbbdbb99001d"}, + {file = "bitarray-2.6.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c8ec7e422b539000ab589d4a45db83f854e3fc21a73a740cb4dc40a1737b146"}, + {file = "bitarray-2.6.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9fecc66634f011eda569dbf09886c237225224033fc31a5c90e17fa6478d09ff"}, + {file = "bitarray-2.6.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a70a264caff98525ea3ca62849649771fbb05b9e52e2ced47e092f6f4c0530d"}, + {file = "bitarray-2.6.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8cea20ec562c982234a07e0a94c1653fb88afdc45c587b353cc16f25ba3a38da"}, + {file = "bitarray-2.6.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:9a8551dd0d255d16979c23d03f26b08993167789023dd2eb99cf0d7bebbc56e7"}, + {file = "bitarray-2.6.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:d5fc9464457ffd3fbd400b26bfdcb6cad72fc90c1cf2697cd0d58e056b17681b"}, + {file = "bitarray-2.6.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:df692091edc855e74c6c753e20faa4e75da22da73736924a7f13f6c1842e121d"}, + {file = "bitarray-2.6.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:a84ae1f37644317627859f4d68f9be4cfe6fcd2709e1fc7d511b23eb7aff3030"}, + {file = "bitarray-2.6.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e44146573e2934b1be17459dc497c7d41774b9cbdb1946657799303dfffb68d2"}, + {file = "bitarray-2.6.2-cp310-cp310-win32.whl", hash = "sha256:c1649dff7ddbee282a52b2b692e320a7a72de994c486a97d90d161ce5fa72c5c"}, + {file = "bitarray-2.6.2-cp310-cp310-win_amd64.whl", hash = "sha256:88c327d53acd5faf9c6c537d2c5df75e057baecd6b46768becc7fe14cdd8d9cd"}, + {file = "bitarray-2.6.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:43a474e78d1fbafd09837140ca3e31429ee31a6ad86ab146af577019d41bfc8b"}, + {file = "bitarray-2.6.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:3c484020a523f2c671bdc5a91bd7f1ce87440b817ec14f0dd4b2320f32bc8ee9"}, + {file = "bitarray-2.6.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c939e71e9985ac836bc193fb1a3a4c7feb8d88bb6d1e4afe9cd6abe4181ef8d5"}, + {file = "bitarray-2.6.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:194b738cbc8cdceaa25a4b393a3a8f43090f14704ecfdadac8c18407c15e158d"}, + {file = "bitarray-2.6.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce07f0271eec9ad21451fe9b94192e0430567ab9b3bd2c819465dc87eb3dc4fc"}, + {file = "bitarray-2.6.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d04f76a0dc1a84a96b9fe1ad346b36796185b3334ba69877cd20cf735c98830b"}, + {file = "bitarray-2.6.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:76f94b1a536a2c38512875b1bc82a39d1e4682d74f79eb19db9107d8882150c8"}, + {file = "bitarray-2.6.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d9863eaad6e5b7a7e93291f568b3b49b6c006e32e6bc0f1bdf4509deb39dc4"}, + {file = "bitarray-2.6.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3643817c717bbfaf7ee44d40b0b1b0fd0fb3dcd7e9d14c742d7c08cc8e7b8a31"}, + {file = "bitarray-2.6.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4839626b802fc85adf61753dcc526e585b49b32e8cd0a46fdc8fd91970cd0d72"}, + {file = "bitarray-2.6.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:606f63dc9345c69598d5248900d497a83b58958003f246470e25de66b400c3f2"}, + {file = "bitarray-2.6.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:61a1b2a4826588fee73a3b87a86b7d2ae2cd16859ef4aca2d7fb244ae51932e0"}, + {file = "bitarray-2.6.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b444416cca8caa5c9a86e63703514c166bc6e3f37d7ce3668c7e9b93403f0de0"}, + {file = "bitarray-2.6.2-cp311-cp311-win32.whl", hash = "sha256:acce34ebcb69bc1a14ec7a9834bb63bb65eeb6d01b8346c5e06835423e4f5709"}, + {file = "bitarray-2.6.2-cp311-cp311-win_amd64.whl", hash = "sha256:ae0b4e7f07a2c6283686f3143bb6a9a4d95a930a21b54dfb1ecad65724879faf"}, + {file = "bitarray-2.6.2-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:de93a82a13f042e978fbc6650112c3cd4aedabb272a6ebfc431b150889e6143b"}, + {file = "bitarray-2.6.2-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e3a0178cd4fd7cdd835d8cd166bf8a3e5b1bd5703a2e14d15ed6234737517ef"}, + {file = "bitarray-2.6.2-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8e1d4dd3d7a84f70d01be0fe53da69f1954b68139ea552406169ae9c5e4cadee"}, + {file = "bitarray-2.6.2-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e50a54c8c8d17903f714e270ceb7b13d5d14d899f5be0828f37e1cb192a8e069"}, + {file = "bitarray-2.6.2-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:333747da2365c1df10881a57f2015bcf93cf3cb2cd8e33207628596e42c3d618"}, + {file = "bitarray-2.6.2-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2f437687aed4accb75ec6325d4c8747901e766b12df1c4ed9eebaca1f98068c8"}, + {file = "bitarray-2.6.2-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:1740c618c903e24797ca5fae3d85f8806c9193623106cef99b7aa60e457c2cc3"}, + {file = "bitarray-2.6.2-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:42da7ab8fade0adcc9594b546ab57acca167bff57d1b2f1ec9fd2b9bdddd46ad"}, + {file = "bitarray-2.6.2-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:021d5f69b6ed3d674d95c99d7e3f16c8f750f67ac7395592543807c36e706f0e"}, + {file = "bitarray-2.6.2-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:c6a9018839e104238ae0512f61d4c8414ce53f01971e9a0417c90eea19869c1e"}, + {file = "bitarray-2.6.2-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:a15cfa5f58a1d3124d43d93a642625caa72234687bfbd4dbff24c84457b64ee7"}, + {file = "bitarray-2.6.2-cp36-cp36m-win32.whl", hash = "sha256:b75b825ecb338a93f10048e121b7f38cf4dbdecf8a7b6ca3a85f5a58d6920397"}, + {file = "bitarray-2.6.2-cp36-cp36m-win_amd64.whl", hash = "sha256:51fe3da246133779617ae333ac81b32e1bc3e7603f89d31929e51553e1511a8f"}, + {file = "bitarray-2.6.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c66d9a05f32bf5390c4ef838a0a444ecb1f5ef98b5ce398490f57abfefc26a56"}, + {file = "bitarray-2.6.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29c8f3ab0d95ff7eb30c556d71c166d7f5f2a40f1db365e7c703f9a32ff525e1"}, + {file = "bitarray-2.6.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6db0d0682d8334c2f347a5fb2544beb9167a2209d5c2bf2f92a3398f189600c0"}, + {file = "bitarray-2.6.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b70a480515ee9b41ce634b17939a754340febad06d422b12e4a4772e2760e710"}, + {file = "bitarray-2.6.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:619693e63c558b535d2f43e576f8f1d8c3b25428a7b73ad68b5e35e70812323e"}, + {file = "bitarray-2.6.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9cbc14b8940e801cc54707aa01e5a8c94517a517f720aa3236cc1cd7486c5e5c"}, + {file = "bitarray-2.6.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:50a97cce5d9612a12a9a7b3a974f91c0621565898a365cb9dad3e11f65165a0b"}, + {file = "bitarray-2.6.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:89bec783329e9a318ff7f6bacebe14c246a7bf9f3922d7ad09053860b0803cd1"}, + {file = "bitarray-2.6.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:6dca5a48446f04828a19a0cc5379bd855aad26eff1e50cc6b79cb96afab342e6"}, + {file = "bitarray-2.6.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5f5f065d51ec4479a04bb5197ec47afd47c26590c92d90efdc7ab945d8d3fab4"}, + {file = "bitarray-2.6.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:b06ea7287def76def64ec0203b32f2c171d6b8b378f1125ac3f3a96414e7a69b"}, + {file = "bitarray-2.6.2-cp37-cp37m-win32.whl", hash = "sha256:52677ae25ffa19691401bf47db16141e708398a456b96353ec2abe90511cd2d2"}, + {file = "bitarray-2.6.2-cp37-cp37m-win_amd64.whl", hash = "sha256:b5580d0b094ef766f50e1d2286b2192d13f4300a6ee03a56cdf763df9623bae8"}, + {file = "bitarray-2.6.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:1e51133da6c01c028d8fae0145bb3f82475f06bb23b35ef262c0c1bd15db0ff5"}, + {file = "bitarray-2.6.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:026cfda32022ee80b4956665f9536b4ff7ace6612f113c412d477d63b05745d7"}, + {file = "bitarray-2.6.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f20ec7427bd2a1496a8704688e419e47c2fb46f3812b091fb521dcdffdde578c"}, + {file = "bitarray-2.6.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85a0a72fcc106e1ae5a9261de1d99ce188517dc1343d05e781c2f3fef1d07f58"}, + {file = "bitarray-2.6.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0fed50b9f47823879f1e62c7d599777cdeabe0979919fb94e2aa4ee4e8a5f58d"}, + {file = "bitarray-2.6.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5a00da10ad5afb77fa1eded733634647c83f87eafcfc8bb58de275da65266c21"}, + {file = "bitarray-2.6.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b356a87cd0271988a90783bccf48bc8e1c7b2e026f8782107aa5b2459369014"}, + {file = "bitarray-2.6.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29e421015c881bbcc509d40469ed84058c7c39d72ed459c68e90be5f40f1e82f"}, + {file = "bitarray-2.6.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6d9d92b9d82264f2289097c15c0ef354fba58e58127d5ddeb17421283c3d901d"}, + {file = "bitarray-2.6.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:a2741442796db0d44a1b6108c102457c3aec19df56d2211f6de30beea025ca5c"}, + {file = "bitarray-2.6.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:f03b7e95c7101ab4b347441daa57a847d0a48e9cb20faf1ebbfeecfba9107b16"}, + {file = "bitarray-2.6.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:1f16738dd55788a19bfde25ba2ab4f60fefd028b659a6ce2ae2158371ad166d6"}, + {file = "bitarray-2.6.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f86e128040198940ebb1631d59d372e388f4f19a023cc69f3156a97a56a1bab9"}, + {file = "bitarray-2.6.2-cp38-cp38-win32.whl", hash = "sha256:8ea16ce12b894f423126478508b169a6440fc9799a7f7eb35e08473d1788ae80"}, + {file = "bitarray-2.6.2-cp38-cp38-win_amd64.whl", hash = "sha256:ca96bd9124ed7c24b1b86f7ecfb188eff3ceb422f15408388bd9e42c2ccb5ca0"}, + {file = "bitarray-2.6.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:9002ee11167174d874daec377f67c2683f7c10d4ff84e3f0bbda1bf444d78dae"}, + {file = "bitarray-2.6.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:615b078e6b37b1885a65e08d7c0656d1608b8ec7b512702a5643f3a14652060c"}, + {file = "bitarray-2.6.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:6f31c0df0ebb8908240d6d5c938ba640713920ae4996f9cfc8f5bc2f175c24fa"}, + {file = "bitarray-2.6.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b1ad90016568279754f4e1772becfce0766593ea51339dbba71a7457ac66866f"}, + {file = "bitarray-2.6.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:da723afce203274297028f07f7b8c8cc6daa2a31b905b6eba860741d2dda8bd1"}, + {file = "bitarray-2.6.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c139bfc8f10fdb43303b3e1e1b4bcc75511c45cd8b383a34f808734751614e4f"}, + {file = "bitarray-2.6.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a7276c6b57523f37e0b66610a543b66e33aa8bae8c4582392664a29088714567"}, + {file = "bitarray-2.6.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f5ae1bac51da6e0cc74259cac43a3dfb2daa37e72546f1365da6161c8a43426a"}, + {file = "bitarray-2.6.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:900b008a7c57806ac3112d785a5b54b7a9c685e582910b1bdb68be57b2d0fc80"}, + {file = "bitarray-2.6.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:1190c963e38cb6d60574155b62b2ef130ce0ad14cb79d84ea1a39b27a784dbf7"}, + {file = "bitarray-2.6.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:5257c30f744a2483d43c577724b4a553232c6dcd1ded32cd1aeb4c890e709ec8"}, + {file = "bitarray-2.6.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:8b98bcbf3b3eb4992cf8e884beb6fe42d25d3d1a575c1f455567336fb3e16ddf"}, + {file = "bitarray-2.6.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:a9212e13cf20ab3388c3ef1b72ea32c77778115f33ff0de2c093bd19360206ae"}, + {file = "bitarray-2.6.2-cp39-cp39-win32.whl", hash = "sha256:4fc37c92391f1d0ecbdfabf1b68db2f13eacdec4b1db1604c72dd3c3f923bf90"}, + {file = "bitarray-2.6.2-cp39-cp39-win_amd64.whl", hash = "sha256:3af6c3b7d803df41a68092b6d1164feeca8bb7eb5a1b2be9b666700ffa18e84b"}, + {file = "bitarray-2.6.2.tar.gz", hash = "sha256:90bac83ba6c37ab5048b43e07eba7d0de12f301ad6641633656fa269618a7301"}, ] black = [ - {file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"}, - {file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"}, - {file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"}, - {file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"}, - {file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"}, - {file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"}, - {file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"}, - {file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"}, - {file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"}, - {file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"}, - {file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"}, - {file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"}, - {file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"}, - {file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"}, - {file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"}, - {file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"}, - {file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"}, - {file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"}, - {file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"}, - {file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"}, - {file = "black-22.10.0.tar.gz", hash = "sha256:f513588da599943e0cde4e32cc9879e825d58720d6557062d1098c5ad80080e1"}, + {file = "black-22.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eedd20838bd5d75b80c9f5487dbcb06836a43833a37846cf1d8c1cc01cef59d"}, + {file = "black-22.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:159a46a4947f73387b4d83e87ea006dbb2337eab6c879620a3ba52699b1f4351"}, + {file = "black-22.12.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d30b212bffeb1e252b31dd269dfae69dd17e06d92b87ad26e23890f3efea366f"}, + {file = "black-22.12.0-cp311-cp311-win_amd64.whl", hash = "sha256:7412e75863aa5c5411886804678b7d083c7c28421210180d67dfd8cf1221e1f4"}, + {file = "black-22.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c116eed0efb9ff870ded8b62fe9f28dd61ef6e9ddd28d83d7d264a38417dcee2"}, + {file = "black-22.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:1f58cbe16dfe8c12b7434e50ff889fa479072096d79f0a7f25e4ab8e94cd8350"}, + {file = "black-22.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77d86c9f3db9b1bf6761244bc0b3572a546f5fe37917a044e02f3166d5aafa7d"}, + {file = "black-22.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:82d9fe8fee3401e02e79767016b4907820a7dc28d70d137eb397b92ef3cc5bfc"}, + {file = "black-22.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:101c69b23df9b44247bd88e1d7e90154336ac4992502d4197bdac35dd7ee3320"}, + {file = "black-22.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:559c7a1ba9a006226f09e4916060982fd27334ae1998e7a38b3f33a37f7a2148"}, + {file = "black-22.12.0-py3-none-any.whl", hash = "sha256:436cc9167dd28040ad90d3b404aec22cedf24a6e4d7de221bec2730ec0c97bcf"}, + {file = "black-22.12.0.tar.gz", hash = "sha256:229351e5a18ca30f447bf724d007f890f97e13af070bb6ad4c0a441cd7596a2f"}, ] blspy = [ {file = "blspy-1.0.16-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:5c4d31f19df5e6bd2bb84c3f21a43ef3cc80ff9414bb2541a8e49dad111aead6"}, @@ -3056,42 +3086,50 @@ blspy = [ {file = "blspy-1.0.16.tar.gz", hash = "sha256:5c005d4ba082509a59f4dd55adad3bf15d07a03537daed65df2cfde99287c057"}, ] cachetools = [ - {file = "cachetools-5.2.0-py3-none-any.whl", hash = "sha256:f9f17d2aec496a9aa6b76f53e3b614c965223c061982d434d160f930c698a9db"}, - {file = "cachetools-5.2.0.tar.gz", hash = "sha256:6a94c6402995a99c3970cc7e4884bb60b4a8639938157eeed436098bf9831757"}, + {file = "cachetools-5.2.1-py3-none-any.whl", hash = "sha256:8462eebf3a6c15d25430a8c27c56ac61340b2ecf60c9ce57afc2b97e450e47da"}, + {file = "cachetools-5.2.1.tar.gz", hash = "sha256:5991bc0e08a1319bb618d3195ca5b6bc76646a49c21d55962977197b301cc1fe"}, ] cbor2 = [ - {file = "cbor2-5.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8a643b19ace1584043bbf4e2d0b4fae8bebd6b6ffab14ea6478d3ff07f58e854"}, - {file = "cbor2-5.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e10f2f4fcf5ab6a8b24d22f7109f48cad8143f669795899370170d7b36ed309f"}, - {file = "cbor2-5.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2de925608dc6d73cd1aab08800bff38f71f90459c15db3a71a67023b0fc697da"}, - {file = "cbor2-5.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62fc15bfe187e4994c457e6055687514c417d6099de62dd33ae766561f05847e"}, - {file = "cbor2-5.4.3-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:3843a9bb970343e9c896aa71a34fa80983cd0ddec6eacdb2284b5e83f4ee7511"}, - {file = "cbor2-5.4.3-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b35c5d4d14fe804f718d5a5968a528970d2a7046aa87045538f189a98e5c7055"}, - {file = "cbor2-5.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:0a3a1b2f6b83ab4ce806df48360cc16d34cd315f17549dbda9fdd371bea04497"}, - {file = "cbor2-5.4.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4b09ff6148a8cd529512479a1d6521fb7687fb03b448973933c3b03711d00bfc"}, - {file = "cbor2-5.4.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d21ccd1ec802e88dba1c373724a09538a0237116ab589c5301ca4c59478f7c10"}, - {file = "cbor2-5.4.3-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07975f956baddb8dfeca4966f1871fd2482cb36af24c461f763732a44675225"}, - {file = "cbor2-5.4.3-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:9538ab1b4207e76ee02a52362d77e312921ec1dc75b6fb42182887d87d0ca53e"}, - {file = "cbor2-5.4.3-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:cbca58220f52fd50d8985e4079e10c71196d538fb6685f157f608a29253409a4"}, - {file = "cbor2-5.4.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c617c7f94936d65ed9c8e99c6c03e3dc83313d69c6bfea810014ec658e9b1a9d"}, - {file = "cbor2-5.4.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:70789805b9aebd215626188aa05bb09908ed51e3268d4db5ae6a08276efdbcb1"}, - {file = "cbor2-5.4.3-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0e4ae67a697c664b579b87c4ef9d60e26c146b95bff443a9a38abb16f6981ff0"}, - {file = "cbor2-5.4.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ab6c934806759d453a9bb5318f2703c831e736be005ac35d5bd5cf2093ba57b1"}, - {file = "cbor2-5.4.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:981b9ffc4f2947a0f030e71ce5eac31334bc81369dd57c6c1273c94c6cdb0b5a"}, - {file = "cbor2-5.4.3-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:cbe7cdeed26cd8ec2dcfed2b8876bc137ad8b9e0abb07aa5fb05770148a4b5c7"}, - {file = "cbor2-5.4.3-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6bc8c5606aa0ae510bdb3c7d987f92df39ef87d09e0f0588a4d1daffd3cb0453"}, - {file = "cbor2-5.4.3-cp38-cp38-win_amd64.whl", hash = "sha256:5c50da4702ac5ca3a8e7cb9f34f62b4ea91bc81b76c2fba03888b366da299cd8"}, - {file = "cbor2-5.4.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:37ae0ce5afe864d1a1c5b05becaf8aaca7b7131cb7b0b935d7e79b29fb1cea28"}, - {file = "cbor2-5.4.3-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:2f30f7ef329ea6ec630ceabe5a539fed407b9c81e27e2322644e3efbbd1b2a76"}, - {file = "cbor2-5.4.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d549abea7115c8a0d7c61a31a895c031f902a7b4c875f9efd8ce41e466baf83a"}, - {file = "cbor2-5.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6fab0e00c28305db59f7005150447d08dd13da6a82695a2132c28beba590fd2c"}, - {file = "cbor2-5.4.3-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:20291dad09cf9c4e5f434d376dd9d60f5ab5e066b308005f50e7c5e22e504214"}, - {file = "cbor2-5.4.3-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5aaf3406c9d661d11f87e792edb9a38561dba1441afba7fb883d6d963e67f32c"}, - {file = "cbor2-5.4.3-cp39-cp39-win_amd64.whl", hash = "sha256:4e8590193fcbbb9477010ca0f094f6540a5e723965c90eea7a37edbe75f0ec4d"}, - {file = "cbor2-5.4.3.tar.gz", hash = "sha256:62b863c5ee6ced4032afe948f3c1484f375550995d3b8498145237fe28e546c2"}, + {file = "cbor2-5.4.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:309fffbb7f561d67f02095d4b9657b73c9220558701c997e9bfcfbca2696e927"}, + {file = "cbor2-5.4.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ff95b33e5482313a74648ca3620c9328e9f30ecfa034df040b828e476597d352"}, + {file = "cbor2-5.4.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:db9eb582fce972f0fa429d8159b7891ff8deccb7affc4995090afc61ce0d328a"}, + {file = "cbor2-5.4.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3950be57a1698086cf26d8710b4e5a637b65133c5b1f9eec23967d4089d8cfed"}, + {file = "cbor2-5.4.6-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:78304df140b9e13b93bcbb2aecee64c9aaa9f1cadbd45f043b5e7b93cc2f21a2"}, + {file = "cbor2-5.4.6-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e73ca40dd3c7210ff776acff9869ddc9ff67bae7c425b58e5715dcf55275163f"}, + {file = "cbor2-5.4.6-cp310-cp310-win_amd64.whl", hash = "sha256:0b956f19e93ba3180c336282cd1b6665631f2d3a196a9c19b29a833bf979e7a4"}, + {file = "cbor2-5.4.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1c12c0ab78f5bc290b08a79152a8621822415836a86f8f4b50dadba371736fda"}, + {file = "cbor2-5.4.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:3545b16f9f0d5f34d4c99052829c3726020a07be34c99c250d0df87418f02954"}, + {file = "cbor2-5.4.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:24144822f8d2b0156f4cda9427f071f969c18683ffed39663dc86bc0a75ae4dd"}, + {file = "cbor2-5.4.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1835536e76ea16e88c934aac5e369ba9f93d495b01e5fa2d93f0b4986b89146d"}, + {file = "cbor2-5.4.6-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:39452c799453f5bf33281ffc0752c620b8bfa0b7c13070b87d370257a1311976"}, + {file = "cbor2-5.4.6-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3316f09a77af85e7772ecfdd693b0f450678a60b1aee641bac319289757e3fa0"}, + {file = "cbor2-5.4.6-cp311-cp311-win_amd64.whl", hash = "sha256:456cdff668a50a52fdb8aa6d0742511e43ed46d6a5b463dba80a5a720fa0d320"}, + {file = "cbor2-5.4.6-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:9394ca49ecdf0957924e45d09a4026482d184a465a047f60c4044eb464c43de9"}, + {file = "cbor2-5.4.6-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56dfa030cd3d67e5b6701d3067923f2f61536a8ffb1b45be14775d1e866b59ae"}, + {file = "cbor2-5.4.6-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5094562dfe3e5583202b93ef7ca5082c2ba5571accb2c4412d27b7d0ba8a563"}, + {file = "cbor2-5.4.6-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:94f844d0e232aca061a86dd6ff191e47ba0389ddd34acb784ad9a41594dc99a4"}, + {file = "cbor2-5.4.6-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:7bbd3470eb685325398023e335be896b74f61b014896604ed45049a7b7b6d8ac"}, + {file = "cbor2-5.4.6-cp37-cp37m-win_amd64.whl", hash = "sha256:0bd12c54a48949d11f5ffc2fa27f5df1b4754111f5207453e5fae3512ebb3cab"}, + {file = "cbor2-5.4.6-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d2984a488f350aee1d54fa9cb8c6a3c1f1f5b268abbc91161e47185de4d829f3"}, + {file = "cbor2-5.4.6-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:c285a2cb2c04004bfead93df89d92a0cef1874ad337d0cb5ea53c2c31e97bfdb"}, + {file = "cbor2-5.4.6-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6709d97695205cd08255363b54afa035306d5302b7b5e38308c8ff5a47e60f2a"}, + {file = "cbor2-5.4.6-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96087fa5336ebfc94465c0768cd5de0fcf9af3840d2cf0ce32f5767855f1a293"}, + {file = "cbor2-5.4.6-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:0d2b926b024d3a1549b819bc82fdc387062bbd977b0299dd5fa5e0ea3267b98b"}, + {file = "cbor2-5.4.6-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:6e1b5aee920b6a2f737aa12e2b54de3826b09f885a7ce402db84216343368140"}, + {file = "cbor2-5.4.6-cp38-cp38-win_amd64.whl", hash = "sha256:79e048e623846d60d735bb350263e8fdd36cb6195d7f1a2b57eacd573d9c0b33"}, + {file = "cbor2-5.4.6-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:80ac8ba450c7a41c5afe5f7e503d3092442ed75393e1de162b0bf0d97edf7c7f"}, + {file = "cbor2-5.4.6-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ce1a2c272ba8523a55ea2f1d66e3464e89fa0e37c9a3d786a919fe64e68dbd7"}, + {file = "cbor2-5.4.6-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1618d16e310f7ffed141762b0ff5d8bb6b53ad449406115cc465bf04213cefcf"}, + {file = "cbor2-5.4.6-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4bbbdb2e3ef274865dc3f279aae109b5d94f4654aea3c72c479fb37e4a1e7ed7"}, + {file = "cbor2-5.4.6-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6f9c702bee2954fffdfa3de95a5af1a6b1c5f155e39490353d5654d83bb05bb9"}, + {file = "cbor2-5.4.6-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:4b9f3924da0e460a93b3674c7e71020dd6c9e9f17400a34e52a88c0af2dcd2aa"}, + {file = "cbor2-5.4.6-cp39-cp39-win_amd64.whl", hash = "sha256:d54bd840b4fe34f097b8665fc0692c7dd175349e53976be6c5de4433b970daa4"}, + {file = "cbor2-5.4.6-py3-none-any.whl", hash = "sha256:181ac494091d1f9c5bb373cd85514ce1eb967a8cf3ec298e8dfa8878aa823956"}, + {file = "cbor2-5.4.6.tar.gz", hash = "sha256:b893500db0fe033e570c3adc956af6eefc57e280026bd2d86fd53da9f1e594d7"}, ] certifi = [ - {file = "certifi-2022.9.24-py3-none-any.whl", hash = "sha256:90c1a32f1d68f940488354e36370f6cca89f0f106db09518524c88d6ed83f382"}, - {file = "certifi-2022.9.24.tar.gz", hash = "sha256:0d9c601124e5a6ba9712dbc60d9c53c21e34f5f641fe83002317394311bdce14"}, + {file = "certifi-2022.12.7-py3-none-any.whl", hash = "sha256:4ad3232f5e926d6718ec31cfc1fcadfde020920e278684144551c91769c7bc18"}, + {file = "certifi-2022.12.7.tar.gz", hash = "sha256:35824b4c3a97115964b408844d64aa14db1cc518f6562e8d7261699d1350a9e3"}, ] cffi = [ {file = "cffi-1.15.1-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:a66d3508133af6e8548451b25058d5812812ec3798c886bf38ed24a98216fab2"}, @@ -3220,60 +3258,61 @@ configparser = [ {file = "configparser-5.3.0.tar.gz", hash = "sha256:8be267824b541c09b08db124917f48ab525a6c3e837011f3130781a224c57090"}, ] cosmpy = [ - {file = "cosmpy-0.6.1-py3-none-any.whl", hash = "sha256:496a6dbd9ff8f96661d83880412020f7cfd62678f7ccfd48bf867b1a1ff428c7"}, - {file = "cosmpy-0.6.1.tar.gz", hash = "sha256:98e2a939e1ee671c462fe86b2e8b85091bb85f4c19c87617b30e7d588069d462"}, + {file = "cosmpy-0.6.2-py3-none-any.whl", hash = "sha256:537a262df4d72346e751c97480b122cbcbcc66be32ef321a1a95c2b1d8628ff1"}, + {file = "cosmpy-0.6.2.tar.gz", hash = "sha256:a7c92b13a34bfa4b5287e56c3d4c7cb85cc3e8d008965da3fb18711c46c18ab6"}, ] coverage = [ - {file = "coverage-6.5.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ef8674b0ee8cc11e2d574e3e2998aea5df5ab242e012286824ea3c6970580e53"}, - {file = "coverage-6.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:784f53ebc9f3fd0e2a3f6a78b2be1bd1f5575d7863e10c6e12504f240fd06660"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4a5be1748d538a710f87542f22c2cad22f80545a847ad91ce45e77417293eb4"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:83516205e254a0cb77d2d7bb3632ee019d93d9f4005de31dca0a8c3667d5bc04"}, - {file = "coverage-6.5.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af4fffaffc4067232253715065e30c5a7ec6faac36f8fc8d6f64263b15f74db0"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:97117225cdd992a9c2a5515db1f66b59db634f59d0679ca1fa3fe8da32749cae"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a1170fa54185845505fbfa672f1c1ab175446c887cce8212c44149581cf2d466"}, - {file = "coverage-6.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:11b990d520ea75e7ee8dcab5bc908072aaada194a794db9f6d7d5cfd19661e5a"}, - {file = "coverage-6.5.0-cp310-cp310-win32.whl", hash = "sha256:5dbec3b9095749390c09ab7c89d314727f18800060d8d24e87f01fb9cfb40b32"}, - {file = "coverage-6.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:59f53f1dc5b656cafb1badd0feb428c1e7bc19b867479ff72f7a9dd9b479f10e"}, - {file = "coverage-6.5.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4a5375e28c5191ac38cca59b38edd33ef4cc914732c916f2929029b4bfb50795"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ed2820d919351f4167e52425e096af41bfabacb1857186c1ea32ff9983ed75"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33a7da4376d5977fbf0a8ed91c4dffaaa8dbf0ddbf4c8eea500a2486d8bc4d7b"}, - {file = "coverage-6.5.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8fb6cf131ac4070c9c5a3e21de0f7dc5a0fbe8bc77c9456ced896c12fcdad91"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a6b7d95969b8845250586f269e81e5dfdd8ff828ddeb8567a4a2eaa7313460c4"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:1ef221513e6f68b69ee9e159506d583d31aa3567e0ae84eaad9d6ec1107dddaa"}, - {file = "coverage-6.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:cca4435eebea7962a52bdb216dec27215d0df64cf27fc1dd538415f5d2b9da6b"}, - {file = "coverage-6.5.0-cp311-cp311-win32.whl", hash = "sha256:98e8a10b7a314f454d9eff4216a9a94d143a7ee65018dd12442e898ee2310578"}, - {file = "coverage-6.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:bc8ef5e043a2af066fa8cbfc6e708d58017024dc4345a1f9757b329a249f041b"}, - {file = "coverage-6.5.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4433b90fae13f86fafff0b326453dd42fc9a639a0d9e4eec4d366436d1a41b6d"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4f05d88d9a80ad3cac6244d36dd89a3c00abc16371769f1340101d3cb899fc3"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:94e2565443291bd778421856bc975d351738963071e9b8839ca1fc08b42d4bef"}, - {file = "coverage-6.5.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:027018943386e7b942fa832372ebc120155fd970837489896099f5cfa2890f79"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:255758a1e3b61db372ec2736c8e2a1fdfaf563977eedbdf131de003ca5779b7d"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:851cf4ff24062c6aec510a454b2584f6e998cada52d4cb58c5e233d07172e50c"}, - {file = "coverage-6.5.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:12adf310e4aafddc58afdb04d686795f33f4d7a6fa67a7a9d4ce7d6ae24d949f"}, - {file = "coverage-6.5.0-cp37-cp37m-win32.whl", hash = "sha256:b5604380f3415ba69de87a289a2b56687faa4fe04dbee0754bfcae433489316b"}, - {file = "coverage-6.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:4a8dbc1f0fbb2ae3de73eb0bdbb914180c7abfbf258e90b311dcd4f585d44bd2"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:d900bb429fdfd7f511f868cedd03a6bbb142f3f9118c09b99ef8dc9bf9643c3c"}, - {file = "coverage-6.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2198ea6fc548de52adc826f62cb18554caedfb1d26548c1b7c88d8f7faa8f6ba"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6c4459b3de97b75e3bd6b7d4b7f0db13f17f504f3d13e2a7c623786289dd670e"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:20c8ac5386253717e5ccc827caad43ed66fea0efe255727b1053a8154d952398"}, - {file = "coverage-6.5.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b07130585d54fe8dff3d97b93b0e20290de974dc8177c320aeaf23459219c0b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:dbdb91cd8c048c2b09eb17713b0c12a54fbd587d79adcebad543bc0cd9a3410b"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:de3001a203182842a4630e7b8d1a2c7c07ec1b45d3084a83d5d227a3806f530f"}, - {file = "coverage-6.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:e07f4a4a9b41583d6eabec04f8b68076ab3cd44c20bd29332c6572dda36f372e"}, - {file = "coverage-6.5.0-cp38-cp38-win32.whl", hash = "sha256:6d4817234349a80dbf03640cec6109cd90cba068330703fa65ddf56b60223a6d"}, - {file = "coverage-6.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:7ccf362abd726b0410bf8911c31fbf97f09f8f1061f8c1cf03dfc4b6372848f6"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:633713d70ad6bfc49b34ead4060531658dc6dfc9b3eb7d8a716d5873377ab745"}, - {file = "coverage-6.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:95203854f974e07af96358c0b261f1048d8e1083f2de9b1c565e1be4a3a48cfc"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9023e237f4c02ff739581ef35969c3739445fb059b060ca51771e69101efffe"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:265de0fa6778d07de30bcf4d9dc471c3dc4314a23a3c6603d356a3c9abc2dfcf"}, - {file = "coverage-6.5.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f830ed581b45b82451a40faabb89c84e1a998124ee4212d440e9c6cf70083e5"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:7b6be138d61e458e18d8e6ddcddd36dd96215edfe5f1168de0b1b32635839b62"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:42eafe6778551cf006a7c43153af1211c3aaab658d4d66fa5fcc021613d02518"}, - {file = "coverage-6.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:723e8130d4ecc8f56e9a611e73b31219595baa3bb252d539206f7bbbab6ffc1f"}, - {file = "coverage-6.5.0-cp39-cp39-win32.whl", hash = "sha256:d9ecf0829c6a62b9b573c7bb6d4dcd6ba8b6f80be9ba4fc7ed50bf4ac9aecd72"}, - {file = "coverage-6.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:fc2af30ed0d5ae0b1abdb4ebdce598eafd5b35397d4d75deb341a614d333d987"}, - {file = "coverage-6.5.0-pp36.pp37.pp38-none-any.whl", hash = "sha256:1431986dac3923c5945271f169f59c45b8802a114c8f548d611f2015133df77a"}, - {file = "coverage-6.5.0.tar.gz", hash = "sha256:f642e90754ee3e06b0e7e51bce3379590e76b7f76b708e1a71ff043f87025c84"}, + {file = "coverage-7.0.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2a7f23bbaeb2a87f90f607730b45564076d870f1fb07b9318d0c21f36871932b"}, + {file = "coverage-7.0.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c18d47f314b950dbf24a41787ced1474e01ca816011925976d90a88b27c22b89"}, + {file = "coverage-7.0.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef14d75d86f104f03dea66c13188487151760ef25dd6b2dbd541885185f05f40"}, + {file = "coverage-7.0.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66e50680e888840c0995f2ad766e726ce71ca682e3c5f4eee82272c7671d38a2"}, + {file = "coverage-7.0.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a9fed35ca8c6e946e877893bbac022e8563b94404a605af1d1e6accc7eb73289"}, + {file = "coverage-7.0.5-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d8d04e755934195bdc1db45ba9e040b8d20d046d04d6d77e71b3b34a8cc002d0"}, + {file = "coverage-7.0.5-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7e109f1c9a3ece676597831874126555997c48f62bddbcace6ed17be3e372de8"}, + {file = "coverage-7.0.5-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0a1890fca2962c4f1ad16551d660b46ea77291fba2cc21c024cd527b9d9c8809"}, + {file = "coverage-7.0.5-cp310-cp310-win32.whl", hash = "sha256:be9fcf32c010da0ba40bf4ee01889d6c737658f4ddff160bd7eb9cac8f094b21"}, + {file = "coverage-7.0.5-cp310-cp310-win_amd64.whl", hash = "sha256:cbfcba14a3225b055a28b3199c3d81cd0ab37d2353ffd7f6fd64844cebab31ad"}, + {file = "coverage-7.0.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:30b5fec1d34cc932c1bc04017b538ce16bf84e239378b8f75220478645d11fca"}, + {file = "coverage-7.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:1caed2367b32cc80a2b7f58a9f46658218a19c6cfe5bc234021966dc3daa01f0"}, + {file = "coverage-7.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d254666d29540a72d17cc0175746cfb03d5123db33e67d1020e42dae611dc196"}, + {file = "coverage-7.0.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19245c249aa711d954623d94f23cc94c0fd65865661f20b7781210cb97c471c0"}, + {file = "coverage-7.0.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b05ed4b35bf6ee790832f68932baf1f00caa32283d66cc4d455c9e9d115aafc"}, + {file = "coverage-7.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:29de916ba1099ba2aab76aca101580006adfac5646de9b7c010a0f13867cba45"}, + {file = "coverage-7.0.5-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e057e74e53db78122a3979f908973e171909a58ac20df05c33998d52e6d35757"}, + {file = "coverage-7.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:411d4ff9d041be08fdfc02adf62e89c735b9468f6d8f6427f8a14b6bb0a85095"}, + {file = "coverage-7.0.5-cp311-cp311-win32.whl", hash = "sha256:52ab14b9e09ce052237dfe12d6892dd39b0401690856bcfe75d5baba4bfe2831"}, + {file = "coverage-7.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:1f66862d3a41674ebd8d1a7b6f5387fe5ce353f8719040a986551a545d7d83ea"}, + {file = "coverage-7.0.5-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b69522b168a6b64edf0c33ba53eac491c0a8f5cc94fa4337f9c6f4c8f2f5296c"}, + {file = "coverage-7.0.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:436e103950d05b7d7f55e39beeb4d5be298ca3e119e0589c0227e6d0b01ee8c7"}, + {file = "coverage-7.0.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b8c56bec53d6e3154eaff6ea941226e7bd7cc0d99f9b3756c2520fc7a94e6d96"}, + {file = "coverage-7.0.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7a38362528a9115a4e276e65eeabf67dcfaf57698e17ae388599568a78dcb029"}, + {file = "coverage-7.0.5-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:f67472c09a0c7486e27f3275f617c964d25e35727af952869dd496b9b5b7f6a3"}, + {file = "coverage-7.0.5-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:220e3fa77d14c8a507b2d951e463b57a1f7810a6443a26f9b7591ef39047b1b2"}, + {file = "coverage-7.0.5-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ecb0f73954892f98611e183f50acdc9e21a4653f294dfbe079da73c6378a6f47"}, + {file = "coverage-7.0.5-cp37-cp37m-win32.whl", hash = "sha256:d8f3e2e0a1d6777e58e834fd5a04657f66affa615dae61dd67c35d1568c38882"}, + {file = "coverage-7.0.5-cp37-cp37m-win_amd64.whl", hash = "sha256:9e662e6fc4f513b79da5d10a23edd2b87685815b337b1a30cd11307a6679148d"}, + {file = "coverage-7.0.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:790e4433962c9f454e213b21b0fd4b42310ade9c077e8edcb5113db0818450cb"}, + {file = "coverage-7.0.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:49640bda9bda35b057b0e65b7c43ba706fa2335c9a9896652aebe0fa399e80e6"}, + {file = "coverage-7.0.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d66187792bfe56f8c18ba986a0e4ae44856b1c645336bd2c776e3386da91e1dd"}, + {file = "coverage-7.0.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:276f4cd0001cd83b00817c8db76730938b1ee40f4993b6a905f40a7278103b3a"}, + {file = "coverage-7.0.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95304068686545aa368b35dfda1cdfbbdbe2f6fe43de4a2e9baa8ebd71be46e2"}, + {file = "coverage-7.0.5-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:17e01dd8666c445025c29684d4aabf5a90dc6ef1ab25328aa52bedaa95b65ad7"}, + {file = "coverage-7.0.5-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ea76dbcad0b7b0deb265d8c36e0801abcddf6cc1395940a24e3595288b405ca0"}, + {file = "coverage-7.0.5-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:50a6adc2be8edd7ee67d1abc3cd20678987c7b9d79cd265de55941e3d0d56499"}, + {file = "coverage-7.0.5-cp38-cp38-win32.whl", hash = "sha256:e4ce984133b888cc3a46867c8b4372c7dee9cee300335e2925e197bcd45b9e16"}, + {file = "coverage-7.0.5-cp38-cp38-win_amd64.whl", hash = "sha256:4a950f83fd3f9bca23b77442f3a2b2ea4ac900944d8af9993743774c4fdc57af"}, + {file = "coverage-7.0.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:3c2155943896ac78b9b0fd910fb381186d0c345911f5333ee46ac44c8f0e43ab"}, + {file = "coverage-7.0.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:54f7e9705e14b2c9f6abdeb127c390f679f6dbe64ba732788d3015f7f76ef637"}, + {file = "coverage-7.0.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ee30375b409d9a7ea0f30c50645d436b6f5dfee254edffd27e45a980ad2c7f4"}, + {file = "coverage-7.0.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b78729038abea6a5df0d2708dce21e82073463b2d79d10884d7d591e0f385ded"}, + {file = "coverage-7.0.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:13250b1f0bd023e0c9f11838bdeb60214dd5b6aaf8e8d2f110c7e232a1bff83b"}, + {file = "coverage-7.0.5-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:2c407b1950b2d2ffa091f4e225ca19a66a9bd81222f27c56bd12658fc5ca1209"}, + {file = "coverage-7.0.5-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:c76a3075e96b9c9ff00df8b5f7f560f5634dffd1658bafb79eb2682867e94f78"}, + {file = "coverage-7.0.5-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:f26648e1b3b03b6022b48a9b910d0ae209e2d51f50441db5dce5b530fad6d9b1"}, + {file = "coverage-7.0.5-cp39-cp39-win32.whl", hash = "sha256:ba3027deb7abf02859aca49c865ece538aee56dcb4871b4cced23ba4d5088904"}, + {file = "coverage-7.0.5-cp39-cp39-win_amd64.whl", hash = "sha256:949844af60ee96a376aac1ded2a27e134b8c8d35cc006a52903fc06c24a3296f"}, + {file = "coverage-7.0.5-pp37.pp38.pp39-none-any.whl", hash = "sha256:b9727ac4f5cf2cbf87880a63870b5b9730a8ae3a4a360241a0fdaa2f71240ff0"}, + {file = "coverage-7.0.5.tar.gz", hash = "sha256:051afcbd6d2ac39298d62d340f94dbb6a1f31de06dfaf6fcef7b759dd3860c45"}, ] crcmod = [ {file = "crcmod-1.7.tar.gz", hash = "sha256:dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e"}, @@ -3283,90 +3322,104 @@ cycler = [ {file = "cycler-0.11.0.tar.gz", hash = "sha256:9c87405839a19696e837b3b818fed3f5f69f16f1eec1a1ad77e043dcea9c772f"}, ] cytoolz = [ - {file = "cytoolz-0.12.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8237612fed78d4580e94141a74ac0977f5a9614dd7fa8f3d2fcb30e6d04e73aa"}, - {file = "cytoolz-0.12.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:798dff7a40adbb3dfa2d50499c2038779061ebc37eccedaf28fa296cb517b84e"}, - {file = "cytoolz-0.12.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:336551092eb1cfc2ad5878cc08ef290f744843f84c1dda06f9e4a84d2c440b73"}, - {file = "cytoolz-0.12.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:79b46cda959f026bd9fc33b4046294b32bd5e7664a4cf607179f80ac93844e7f"}, - {file = "cytoolz-0.12.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b716f66b5ee72dbf9a001316ffe72afe0bb8f6ce84e341aec64291c0ff16b9f4"}, - {file = "cytoolz-0.12.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ac7758c5c5a66664285831261a9af8e0af504026e0987cd01535045945df6e1"}, - {file = "cytoolz-0.12.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:337c9a3ce2929c6361bcc1b304ce81ed675078a34c203dbb7c3e154f7ed1cca8"}, - {file = "cytoolz-0.12.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:ee1fe1a3d0c8c456c3fbf62f28d178f870d14302fcd1edbc240b717ae3ab08de"}, - {file = "cytoolz-0.12.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f1f5c1ef04240b323b9e6b87d4b1d7f14b735e284a33b18a509537a10f62715c"}, - {file = "cytoolz-0.12.0-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:25c037a7b4f49730ccc295a03cd2217ba67ff43ac0918299f5f368271433ff0f"}, - {file = "cytoolz-0.12.0-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:38e3386f63ebaea46a4ee0bfefc9a38590c3b78ab86439766b5225443468a76b"}, - {file = "cytoolz-0.12.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cb072fa81caab93a5892c4b69dfe0d48f52026a7fe83ba2567020a7995a456e7"}, - {file = "cytoolz-0.12.0-cp310-cp310-win32.whl", hash = "sha256:a4acf6cb20f01a5eb5b6d459e08fb92aacfb4de8bc97e25437c1a3e71860b452"}, - {file = "cytoolz-0.12.0-cp310-cp310-win_amd64.whl", hash = "sha256:7fe93ffde090e2867f8ce4369d0c1abf5651817a74a3d0a4da2b1ffd412603ff"}, - {file = "cytoolz-0.12.0-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:d212296e996a70db8d9e1c0622bc8aefa732eb0416b5441624d0fd5b853ea391"}, - {file = "cytoolz-0.12.0-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:231d87ffb5fc468989e35336a2f8da1c9b8d97cfd9300cf2df32e953e4d20cae"}, - {file = "cytoolz-0.12.0-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f26079bc2d0b7aa1a185516ac9f7cda0d7932da6c60589bfed4079e3a5369e83"}, - {file = "cytoolz-0.12.0-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d511dd49eb1263ccb4e5f84ae1478dc2824d66b813cdf700e1ba593faa256ade"}, - {file = "cytoolz-0.12.0-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa5ded9f811c36668239adb4806fca1244b06add4d64af31119c279aab1ef8a6"}, - {file = "cytoolz-0.12.0-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c818a382b828e960fbbedbc85663414edbbba816c2bf8c1bb5651305d79bdb97"}, - {file = "cytoolz-0.12.0-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:1c22255e7458feb6f43d99c9578396e91d5934757c552128f6afd3b093b41c00"}, - {file = "cytoolz-0.12.0-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:5b7079b3197256ac6bf73f8b9484d514fac68a36d05513b9e5247354d6fc2885"}, - {file = "cytoolz-0.12.0-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:2ee9ca2cfc939607926096c7cc6f298cee125f8ca53a4f46745f8dfbb7fb7ab1"}, - {file = "cytoolz-0.12.0-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:8c0101bb2b2bcc0de2e2eb288a132c261e5fa883b1423799b47d4f0cfd879cd6"}, - {file = "cytoolz-0.12.0-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:4b8b1d9764d08782caa8ba0e91d76b95b973a82f4ce2a3f9c7e726bfeaddbdfa"}, - {file = "cytoolz-0.12.0-cp36-cp36m-win32.whl", hash = "sha256:f71b49a41826a8e7fd464d6991134a6d022a666be4e76d517850abbea561c909"}, - {file = "cytoolz-0.12.0-cp36-cp36m-win_amd64.whl", hash = "sha256:ae7f417bb2b4e3906e525b3dbe944791dfa9248faea719c7a9c200aa1a019a4e"}, - {file = "cytoolz-0.12.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b05dc257996c0accf6f877b1f212f74dc134b39c46baac09e1894d9d9c970b6a"}, - {file = "cytoolz-0.12.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2cca43caea857e761cc458ffb4f7af397a13824c5e71341ca08035ff5ff0b27"}, - {file = "cytoolz-0.12.0-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:dd840adfe027d379e7aede973bc0e193e6eef9b33d46d1d42826e26db9b37d7e"}, - {file = "cytoolz-0.12.0-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:94b067c88de0eaca174211c8422b3f72cbfb63b101a0eeb528c4f21282ca0afe"}, - {file = "cytoolz-0.12.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db619f17705067f1f112d3e84a0904b2f04117e50cefc4016f435ff0dc59bc4e"}, - {file = "cytoolz-0.12.0-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3e8335998e21205574fc7d8d17844a9cc0dd4cbb25bb7716d90683a935d2c879"}, - {file = "cytoolz-0.12.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:46b9f4af719b113c01a4144c52fc4b929f98a47017a5408e3910050f4641126b"}, - {file = "cytoolz-0.12.0-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2d29cf7a44a8abaeb00537e3bad7abf823fce194fe707c366f81020d384e22f7"}, - {file = "cytoolz-0.12.0-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:02dc4565a8d27c9f3e87b715c0a300890e17c94ba1294af61c4ba97aa8482b22"}, - {file = "cytoolz-0.12.0-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:2bd1c692ab706acb46cfebe7105945b07f7274598097e32c8979d3b22ae62cc6"}, - {file = "cytoolz-0.12.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:d035805dcdefcdfe64d97d6e1e7603798588d5e1ae08e61a5dae3258c3cb407a"}, - {file = "cytoolz-0.12.0-cp37-cp37m-win32.whl", hash = "sha256:9ecdd6e2be8d59b76c2bd3e2d832e7b3d5b2535c418b13cfa85e3b17de985199"}, - {file = "cytoolz-0.12.0-cp37-cp37m-win_amd64.whl", hash = "sha256:3a5408a74df84e84aa1c86a2f9f2ffaed51a55f34bbad5b8fae547cb9167e977"}, - {file = "cytoolz-0.12.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1cf9ae77eed57924becd3ab65ae24487d7b1f9823d3e685d796e58f57424f82a"}, - {file = "cytoolz-0.12.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:dc8df9adfca0da9956589f53764d459389ce86d824663c7217422232f1dfbc9d"}, - {file = "cytoolz-0.12.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:edf460dc6bed081f274cd3d8ae162dd7e382014161d65edcdec832035d93901b"}, - {file = "cytoolz-0.12.0-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f5784adcdb285e70b61efc1a369cd61c6b7f1e0b5d521651f93cde09549681f5"}, - {file = "cytoolz-0.12.0-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:09fac69cebcb79a6ed75565fe2de9511be6e3d93f30dad115832cc1a3933b6ce"}, - {file = "cytoolz-0.12.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1744217505b835fcf55d82d67addd0d361791c4fd6a2f485f034b343ffc7edb3"}, - {file = "cytoolz-0.12.0-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fa49cfaa0eedad59d8357a482bd10e2cc2a12ad9f41aae53427e82d3eba068a"}, - {file = "cytoolz-0.12.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:c9f8c9b3cfa20b4ce6a89b7e2e7ffda76bdd81e95b7d20bbb2c47c2b31e72622"}, - {file = "cytoolz-0.12.0-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:0c9fe89548b1dc7c8b3160758d192791b32bd42b1c244a20809a1053a9d74428"}, - {file = "cytoolz-0.12.0-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:d61bc1713662e7d9aa3e298dad790dfd027c5c0f1342c36be8401aebe3d3d453"}, - {file = "cytoolz-0.12.0-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:69c04ae878d5bcde5462e7290f950bfce11fd139ec4b481687983326658e6dbe"}, - {file = "cytoolz-0.12.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:21986f4a970c03ca84806b3a08e89386ac4aeb54c9b79d6a7268e83225331a87"}, - {file = "cytoolz-0.12.0-cp38-cp38-win32.whl", hash = "sha256:e17516a102731bcf86446ce148127a8cd2887cf27ac388990cd63881115b4fdc"}, - {file = "cytoolz-0.12.0-cp38-cp38-win_amd64.whl", hash = "sha256:16748ea2b40c5978190d9acf9aa8fbacbfb440964c1035dc16cb14dbd557edb5"}, - {file = "cytoolz-0.12.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:02583c9fd4668f9e343ad4fc0e0f9651b1a0c16fe92bd208d07fd07de90fdc99"}, - {file = "cytoolz-0.12.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ee92dadb312e657b9b666a0385fafc6dad073d8a0fbef5cea09e21011554206a"}, - {file = "cytoolz-0.12.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:12d3d11ceb0fce8be5463f1e363366888c4b71e68fb2f5d536e4790b933cfd7e"}, - {file = "cytoolz-0.12.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f87472837c26b3bc91f9767c7adcfb935d0c097937c6744250672cd8c36019d"}, - {file = "cytoolz-0.12.0-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7244fb0d0b87499becc29051b82925e0daf3838e6c352e6b2d62e0f969b090af"}, - {file = "cytoolz-0.12.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:deb8550f487de756f1c24c56fa2c8451a53c0346868c13899c6b3a39b1f3d2c3"}, - {file = "cytoolz-0.12.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f959c1319b7e6ed3367b0f5a54a7b9c59063bd053c74278b27999db013e568df"}, - {file = "cytoolz-0.12.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:8f40897f6f341e03a945759fcdb2208dc7c64dc312386d3088c47b78fca2a3b2"}, - {file = "cytoolz-0.12.0-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:68336dfbe00efebbb1d02b8aa00b570dceec5d03fbd818c620aa246a8f5e5409"}, - {file = "cytoolz-0.12.0-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:886b3bf8fa99510836107097a5e5a2bd81631d3795dedc5684e25bef6538ac39"}, - {file = "cytoolz-0.12.0-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:0f94b4a3500345de5853d1896b7e770ce4a6577a431f43ff7d8f05f9051aeb7d"}, - {file = "cytoolz-0.12.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9dd7dbdfc24ed309af96be170c9030f43713950afab2b4bed1d372a91b37cbb0"}, - {file = "cytoolz-0.12.0-cp39-cp39-win32.whl", hash = "sha256:ed8771e36430fb0e4398030569bdab1419e4e74f7bcd51ea57239aa95441983a"}, - {file = "cytoolz-0.12.0-cp39-cp39-win_amd64.whl", hash = "sha256:a15157f4280f6e5d7c2d0892847a6c4dffbd2c5cefccaf1ac1f1c6c3d2cf9936"}, - {file = "cytoolz-0.12.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ae403cac13c2b9a2a92e56468ca1f822899b64d75d5be8ca802f1c14870d9133"}, - {file = "cytoolz-0.12.0-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c4ff74cb0e1a50de7f59e54a156dfd734b6593008f6f804d0726a73b89d170cd"}, - {file = "cytoolz-0.12.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f24e70d29223cde8ce3f5aefa7fd06bda12ae4386dcfbc726773e95b099cde0d"}, - {file = "cytoolz-0.12.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a79658fd264c5f82ea1b5cb45cf3899afabd9ec3e58c333bea042a2b4a94134"}, - {file = "cytoolz-0.12.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ef4a496a3175aec595ae24ad03e0bb2fe76401f8f79e7ef3d344533ba990ec0e"}, - {file = "cytoolz-0.12.0-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:bb0fc2ed8efa89f31ffa99246b1d434ff3db2b7b7e35147486172da849c8024a"}, - {file = "cytoolz-0.12.0-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:59263f296e043d4210dd34f91e6f11c4b20e6195976da23170d5ad056030258a"}, - {file = "cytoolz-0.12.0-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:274bc965cd93d6fa0bfe6f770cf6549bbe58d7b0a48dd6893d3f2c4b495d7f95"}, - {file = "cytoolz-0.12.0-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8feb4d056c22983723278160aff8a28c507b0e942768f4e856539a60e7bb874"}, - {file = "cytoolz-0.12.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:09f5652caeac85e3735bd5aaed49ebf4eeb7c0f15cb9b7c4a5fb6f45308dc2fd"}, - {file = "cytoolz-0.12.0-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8060be3b1fa24a4e3b165ce3c0ee6048f5e181289af57dbd9e3c4d4b8545dd78"}, - {file = "cytoolz-0.12.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e32292721f16516a574891a1af6760cba37a0f426a2b2cea6f9d560131a76ea"}, - {file = "cytoolz-0.12.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6aade6ebb4507330b0540af58dc2804415945611e90c70bb97360973e487c48a"}, - {file = "cytoolz-0.12.0-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f909760f89a54d860cf960b4cd828f9f6301fb104cd0de5b15b16822c9c4828b"}, - {file = "cytoolz-0.12.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:a8e69c9f3a32e0f9331cf6707a0f159c6dec0ff2a9f41507f6b2d06cd423f0d0"}, - {file = "cytoolz-0.12.0.tar.gz", hash = "sha256:c105b05f85e03fbcd60244375968e62e44fe798c15a3531c922d531018d22412"}, + {file = "cytoolz-0.12.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5c59bb4ca88e1c69931468bf21f91c8f64d8bf1999eb163b7a2df336f60c304a"}, + {file = "cytoolz-0.12.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:4d700e011156ff112966c6d77faaae125fcaf538f4cec2b9ce8957de82858f0f"}, + {file = "cytoolz-0.12.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23c3f57c48eb939d2986eba4aeaeedf930ebf94d58c91a42d4e0fc45ed5427dc"}, + {file = "cytoolz-0.12.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:25ff13c468c06da9ef26651dc389e7e8bb7af548f8c1dfb96305f57f18d398a8"}, + {file = "cytoolz-0.12.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a734511144309ea6e105406633affb74e303a3df07d8a3954f9b01946e27ecb1"}, + {file = "cytoolz-0.12.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:48bc2f30d1b2646d675bb8e7778ab59379bf9edc59fe06fb0e7f85ba1271bf44"}, + {file = "cytoolz-0.12.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30936ae8fa68b6a1ac8ad6c4bacb5a8a00d51bc6c89f9614a1557b0105d09f8a"}, + {file = "cytoolz-0.12.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:efd1b2da3ee577fcfa723a214f73186aef9674dd5b28242d90443c7a82722b0f"}, + {file = "cytoolz-0.12.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6805b007af3557ee6c20dab491b6e55a8177f5b6845d9e6c653374d540366ba7"}, + {file = "cytoolz-0.12.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:a6e63fc67b23830947b51e0a488992e3c904fce825ead565f3904dcf621d05f7"}, + {file = "cytoolz-0.12.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:9e324a94856d88ecf10f34c102d0ded67d7c3cf644153d77e34a29720ce6aa47"}, + {file = "cytoolz-0.12.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:02975e2b1e61e47e9afa311f4c1783d155136fad37c54a1cebfe991c5a0798a1"}, + {file = "cytoolz-0.12.1-cp310-cp310-win32.whl", hash = "sha256:b6569f6038133909cd658dbdcc6fc955f791dc47a7f5b55d2066f742253dcbfe"}, + {file = "cytoolz-0.12.1-cp310-cp310-win_amd64.whl", hash = "sha256:1be368623e46ad3c1ce807e7a436acb119c26001507b31f92ceb21b86e08c386"}, + {file = "cytoolz-0.12.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:849f461bffa1e7700ccfcb5186df29cd4cdcc9efdb7199cb8b5681dc37045d72"}, + {file = "cytoolz-0.12.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4284120c978fb7039901bf6e66832cb3e82ac1b2a107512e735bdb04fd5533ed"}, + {file = "cytoolz-0.12.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2ec296f01c29c809698eaf677211b6255691295c2b35caab2131e1e7eaadfbac"}, + {file = "cytoolz-0.12.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:37c53f456a1c84566a7d911eec57c4c6280b915ab0600e7671582793cc2769fe"}, + {file = "cytoolz-0.12.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1b6761791973b1e839b8309d5853b40eeb413368e31beaf5f2b6ed44c6fc7cf0"}, + {file = "cytoolz-0.12.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff478682e8ee6dbaa37201bb71bf4a6eee744006ab000e8f5cea05066fc7c845"}, + {file = "cytoolz-0.12.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:867bebe6be30ee36a836f9b835790762a74f46be8cc339ea57b68dcecdbc1133"}, + {file = "cytoolz-0.12.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:7e903df991f0957e2b271a37bb25d28e0d260c52825ae67507d15ca55a935961"}, + {file = "cytoolz-0.12.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:e797c4afb1b7962d3205b1959e1051f7e6bfbba29da44042a9efc2391f1feb38"}, + {file = "cytoolz-0.12.1-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:b8eceaa12b7f152b046b67cb053ec2b5b00f73593983de69bc5e63a8aca4a7a8"}, + {file = "cytoolz-0.12.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:b575393dd431b8e211de35bd593d831dac870172b16e2b7934f3566b8fc89377"}, + {file = "cytoolz-0.12.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:3032c0ba42dee5836d6b57a72a569b65df2c29e8ed266cb900d569003cf933a9"}, + {file = "cytoolz-0.12.1-cp311-cp311-win32.whl", hash = "sha256:c576bd63495150385b8d05eaae775387f378be2fd9805d3ffb4d17c87271fbad"}, + {file = "cytoolz-0.12.1-cp311-cp311-win_amd64.whl", hash = "sha256:421b224dc4157a0d66625acb5798cf50858cfa06a5232d39a8bd6cf1fa88aca3"}, + {file = "cytoolz-0.12.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:be5a454a95797343d0fb1ed02caecae73a023b1393c112951c84f17ec9f4076c"}, + {file = "cytoolz-0.12.1-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:061387aa39b9c1576c25d0c59142513c09e77a2a07bd5d6211a43c7a758b6f45"}, + {file = "cytoolz-0.12.1-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:14f4dbc3f0ec8f6fc68865489af21dcf042ff007d2737c27bfd73296f15db544"}, + {file = "cytoolz-0.12.1-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a816bff6bf424753e1ac2441902ceaf37ae6718b745a53f6aa1a60c617fb4f5f"}, + {file = "cytoolz-0.12.1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:633f19d1990b1cf9c67dce9c28bf8b5a18e42785d15548607a100e1236384d5d"}, + {file = "cytoolz-0.12.1-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6fa7009c843667868aa8bdb3d68e5ef3d6356dd418b17ed5ca4e1340e82483a5"}, + {file = "cytoolz-0.12.1-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:1c29dd04e282ddfd45b457e3551075beec9128aa9271245e58ce924bf6e055f8"}, + {file = "cytoolz-0.12.1-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:cd35c0be4c46274129dd1678bb911dd4e93d23968b26f4e39cd55bc7cb3b1bac"}, + {file = "cytoolz-0.12.1-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:5158ae6d8dd112d003f677039a3613ca7d2592bfe35d7accf23684edb961fc26"}, + {file = "cytoolz-0.12.1-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:7eb9e6fa8a82c3d2f519f7d3942898a97792e3895569e9501b9431048289b82f"}, + {file = "cytoolz-0.12.1-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:ac6784cc43aec51a86cf9058a2a343084f8cf46a9281bea5762bfa608127c53b"}, + {file = "cytoolz-0.12.1-cp36-cp36m-win32.whl", hash = "sha256:794cce219bbcb2f36ca220f27d5afd64eaa854e04901bd6f240be156a578b607"}, + {file = "cytoolz-0.12.1-cp36-cp36m-win_amd64.whl", hash = "sha256:695dd8231e4f1bfb9a2363775a6e4e56ad9d2058058f817203a49614f4bfe33b"}, + {file = "cytoolz-0.12.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:b1bd8017ef0da935a20106272c5f5ff6b1114add1ccb09cfed1ff7ec5cc01c6d"}, + {file = "cytoolz-0.12.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:56e1ebf6eb4438b8c45cbe7e7b22fc65df0c9efa97a70d3bf2f51e08b19756a5"}, + {file = "cytoolz-0.12.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:816c2038008ebf50d81171ddfae377f1af9e71d504ec609469dcb0906bfcf2ae"}, + {file = "cytoolz-0.12.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9bebe58f7a160db7838eb70990c704db4bdc2d58bd364290fd69be0587be8bac"}, + {file = "cytoolz-0.12.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a72440305f634604827f96810e4469877b89f5c060d6852267650a49b0e3768c"}, + {file = "cytoolz-0.12.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b46ebc463bb45f278a2b94e630061c26e10077cb68d4c93583d8f4199699a5ef"}, + {file = "cytoolz-0.12.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:e75e287787e6adafed9d8c3d3e7647c0b5eb460221f9f92d7dfe48b45ba77c0d"}, + {file = "cytoolz-0.12.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:03ab22c9aeb1535f8647d23b6520b0c3d41aaa18d04ef42b352dde1931f2e2b1"}, + {file = "cytoolz-0.12.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:b2ac288f27a2689d9e39f4cf4df5437a8eb038eaae515169586c77f9f8fb343a"}, + {file = "cytoolz-0.12.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:97a24c0d0806fcf9a6e75fc18aeb95adc37eb0baf6451f10a2de23ffd815329d"}, + {file = "cytoolz-0.12.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:42c9e5cd2a48a257b1f2402334b48122501f249b8dcf77082f569f2680f185eb"}, + {file = "cytoolz-0.12.1-cp37-cp37m-win32.whl", hash = "sha256:35fae4eaa0eaf9072a5fe2d244a79e65baae4e5ddbe9cc629c5037af800213a2"}, + {file = "cytoolz-0.12.1-cp37-cp37m-win_amd64.whl", hash = "sha256:5af43ca7026ead3dd08b261e4f7163cd2cf3ceaa74fa5a81f7b7ea5d445e41d6"}, + {file = "cytoolz-0.12.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:fcc378fa97f02fbcef090b3611305425d72bd1c0afdd13ef4a82dc67d40638b6"}, + {file = "cytoolz-0.12.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:cc3645cf6b9246cb8e179db2803e4f0d148211d2a2cf22d5c9b5219111cd91a0"}, + {file = "cytoolz-0.12.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b245b824f4705aef0e4a03fafef3ad6cb59ef43cc564cdbf683ee28dfc11ad5"}, + {file = "cytoolz-0.12.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c1964dcb5f250fd13fac210944b20810d61ef4094a17fbbe502ab7a7eaeeace7"}, + {file = "cytoolz-0.12.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f7194a22a4a24f3561cb6ad1cca9c9b2f2cf34cc8d4bce6d6a24c80960323fa8"}, + {file = "cytoolz-0.12.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c5434db53f3a94a37ad8aedb231901e001995d899af6ed1165f3d27fa04a6a"}, + {file = "cytoolz-0.12.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b30cd083ef8af4ba66d9fe5cc75c653ede3f2655f97a032db1a14cc8a006719c"}, + {file = "cytoolz-0.12.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:bef934bd3e024d512c6c0ad1c66eb173f61d9ccb4dbca8d75f727a5604f7c2f6"}, + {file = "cytoolz-0.12.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:37320669c364f7d370392af33cc1034b4563da66c22cd3261e3530f4d30dbe4b"}, + {file = "cytoolz-0.12.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:3cb95d23defb2322cddf70efb4af6dac191d95edaa343e8c1f58f1afa4f92ecd"}, + {file = "cytoolz-0.12.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ac5895d5f78dbd8646fe37266655ba4995f9cfec38a86595282fee69e41787da"}, + {file = "cytoolz-0.12.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:499af2aff04f65b4c23de1df08e1d1484a93b23ddaaa0163e44b5070b68356eb"}, + {file = "cytoolz-0.12.1-cp38-cp38-win32.whl", hash = "sha256:aa61e3da751a2dfe95aeca603f3ef510071a136ba9905f61ae6cb5d0696271ad"}, + {file = "cytoolz-0.12.1-cp38-cp38-win_amd64.whl", hash = "sha256:f5b43ce952a5a31441556c55f5f5f5a8e62c28581a0ff2a2c31c04ef992d73bd"}, + {file = "cytoolz-0.12.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:b8b8f88251b84b3877254cdd59c86a1dc6b2b39a03c6c9c067d344ef879562e0"}, + {file = "cytoolz-0.12.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:d72415b0110f7958dd3a5ee98a70166f47bd42ede85e3535669c794d06f57406"}, + {file = "cytoolz-0.12.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8101ab6de5aa0b26a2b5032bc488d430010c91863e701812d65836b03a12f61"}, + {file = "cytoolz-0.12.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2eed428b5e68c28abf2c71195e799850e040d67a27c05f7785319c611665b86a"}, + {file = "cytoolz-0.12.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59641eb1f41cb688b3cb2f98c9003c493a5024325f76b5c02333d08dd972127c"}, + {file = "cytoolz-0.12.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a48940ff0449ffcf690310bf9228bb57885f7571406ed2fe05c98e299987195"}, + {file = "cytoolz-0.12.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bae431a5985cdb2014be09d37206c288e0d063940cf9539e9769bd2ec26b220"}, + {file = "cytoolz-0.12.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:cb8b10405960a8e6801a4702af98ea640130ec6ecfc1208195762de3f5503ba9"}, + {file = "cytoolz-0.12.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:3c9a16a5b4f54d5c0a131f56b0ca65998a9a74958b5b36840c280edba4f8b907"}, + {file = "cytoolz-0.12.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:49911cb533c96d275e31e7eaeb0742ac3f7afe386a1d8c40937814d75039a0f7"}, + {file = "cytoolz-0.12.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:dbae37d48ef5a0ab90cfaf2b9312d96f034b1c828208a9cbe25377a1b19ba129"}, + {file = "cytoolz-0.12.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:c34e69be4429633fc614febe3127fa03aa418a1abb9252f29d9ba5b3394573a5"}, + {file = "cytoolz-0.12.1-cp39-cp39-win32.whl", hash = "sha256:0d474dacbafbdbb44c7de986bbf71ff56ae62df0d52ab3b6fa966784dc88737a"}, + {file = "cytoolz-0.12.1-cp39-cp39-win_amd64.whl", hash = "sha256:3d6d0b0075731832343eb88229cea4bf39e96f3fc7acbc449aadbdfec2842703"}, + {file = "cytoolz-0.12.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:8506d1863f30d26f577c4ed59d2cfd03d2f39569f9cbaa02a764a9de73d312d5"}, + {file = "cytoolz-0.12.1-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a1eae39656a1685e8b3f433eecfd72015ce5c1d7519e9c8f9402153c68331bb"}, + {file = "cytoolz-0.12.1-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4a0055943074c6c85b77fcc3f42f7c54010a3478daa2ed9d6243d0411c84a4d3"}, + {file = "cytoolz-0.12.1-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a8a7a325b8fe885a6dd91093616c703134f2dacbd869bc519970df3849c2a15b"}, + {file = "cytoolz-0.12.1-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:7b60caf0fa5f1b49f1062f7dc0f66c7b23e2736bad50fa8296bfb845995e3051"}, + {file = "cytoolz-0.12.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:980e7eb7205e01816a92f3290cfc80507957e64656b9271a0dfebb85fe3718c0"}, + {file = "cytoolz-0.12.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:06d38a40fe153f23cda0e823413fe9d9ebee89dd461827285316eff929fb121e"}, + {file = "cytoolz-0.12.1-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d540e9c34a61b53b6a374ea108794a48388178f7889d772e364cdbd6df37774c"}, + {file = "cytoolz-0.12.1-pp38-pypy38_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:117871f036926e42d3abcee587eafa9dc7383f1064ac53a806d33e76604de311"}, + {file = "cytoolz-0.12.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:31131b54a0c72efc0eb432dc66df546c6a54f2a7d396c9a34cf65ac1c26b1df8"}, + {file = "cytoolz-0.12.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4534cbfad73cdb1a6dad495530d4186d57d73089c01e9cb0558caab50e46cb3b"}, + {file = "cytoolz-0.12.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:50db41e875e36aec11881b8b12bc69c6f4836b7dd9e88a9e5bbf26c2cb3ba6cd"}, + {file = "cytoolz-0.12.1-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6716855f9c669c9e25a185d88e0f169839bf8553d16496796325acd114607c11"}, + {file = "cytoolz-0.12.1-pp39-pypy39_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f32452e833f0605b871626e6c61b71b0cba24233aad0e04accc3240497d4995"}, + {file = "cytoolz-0.12.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:ba74c239fc6cb6e962eabc420967c7565f3f363b776c89b3df5234caecf1f463"}, + {file = "cytoolz-0.12.1.tar.gz", hash = "sha256:fc33909397481c90de3cec831bfb88d97e220dc91939d996920202f184b4648e"}, ] darglint = [ {file = "darglint-1.8.1-py3-none-any.whl", hash = "sha256:5ae11c259c17b0701618a20c3da343a3eb98b3bc4b5a83d31cdd94f5ebdced8d"}, @@ -3463,12 +3516,12 @@ eth-utils = [ {file = "eth_utils-1.10.0-py3-none-any.whl", hash = "sha256:74240a8c6f652d085ed3c85f5f1654203d2f10ff9062f83b3bad0a12ff321c7a"}, ] exceptiongroup = [ - {file = "exceptiongroup-1.0.4-py3-none-any.whl", hash = "sha256:542adf9dea4055530d6e1279602fa5cb11dab2395fa650b8674eaec35fc4a828"}, - {file = "exceptiongroup-1.0.4.tar.gz", hash = "sha256:bd14967b79cd9bdb54d97323216f8fdf533e278df937aa2a90089e7d6e06e5ec"}, + {file = "exceptiongroup-1.1.0-py3-none-any.whl", hash = "sha256:327cbda3da756e2de031a3107b81ab7b3770a602c4d16ca618298c526f4bec1e"}, + {file = "exceptiongroup-1.1.0.tar.gz", hash = "sha256:bcb67d800a4497e1b404c2dd44fca47d3b7a5e5433dbab67f96c1a685cdfdf23"}, ] filelock = [ - {file = "filelock-3.8.0-py3-none-any.whl", hash = "sha256:617eb4e5eedc82fc5f47b6d61e4d11cb837c56cb4544e39081099fa17ad109d4"}, - {file = "filelock-3.8.0.tar.gz", hash = "sha256:55447caa666f2198c5b6b13a26d2084d26fa5b115c00d065664b2124680c4edc"}, + {file = "filelock-3.9.0-py3-none-any.whl", hash = "sha256:f58d535af89bb9ad5cd4df046f741f8553a418c01a7856bf0d173bbc9f6bd16d"}, + {file = "filelock-3.9.0.tar.gz", hash = "sha256:7b319f24340b51f55a2bf7a12ac0755a9b03e718311dac567a0f4f7fabd2f5de"}, ] flake8 = [ {file = "flake8-5.0.4-py2.py3-none-any.whl", hash = "sha256:7a1cf6b73744f5806ab95e526f6f0d8c01c66d7bbe349562d22dfca20610b248"}, @@ -3491,8 +3544,8 @@ flake8-isort = [ {file = "flake8_isort-5.0.0-py3-none-any.whl", hash = "sha256:c73f9cbd1bf209887f602a27b827164ccfeba1676801b2aa23cb49051a1be79c"}, ] flatbuffers = [ - {file = "flatbuffers-22.11.23-py2.py3-none-any.whl", hash = "sha256:13043a5deba77e55b73064750195d2c5b494754d52b7d4ad01bc52cad5c3c9f2"}, - {file = "flatbuffers-22.11.23.tar.gz", hash = "sha256:2a82b85eea7f6712ab41077086dae1a89382862fe64414c8ebdf976123d1a095"}, + {file = "flatbuffers-23.1.4-py2.py3-none-any.whl", hash = "sha256:8bf47bcaef0deac76ae95586032e867e1d6d8fd429d00ca8d3d01e43fd3d1f8f"}, + {file = "flatbuffers-23.1.4.tar.gz", hash = "sha256:04d2141ea38866600beda17ffebf739b23f4f500cc22606076cc83079155106d"}, ] frozenlist = [ {file = "frozenlist-1.3.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff8bf625fe85e119553b5383ba0fb6aa3d0ec2ae980295aaefa552374926b3f4"}, @@ -3571,7 +3624,7 @@ frozenlist = [ {file = "frozenlist-1.3.3.tar.gz", hash = "sha256:58bcc55721e8a90b88332d6cd441261ebb22342e238296bb330968952fbb3a6a"}, ] future = [ - {file = "future-0.18.2.tar.gz", hash = "sha256:b1bead90b70cf6ec3f0710ae53a525360fa360d306a86583adc6bf83a4db537d"}, + {file = "future-0.18.3.tar.gz", hash = "sha256:34a17436ed1e96697a86f9de3d15a3b0be01d8bc8de9c1dffd59fb8234ed5307"}, ] gast = [ {file = "gast-0.4.0-py3-none-any.whl", hash = "sha256:b7adcdd5adbebf1adf17378da5ba3f543684dbec47b1cda1f3997e573cd542c4"}, @@ -3590,16 +3643,16 @@ gitpython = [ {file = "GitPython-3.1.14.tar.gz", hash = "sha256:be27633e7509e58391f10207cd32b2a6cf5b908f92d9cd30da2e514e1137af61"}, ] google-api-core = [ - {file = "google-api-core-2.10.2.tar.gz", hash = "sha256:10c06f7739fe57781f87523375e8e1a3a4674bf6392cd6131a3222182b971320"}, - {file = "google_api_core-2.10.2-py3-none-any.whl", hash = "sha256:34f24bd1d5f72a8c4519773d99ca6bf080a6c4e041b4e9f024fe230191dda62e"}, + {file = "google-api-core-2.11.0.tar.gz", hash = "sha256:4b9bb5d5a380a0befa0573b302651b8a9a89262c1730e37bf423cec511804c22"}, + {file = "google_api_core-2.11.0-py3-none-any.whl", hash = "sha256:ce222e27b0de0d7bc63eb043b956996d6dccab14cc3b690aaea91c9cc99dc16e"}, ] google-api-python-client = [ - {file = "google-api-python-client-2.66.0.tar.gz", hash = "sha256:4cfaf0205aa7c538c8fb1772368be3d049dfed7886adf48597e9a766e9828a6e"}, - {file = "google_api_python_client-2.66.0-py2.py3-none-any.whl", hash = "sha256:3b45110b638232959f75418231dfb487228102a4a91a7a3e64147684befaebee"}, + {file = "google-api-python-client-2.72.0.tar.gz", hash = "sha256:0ddf4a44256d4516635578b93a9ac0dfba7d8bd357cd896e68ef9c549a840b2f"}, + {file = "google_api_python_client-2.72.0-py2.py3-none-any.whl", hash = "sha256:271b49fc9ce6c133620169e6ca4a92682b92c288444e6e00a51f78072b42169c"}, ] google-auth = [ - {file = "google-auth-2.14.1.tar.gz", hash = "sha256:ccaa901f31ad5cbb562615eb8b664b3dd0bf5404a67618e642307f00613eda4d"}, - {file = "google_auth-2.14.1-py2.py3-none-any.whl", hash = "sha256:f5d8701633bebc12e0deea4df8abd8aff31c28b355360597f7f2ee60f2e4d016"}, + {file = "google-auth-2.16.0.tar.gz", hash = "sha256:ed7057a101af1146f0554a769930ac9de506aeca4fd5af6543ebe791851a9fbd"}, + {file = "google_auth-2.16.0-py2.py3-none-any.whl", hash = "sha256:5045648c821fb72384cdc0e82cc326df195f113a33049d9b62b74589243d2acc"}, ] google-auth-httplib2 = [ {file = "google-auth-httplib2-0.1.0.tar.gz", hash = "sha256:a07c39fd632becacd3f07718dfd6021bf396978f03ad3ce4321d060015cc30ac"}, @@ -3615,8 +3668,8 @@ google-pasta = [ {file = "google_pasta-0.2.0-py3-none-any.whl", hash = "sha256:b32482794a366b5366a32c92a9a9201b107821889935a02b3e51f6b432ea84ed"}, ] googleapis-common-protos = [ - {file = "googleapis-common-protos-1.57.0.tar.gz", hash = "sha256:27a849d6205838fb6cc3c1c21cb9800707a661bb21c6ce7fb13e99eb1f8a0c46"}, - {file = "googleapis_common_protos-1.57.0-py2.py3-none-any.whl", hash = "sha256:a9f4a1d7f6d9809657b7f1316a1aa527f6664891531bcfcc13b6696e685f443c"}, + {file = "googleapis-common-protos-1.58.0.tar.gz", hash = "sha256:c727251ec025947d545184ba17e3578840fc3a24a0516a020479edab660457df"}, + {file = "googleapis_common_protos-1.58.0-py2.py3-none-any.whl", hash = "sha256:ca3befcd4580dab6ad49356b46bf165bb68ff4b32389f028f1abd7c10ab9519a"}, ] graphviz = [ {file = "graphviz-0.20.1-py3-none-any.whl", hash = "sha256:587c58a223b51611c0cf461132da386edd896a029524ca61a1462b880bf97977"}, @@ -3767,20 +3820,20 @@ idna = [ {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] imageio = [ - {file = "imageio-2.22.4-py3-none-any.whl", hash = "sha256:bb173f8af27e4921f59539c4d45068fcedb892e58261fce8253f31c9a0ff9ccf"}, - {file = "imageio-2.22.4.tar.gz", hash = "sha256:0fae027addf02bc89c73a56cc157ad84557f8b8b84aa19b4cb706fefca2d88ff"}, + {file = "imageio-2.24.0-py3-none-any.whl", hash = "sha256:c4ccd0293a1aeb566c7fa04260d51897be064b8fb287a77548ce42050ec06d7a"}, + {file = "imageio-2.24.0.tar.gz", hash = "sha256:f240f8229f4f329a1546281194b52da5d6694141a524668fed3f81b0d07782fa"}, ] importlib-metadata = [ {file = "importlib_metadata-4.13.0-py3-none-any.whl", hash = "sha256:8a8a81bcf996e74fee46f0d16bd3eaa382a7eb20fd82445c3ad11f4090334116"}, {file = "importlib_metadata-4.13.0.tar.gz", hash = "sha256:dd0173e8f150d6815e098fd354f6414b0f079af4644ddfe90c71e2fc6174346d"}, ] importlib-resources = [ - {file = "importlib_resources-5.10.0-py3-none-any.whl", hash = "sha256:ee17ec648f85480d523596ce49eae8ead87d5631ae1551f913c0100b5edd3437"}, - {file = "importlib_resources-5.10.0.tar.gz", hash = "sha256:c01b1b94210d9849f286b86bb51bcea7cd56dde0600d8db721d7b81330711668"}, + {file = "importlib_resources-5.10.2-py3-none-any.whl", hash = "sha256:7d543798b0beca10b6a01ac7cafda9f822c54db9e8376a6bf57e0cbd74d486b6"}, + {file = "importlib_resources-5.10.2.tar.gz", hash = "sha256:e4a96c8cc0339647ff9a5e0550d9f276fc5a01ffa276012b58ec108cfd7b8484"}, ] iniconfig = [ - {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, - {file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, + {file = "iniconfig-2.0.0-py3-none-any.whl", hash = "sha256:b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374"}, + {file = "iniconfig-2.0.0.tar.gz", hash = "sha256:2d91e135bf72d31a410b17c16da610a82cb55f6b0477d1a902134b24a455b8b3"}, ] ipfshttpclient = [ {file = "ipfshttpclient-0.8.0a2-py3-none-any.whl", hash = "sha256:ce6bac0e3963c4ced74d7eb6978125362bb05bbe219088ca48f369ce14d3cc39"}, @@ -3795,8 +3848,8 @@ jinja2 = [ {file = "Jinja2-3.1.2.tar.gz", hash = "sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852"}, ] jsonschema = [ - {file = "jsonschema-4.17.1-py3-none-any.whl", hash = "sha256:410ef23dcdbca4eaedc08b850079179883c2ed09378bd1f760d4af4aacfa28d7"}, - {file = "jsonschema-4.17.1.tar.gz", hash = "sha256:05b2d22c83640cde0b7e0aa329ca7754fbd98ea66ad8ae24aa61328dfe057fa3"}, + {file = "jsonschema-4.17.3-py3-none-any.whl", hash = "sha256:a870ad254da1a8ca84b6a2905cac29d265f805acc57af304784962a2aa6508f6"}, + {file = "jsonschema-4.17.3.tar.gz", hash = "sha256:0f864437ab8b6076ba6707453ef8f98a6a0d512a80e93f8abdb676f737ecb60d"}, ] keras = [ {file = "keras-2.10.0-py2.py3-none-any.whl", hash = "sha256:26a6e2c2522e7468ddea22710a99b3290493768fc08a39e75d1173a0e3452fdf"}, @@ -3876,37 +3929,52 @@ kiwisolver = [ {file = "kiwisolver-1.4.4.tar.gz", hash = "sha256:d41997519fcba4a1e46eb4a2fe31bc12f0ff957b2b81bac28db24744f333e955"}, ] lazy-object-proxy = [ - {file = "lazy-object-proxy-1.8.0.tar.gz", hash = "sha256:c219a00245af0f6fa4e95901ed28044544f50152840c5b6a3e7b2568db34d156"}, - {file = "lazy_object_proxy-1.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:4fd031589121ad46e293629b39604031d354043bb5cdf83da4e93c2d7f3389fe"}, - {file = "lazy_object_proxy-1.8.0-cp310-cp310-win32.whl", hash = "sha256:b70d6e7a332eb0217e7872a73926ad4fdc14f846e85ad6749ad111084e76df25"}, - {file = "lazy_object_proxy-1.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:eb329f8d8145379bf5dbe722182410fe8863d186e51bf034d2075eb8d85ee25b"}, - {file = "lazy_object_proxy-1.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4e2d9f764f1befd8bdc97673261b8bb888764dfdbd7a4d8f55e4fbcabb8c3fb7"}, - {file = "lazy_object_proxy-1.8.0-cp311-cp311-win32.whl", hash = "sha256:e20bfa6db17a39c706d24f82df8352488d2943a3b7ce7d4c22579cb89ca8896e"}, - {file = "lazy_object_proxy-1.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:14010b49a2f56ec4943b6cf925f597b534ee2fe1f0738c84b3bce0c1a11ff10d"}, - {file = "lazy_object_proxy-1.8.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:6850e4aeca6d0df35bb06e05c8b934ff7c533734eb51d0ceb2d63696f1e6030c"}, - {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win32.whl", hash = "sha256:5b51d6f3bfeb289dfd4e95de2ecd464cd51982fe6f00e2be1d0bf94864d58acd"}, - {file = "lazy_object_proxy-1.8.0-cp37-cp37m-win_amd64.whl", hash = "sha256:6f593f26c470a379cf7f5bc6db6b5f1722353e7bf937b8d0d0b3fba911998858"}, - {file = "lazy_object_proxy-1.8.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:0c1c7c0433154bb7c54185714c6929acc0ba04ee1b167314a779b9025517eada"}, - {file = "lazy_object_proxy-1.8.0-cp38-cp38-win32.whl", hash = "sha256:d176f392dbbdaacccf15919c77f526edf11a34aece58b55ab58539807b85436f"}, - {file = "lazy_object_proxy-1.8.0-cp38-cp38-win_amd64.whl", hash = "sha256:afcaa24e48bb23b3be31e329deb3f1858f1f1df86aea3d70cb5c8578bfe5261c"}, - {file = "lazy_object_proxy-1.8.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:71d9ae8a82203511a6f60ca5a1b9f8ad201cac0fc75038b2dc5fa519589c9288"}, - {file = "lazy_object_proxy-1.8.0-cp39-cp39-win32.whl", hash = "sha256:8f6ce2118a90efa7f62dd38c7dbfffd42f468b180287b748626293bf12ed468f"}, - {file = "lazy_object_proxy-1.8.0-cp39-cp39-win_amd64.whl", hash = "sha256:eac3a9a5ef13b332c059772fd40b4b1c3d45a3a2b05e33a361dee48e54a4dad0"}, - {file = "lazy_object_proxy-1.8.0-pp37-pypy37_pp73-any.whl", hash = "sha256:ae032743794fba4d171b5b67310d69176287b5bf82a21f588282406a79498891"}, - {file = "lazy_object_proxy-1.8.0-pp38-pypy38_pp73-any.whl", hash = "sha256:7e1561626c49cb394268edd00501b289053a652ed762c58e1081224c8d881cec"}, - {file = "lazy_object_proxy-1.8.0-pp39-pypy39_pp73-any.whl", hash = "sha256:ce58b2b3734c73e68f0e30e4e725264d4d6be95818ec0a0be4bb6bf9a7e79aa8"}, + {file = "lazy-object-proxy-1.9.0.tar.gz", hash = "sha256:659fb5809fa4629b8a1ac5106f669cfc7bef26fbb389dda53b3e010d1ac4ebae"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b40387277b0ed2d0602b8293b94d7257e17d1479e257b4de114ea11a8cb7f2d7"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8c6cfb338b133fbdbc5cfaa10fe3c6aeea827db80c978dbd13bc9dd8526b7d4"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:721532711daa7db0d8b779b0bb0318fa87af1c10d7fe5e52ef30f8eff254d0cd"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:66a3de4a3ec06cd8af3f61b8e1ec67614fbb7c995d02fa224813cb7afefee701"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1aa3de4088c89a1b69f8ec0dcc169aa725b0ff017899ac568fe44ddc1396df46"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-win32.whl", hash = "sha256:f0705c376533ed2a9e5e97aacdbfe04cecd71e0aa84c7c0595d02ef93b6e4455"}, + {file = "lazy_object_proxy-1.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:ea806fd4c37bf7e7ad82537b0757999264d5f70c45468447bb2b91afdbe73a6e"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:946d27deaff6cf8452ed0dba83ba38839a87f4f7a9732e8f9fd4107b21e6ff07"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79a31b086e7e68b24b99b23d57723ef7e2c6d81ed21007b6281ebcd1688acb0a"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f699ac1c768270c9e384e4cbd268d6e67aebcfae6cd623b4d7c3bfde5a35db59"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:bfb38f9ffb53b942f2b5954e0f610f1e721ccebe9cce9025a38c8ccf4a5183a4"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:189bbd5d41ae7a498397287c408617fe5c48633e7755287b21d741f7db2706a9"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-win32.whl", hash = "sha256:81fc4d08b062b535d95c9ea70dbe8a335c45c04029878e62d744bdced5141586"}, + {file = "lazy_object_proxy-1.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:f2457189d8257dd41ae9b434ba33298aec198e30adf2dcdaaa3a28b9994f6adb"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:d9e25ef10a39e8afe59a5c348a4dbf29b4868ab76269f81ce1674494e2565a6e"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cbf9b082426036e19c6924a9ce90c740a9861e2bdc27a4834fd0a910742ac1e8"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5fa4a61ce2438267163891961cfd5e32ec97a2c444e5b842d574251ade27d2"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:8fa02eaab317b1e9e03f69aab1f91e120e7899b392c4fc19807a8278a07a97e8"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:e7c21c95cae3c05c14aafffe2865bbd5e377cfc1348c4f7751d9dc9a48ca4bda"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win32.whl", hash = "sha256:f12ad7126ae0c98d601a7ee504c1122bcef553d1d5e0c3bfa77b16b3968d2734"}, + {file = "lazy_object_proxy-1.9.0-cp37-cp37m-win_amd64.whl", hash = "sha256:edd20c5a55acb67c7ed471fa2b5fb66cb17f61430b7a6b9c3b4a1e40293b1671"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:2d0daa332786cf3bb49e10dc6a17a52f6a8f9601b4cf5c295a4f85854d61de63"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cd077f3d04a58e83d04b20e334f678c2b0ff9879b9375ed107d5d07ff160171"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:660c94ea760b3ce47d1855a30984c78327500493d396eac4dfd8bd82041b22be"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:212774e4dfa851e74d393a2370871e174d7ff0ebc980907723bb67d25c8a7c30"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:f0117049dd1d5635bbff65444496c90e0baa48ea405125c088e93d9cf4525b11"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-win32.whl", hash = "sha256:0a891e4e41b54fd5b8313b96399f8b0e173bbbfc03c7631f01efbe29bb0bcf82"}, + {file = "lazy_object_proxy-1.9.0-cp38-cp38-win_amd64.whl", hash = "sha256:9990d8e71b9f6488e91ad25f322898c136b008d87bf852ff65391b004da5e17b"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:9e7551208b2aded9c1447453ee366f1c4070602b3d932ace044715d89666899b"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f83ac4d83ef0ab017683d715ed356e30dd48a93746309c8f3517e1287523ef4"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7322c3d6f1766d4ef1e51a465f47955f1e8123caee67dd641e67d539a534d006"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:18b78ec83edbbeb69efdc0e9c1cb41a3b1b1ed11ddd8ded602464c3fc6020494"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:09763491ce220c0299688940f8dc2c5d05fd1f45af1e42e636b2e8b2303e4382"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-win32.whl", hash = "sha256:9090d8e53235aa280fc9239a86ae3ea8ac58eff66a705fa6aa2ec4968b95c821"}, + {file = "lazy_object_proxy-1.9.0-cp39-cp39-win_amd64.whl", hash = "sha256:db1c1722726f47e10e0b5fdbf15ac3b8adb58c091d12b3ab713965795036985f"}, ] libclang = [ - {file = "libclang-14.0.6-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:8791cf3c3b087c373a6d61e9199da7a541da922c9ddcfed1122090586b996d6e"}, - {file = "libclang-14.0.6-py2.py3-none-macosx_11_0_arm64.whl", hash = "sha256:7b06fc76bd1e67c8b04b5719bf2ac5d6a323b289b245dfa9e468561d99538188"}, - {file = "libclang-14.0.6-py2.py3-none-manylinux1_x86_64.whl", hash = "sha256:e429853939423f276a25140b0b702442d7da9a09e001c05e48df888336947614"}, - {file = "libclang-14.0.6-py2.py3-none-manylinux2010_x86_64.whl", hash = "sha256:206d2789e4450a37d054e63b70451a6fc1873466397443fa13de2b3d4adb2796"}, - {file = "libclang-14.0.6-py2.py3-none-manylinux2014_aarch64.whl", hash = "sha256:e2add1703129b2abe066fb1890afa880870a89fd6ab4ec5d2a7a8dc8d271677e"}, - {file = "libclang-14.0.6-py2.py3-none-manylinux2014_armv7l.whl", hash = "sha256:5dd3c6fca1b007d308a4114afa8e4e9d32f32b2572520701d45fcc626ac5cd6c"}, - {file = "libclang-14.0.6-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:cfb0e892ebb5dff6bd498ab5778adb8581f26a00fd8347b3c76c989fe2fd04f7"}, - {file = "libclang-14.0.6-py2.py3-none-win_amd64.whl", hash = "sha256:ea03c12675151837660cdd5dce65bd89320896ac3421efef43a36678f113ce95"}, - {file = "libclang-14.0.6-py2.py3-none-win_arm64.whl", hash = "sha256:2e4303e04517fcd11173cb2e51a7070eed71e16ef45d4e26a82c5e881cac3d27"}, - {file = "libclang-14.0.6.tar.gz", hash = "sha256:9052a8284d8846984f6fa826b1d7460a66d3b23a486d782633b42b6e3b418789"}, + {file = "libclang-15.0.6.1-py2.py3-none-macosx_10_9_x86_64.whl", hash = "sha256:8621795e07b87e17fc7aac9f071bc7fe6b52ed6110c0a96a9975d8113c8c2527"}, + {file = "libclang-15.0.6.1-py2.py3-none-manylinux2010_x86_64.whl", hash = "sha256:69b01a23ab543908a661532595daa23cf88bd96d80e41f58ba0eaa6a378fe0d8"}, + {file = "libclang-15.0.6.1-py2.py3-none-manylinux2014_aarch64.whl", hash = "sha256:4a5188184b937132c198ee9de9a8a2316d5fdd1a825398d5ad1a8f5e06f9b40e"}, + {file = "libclang-15.0.6.1-py2.py3-none-manylinux2014_armv7l.whl", hash = "sha256:f7ffa02ac5e586cfffde039dcccc439d88d0feac7d77bf9426d9ba7543d16545"}, + {file = "libclang-15.0.6.1-py2.py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:aaebb6aa1db73bac3a0ac41e57ef78743079eb68728adbf7e80ee917ae171529"}, + {file = "libclang-15.0.6.1-py2.py3-none-win_amd64.whl", hash = "sha256:85afb47630d2070e74b886040ceea1846097ca53cc88d0f1d7751d0f49220028"}, + {file = "libclang-15.0.6.1-py2.py3-none-win_arm64.whl", hash = "sha256:687d8549c110c700fece58dd87727421d0710fdd111aa7eecb01faf8e3f50d4e"}, + {file = "libclang-15.0.6.1.tar.gz", hash = "sha256:a1a8fe038af2962c787c5bac81bfa4b82bb8e279e61e70cc934c10f6e20c73ec"}, ] liccheck = [ {file = "liccheck-0.7.2-py2.py3-none-any.whl", hash = "sha256:a50d212b943d119f61d822080e0b7bcefbae4c3b7cc7b54b47b465c191bfc8aa"}, @@ -4056,8 +4124,8 @@ mkdocs = [ {file = "mkdocs-1.4.2.tar.gz", hash = "sha256:8947af423a6d0facf41ea1195b8e1e8c85ad94ac95ae307fe11232e0424b11c5"}, ] mkdocs-material = [ - {file = "mkdocs_material-8.5.10-py3-none-any.whl", hash = "sha256:51760fa4c9ee3ca0b3a661ec9f9817ec312961bb84ff19e5b523fdc5256e1d6c"}, - {file = "mkdocs_material-8.5.10.tar.gz", hash = "sha256:7623608f746c6d9ff68a8ef01f13eddf32fa2cae5e15badb251f26d1196bc8f1"}, + {file = "mkdocs_material-9.0.5-py3-none-any.whl", hash = "sha256:53194bf8ae7dfb527fef2892a6ee291d3efc7b57d010b04dbb818b4ee88074a5"}, + {file = "mkdocs_material-9.0.5.tar.gz", hash = "sha256:bbfed71788223b4c548a6e637cb7a9ee5b6ad6593c6d5b04e57c9c4d2c39d76b"}, ] mkdocs-material-extensions = [ {file = "mkdocs_material_extensions-1.1.1-py3-none-any.whl", hash = "sha256:e41d9f38e4798b6617ad98ca8f7f1157b1e4385ac1459ca1e4ea219b556df945"}, @@ -4069,65 +4137,80 @@ multiaddr = [ {file = "multiaddr-0.0.9.tar.gz", hash = "sha256:30b2695189edc3d5b90f1c303abb8f02d963a3a4edf2e7178b975eb417ab0ecf"}, ] multidict = [ - {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b9e95a740109c6047602f4db4da9949e6c5945cefbad34a1299775ddc9a62e2"}, - {file = "multidict-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ac0e27844758d7177989ce406acc6a83c16ed4524ebc363c1f748cba184d89d3"}, - {file = "multidict-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:041b81a5f6b38244b34dc18c7b6aba91f9cdaf854d9a39e5ff0b58e2b5773b9c"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5fdda29a3c7e76a064f2477c9aab1ba96fd94e02e386f1e665bca1807fc5386f"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3368bf2398b0e0fcbf46d85795adc4c259299fec50c1416d0f77c0a843a3eed9"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4f052ee022928d34fe1f4d2bc743f32609fb79ed9c49a1710a5ad6b2198db20"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:225383a6603c086e6cef0f2f05564acb4f4d5f019a4e3e983f572b8530f70c88"}, - {file = "multidict-6.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:50bd442726e288e884f7be9071016c15a8742eb689a593a0cac49ea093eef0a7"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:47e6a7e923e9cada7c139531feac59448f1f47727a79076c0b1ee80274cd8eee"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:0556a1d4ea2d949efe5fd76a09b4a82e3a4a30700553a6725535098d8d9fb672"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:626fe10ac87851f4cffecee161fc6f8f9853f0f6f1035b59337a51d29ff3b4f9"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:8064b7c6f0af936a741ea1efd18690bacfbae4078c0c385d7c3f611d11f0cf87"}, - {file = "multidict-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:2d36e929d7f6a16d4eb11b250719c39560dd70545356365b494249e2186bc389"}, - {file = "multidict-6.0.2-cp310-cp310-win32.whl", hash = "sha256:fcb91630817aa8b9bc4a74023e4198480587269c272c58b3279875ed7235c293"}, - {file = "multidict-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:8cbf0132f3de7cc6c6ce00147cc78e6439ea736cee6bca4f068bcf892b0fd658"}, - {file = "multidict-6.0.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:05f6949d6169878a03e607a21e3b862eaf8e356590e8bdae4227eedadacf6e51"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e2c2e459f7050aeb7c1b1276763364884595d47000c1cddb51764c0d8976e608"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d0509e469d48940147e1235d994cd849a8f8195e0bca65f8f5439c56e17872a3"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:514fe2b8d750d6cdb4712346a2c5084a80220821a3e91f3f71eec11cf8d28fd4"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:19adcfc2a7197cdc3987044e3f415168fc5dc1f720c932eb1ef4f71a2067e08b"}, - {file = "multidict-6.0.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b9d153e7f1f9ba0b23ad1568b3b9e17301e23b042c23870f9ee0522dc5cc79e8"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:aef9cc3d9c7d63d924adac329c33835e0243b5052a6dfcbf7732a921c6e918ba"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:4571f1beddff25f3e925eea34268422622963cd8dc395bb8778eb28418248e43"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:d48b8ee1d4068561ce8033d2c344cf5232cb29ee1a0206a7b828c79cbc5982b8"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:45183c96ddf61bf96d2684d9fbaf6f3564d86b34cb125761f9a0ef9e36c1d55b"}, - {file = "multidict-6.0.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:75bdf08716edde767b09e76829db8c1e5ca9d8bb0a8d4bd94ae1eafe3dac5e15"}, - {file = "multidict-6.0.2-cp37-cp37m-win32.whl", hash = "sha256:a45e1135cb07086833ce969555df39149680e5471c04dfd6a915abd2fc3f6dbc"}, - {file = "multidict-6.0.2-cp37-cp37m-win_amd64.whl", hash = "sha256:6f3cdef8a247d1eafa649085812f8a310e728bdf3900ff6c434eafb2d443b23a"}, - {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:0327292e745a880459ef71be14e709aaea2f783f3537588fb4ed09b6c01bca60"}, - {file = "multidict-6.0.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:e875b6086e325bab7e680e4316d667fc0e5e174bb5611eb16b3ea121c8951b86"}, - {file = "multidict-6.0.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:feea820722e69451743a3d56ad74948b68bf456984d63c1a92e8347b7b88452d"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9cc57c68cb9139c7cd6fc39f211b02198e69fb90ce4bc4a094cf5fe0d20fd8b0"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:497988d6b6ec6ed6f87030ec03280b696ca47dbf0648045e4e1d28b80346560d"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:89171b2c769e03a953d5969b2f272efa931426355b6c0cb508022976a17fd376"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:684133b1e1fe91eda8fa7447f137c9490a064c6b7f392aa857bba83a28cfb693"}, - {file = "multidict-6.0.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fd9fc9c4849a07f3635ccffa895d57abce554b467d611a5009ba4f39b78a8849"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e07c8e79d6e6fd37b42f3250dba122053fddb319e84b55dd3a8d6446e1a7ee49"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4070613ea2227da2bfb2c35a6041e4371b0af6b0be57f424fe2318b42a748516"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:47fbeedbf94bed6547d3aa632075d804867a352d86688c04e606971595460227"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:5774d9218d77befa7b70d836004a768fb9aa4fdb53c97498f4d8d3f67bb9cfa9"}, - {file = "multidict-6.0.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:2957489cba47c2539a8eb7ab32ff49101439ccf78eab724c828c1a54ff3ff98d"}, - {file = "multidict-6.0.2-cp38-cp38-win32.whl", hash = "sha256:e5b20e9599ba74391ca0cfbd7b328fcc20976823ba19bc573983a25b32e92b57"}, - {file = "multidict-6.0.2-cp38-cp38-win_amd64.whl", hash = "sha256:8004dca28e15b86d1b1372515f32eb6f814bdf6f00952699bdeb541691091f96"}, - {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:2e4a0785b84fb59e43c18a015ffc575ba93f7d1dbd272b4cdad9f5134b8a006c"}, - {file = "multidict-6.0.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6701bf8a5d03a43375909ac91b6980aea74b0f5402fbe9428fc3f6edf5d9677e"}, - {file = "multidict-6.0.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a007b1638e148c3cfb6bf0bdc4f82776cef0ac487191d093cdc316905e504071"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:07a017cfa00c9890011628eab2503bee5872f27144936a52eaab449be5eaf032"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c207fff63adcdf5a485969131dc70e4b194327666b7e8a87a97fbc4fd80a53b2"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:373ba9d1d061c76462d74e7de1c0c8e267e9791ee8cfefcf6b0b2495762c370c"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bfba7c6d5d7c9099ba21f84662b037a0ffd4a5e6b26ac07d19e423e6fdf965a9"}, - {file = "multidict-6.0.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:19d9bad105dfb34eb539c97b132057a4e709919ec4dd883ece5838bcbf262b80"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:de989b195c3d636ba000ee4281cd03bb1234635b124bf4cd89eeee9ca8fcb09d"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7c40b7bbece294ae3a87c1bc2abff0ff9beef41d14188cda94ada7bcea99b0fb"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:d16cce709ebfadc91278a1c005e3c17dd5f71f5098bfae1035149785ea6e9c68"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:a2c34a93e1d2aa35fbf1485e5010337c72c6791407d03aa5f4eed920343dd360"}, - {file = "multidict-6.0.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:feba80698173761cddd814fa22e88b0661e98cb810f9f986c54aa34d281e4937"}, - {file = "multidict-6.0.2-cp39-cp39-win32.whl", hash = "sha256:23b616fdc3c74c9fe01d76ce0d1ce872d2d396d8fa8e4899398ad64fb5aa214a"}, - {file = "multidict-6.0.2-cp39-cp39-win_amd64.whl", hash = "sha256:4bae31803d708f6f15fd98be6a6ac0b6958fcf68fda3c77a048a4f9073704aae"}, - {file = "multidict-6.0.2.tar.gz", hash = "sha256:5ff3bd75f38e4c43f1f470f2df7a4d430b821c4ce22be384e1459cb57d6bb013"}, + {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:0b1a97283e0c85772d613878028fec909f003993e1007eafa715b24b377cb9b8"}, + {file = "multidict-6.0.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:eeb6dcc05e911516ae3d1f207d4b0520d07f54484c49dfc294d6e7d63b734171"}, + {file = "multidict-6.0.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6d635d5209b82a3492508cf5b365f3446afb65ae7ebd755e70e18f287b0adf7"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c048099e4c9e9d615545e2001d3d8a4380bd403e1a0578734e0d31703d1b0c0b"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ea20853c6dbbb53ed34cb4d080382169b6f4554d394015f1bef35e881bf83547"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:16d232d4e5396c2efbbf4f6d4df89bfa905eb0d4dc5b3549d872ab898451f569"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:36c63aaa167f6c6b04ef2c85704e93af16c11d20de1d133e39de6a0e84582a93"}, + {file = "multidict-6.0.4-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:64bdf1086b6043bf519869678f5f2757f473dee970d7abf6da91ec00acb9cb98"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:43644e38f42e3af682690876cff722d301ac585c5b9e1eacc013b7a3f7b696a0"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7582a1d1030e15422262de9f58711774e02fa80df0d1578995c76214f6954988"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:ddff9c4e225a63a5afab9dd15590432c22e8057e1a9a13d28ed128ecf047bbdc"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:ee2a1ece51b9b9e7752e742cfb661d2a29e7bcdba2d27e66e28a99f1890e4fa0"}, + {file = "multidict-6.0.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a2e4369eb3d47d2034032a26c7a80fcb21a2cb22e1173d761a162f11e562caa5"}, + {file = "multidict-6.0.4-cp310-cp310-win32.whl", hash = "sha256:574b7eae1ab267e5f8285f0fe881f17efe4b98c39a40858247720935b893bba8"}, + {file = "multidict-6.0.4-cp310-cp310-win_amd64.whl", hash = "sha256:4dcbb0906e38440fa3e325df2359ac6cb043df8e58c965bb45f4e406ecb162cc"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0dfad7a5a1e39c53ed00d2dd0c2e36aed4650936dc18fd9a1826a5ae1cad6f03"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64da238a09d6039e3bd39bb3aee9c21a5e34f28bfa5aa22518581f910ff94af3"}, + {file = "multidict-6.0.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:ff959bee35038c4624250473988b24f846cbeb2c6639de3602c073f10410ceba"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:01a3a55bd90018c9c080fbb0b9f4891db37d148a0a18722b42f94694f8b6d4c9"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c5cb09abb18c1ea940fb99360ea0396f34d46566f157122c92dfa069d3e0e982"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:666daae833559deb2d609afa4490b85830ab0dfca811a98b70a205621a6109fe"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11bdf3f5e1518b24530b8241529d2050014c884cf18b6fc69c0c2b30ca248710"}, + {file = "multidict-6.0.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7d18748f2d30f94f498e852c67d61261c643b349b9d2a581131725595c45ec6c"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:458f37be2d9e4c95e2d8866a851663cbc76e865b78395090786f6cd9b3bbf4f4"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:b1a2eeedcead3a41694130495593a559a668f382eee0727352b9a41e1c45759a"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:7d6ae9d593ef8641544d6263c7fa6408cc90370c8cb2bbb65f8d43e5b0351d9c"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:5979b5632c3e3534e42ca6ff856bb24b2e3071b37861c2c727ce220d80eee9ed"}, + {file = "multidict-6.0.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dcfe792765fab89c365123c81046ad4103fcabbc4f56d1c1997e6715e8015461"}, + {file = "multidict-6.0.4-cp311-cp311-win32.whl", hash = "sha256:3601a3cece3819534b11d4efc1eb76047488fddd0c85a3948099d5da4d504636"}, + {file = "multidict-6.0.4-cp311-cp311-win_amd64.whl", hash = "sha256:81a4f0b34bd92df3da93315c6a59034df95866014ac08535fc819f043bfd51f0"}, + {file = "multidict-6.0.4-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:67040058f37a2a51ed8ea8f6b0e6ee5bd78ca67f169ce6122f3e2ec80dfe9b78"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:853888594621e6604c978ce2a0444a1e6e70c8d253ab65ba11657659dcc9100f"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:39ff62e7d0f26c248b15e364517a72932a611a9b75f35b45be078d81bdb86603"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af048912e045a2dc732847d33821a9d84ba553f5c5f028adbd364dd4765092ac"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e8b901e607795ec06c9e42530788c45ac21ef3aaa11dbd0c69de543bfb79a9"}, + {file = "multidict-6.0.4-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62501642008a8b9871ddfccbf83e4222cf8ac0d5aeedf73da36153ef2ec222d2"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:99b76c052e9f1bc0721f7541e5e8c05db3941eb9ebe7b8553c625ef88d6eefde"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:509eac6cf09c794aa27bcacfd4d62c885cce62bef7b2c3e8b2e49d365b5003fe"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:21a12c4eb6ddc9952c415f24eef97e3e55ba3af61f67c7bc388dcdec1404a067"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:5cad9430ab3e2e4fa4a2ef4450f548768400a2ac635841bc2a56a2052cdbeb87"}, + {file = "multidict-6.0.4-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ab55edc2e84460694295f401215f4a58597f8f7c9466faec545093045476327d"}, + {file = "multidict-6.0.4-cp37-cp37m-win32.whl", hash = "sha256:5a4dcf02b908c3b8b17a45fb0f15b695bf117a67b76b7ad18b73cf8e92608775"}, + {file = "multidict-6.0.4-cp37-cp37m-win_amd64.whl", hash = "sha256:6ed5f161328b7df384d71b07317f4d8656434e34591f20552c7bcef27b0ab88e"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5fc1b16f586f049820c5c5b17bb4ee7583092fa0d1c4e28b5239181ff9532e0c"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:1502e24330eb681bdaa3eb70d6358e818e8e8f908a22a1851dfd4e15bc2f8161"}, + {file = "multidict-6.0.4-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:b692f419760c0e65d060959df05f2a531945af31fda0c8a3b3195d4efd06de11"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45e1ecb0379bfaab5eef059f50115b54571acfbe422a14f668fc8c27ba410e7e"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ddd3915998d93fbcd2566ddf9cf62cdb35c9e093075f862935573d265cf8f65d"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:59d43b61c59d82f2effb39a93c48b845efe23a3852d201ed2d24ba830d0b4cf2"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8e1d0c705233c5dd0c5e6460fbad7827d5d36f310a0fadfd45cc3029762258"}, + {file = "multidict-6.0.4-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d6aa0418fcc838522256761b3415822626f866758ee0bc6632c9486b179d0b52"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:6748717bb10339c4760c1e63da040f5f29f5ed6e59d76daee30305894069a660"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4d1a3d7ef5e96b1c9e92f973e43aa5e5b96c659c9bc3124acbbd81b0b9c8a951"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:4372381634485bec7e46718edc71528024fcdc6f835baefe517b34a33c731d60"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:fc35cb4676846ef752816d5be2193a1e8367b4c1397b74a565a9d0389c433a1d"}, + {file = "multidict-6.0.4-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:4b9d9e4e2b37daddb5c23ea33a3417901fa7c7b3dee2d855f63ee67a0b21e5b1"}, + {file = "multidict-6.0.4-cp38-cp38-win32.whl", hash = "sha256:e41b7e2b59679edfa309e8db64fdf22399eec4b0b24694e1b2104fb789207779"}, + {file = "multidict-6.0.4-cp38-cp38-win_amd64.whl", hash = "sha256:d6c254ba6e45d8e72739281ebc46ea5eb5f101234f3ce171f0e9f5cc86991480"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:16ab77bbeb596e14212e7bab8429f24c1579234a3a462105cda4a66904998664"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bc779e9e6f7fda81b3f9aa58e3a6091d49ad528b11ed19f6621408806204ad35"}, + {file = "multidict-6.0.4-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4ceef517eca3e03c1cceb22030a3e39cb399ac86bff4e426d4fc6ae49052cc60"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:281af09f488903fde97923c7744bb001a9b23b039a909460d0f14edc7bf59706"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:52f2dffc8acaba9a2f27174c41c9e57f60b907bb9f096b36b1a1f3be71c6284d"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b41156839806aecb3641f3208c0dafd3ac7775b9c4c422d82ee2a45c34ba81ca"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5e3fc56f88cc98ef8139255cf8cd63eb2c586531e43310ff859d6bb3a6b51f1"}, + {file = "multidict-6.0.4-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8316a77808c501004802f9beebde51c9f857054a0c871bd6da8280e718444449"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:f70b98cd94886b49d91170ef23ec5c0e8ebb6f242d734ed7ed677b24d50c82cf"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:bf6774e60d67a9efe02b3616fee22441d86fab4c6d335f9d2051d19d90a40063"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:e69924bfcdda39b722ef4d9aa762b2dd38e4632b3641b1d9a57ca9cd18f2f83a"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:6b181d8c23da913d4ff585afd1155a0e1194c0b50c54fcfe286f70cdaf2b7176"}, + {file = "multidict-6.0.4-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:52509b5be062d9eafc8170e53026fbc54cf3b32759a23d07fd935fb04fc22d95"}, + {file = "multidict-6.0.4-cp39-cp39-win32.whl", hash = "sha256:27c523fbfbdfd19c6867af7346332b62b586eed663887392cff78d614f9ec313"}, + {file = "multidict-6.0.4-cp39-cp39-win_amd64.whl", hash = "sha256:33029f5734336aa0d4c0384525da0387ef89148dc7191aae00ca5fb23d7aafc2"}, + {file = "multidict-6.0.4.tar.gz", hash = "sha256:3666906492efb76453c0e7b97f2cf459b0682e7402c0489a95484965dbc1da49"}, ] mypy = [ {file = "mypy-0.982-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:5085e6f442003fa915aeb0a46d4da58128da69325d8213b4b35cc7054090aed5"}, @@ -4164,42 +4247,42 @@ netaddr = [ {file = "netaddr-0.8.0.tar.gz", hash = "sha256:d6cc57c7a07b1d9d2e917aa8b36ae8ce61c35ba3fcd1b83ca31c5a0ee2b5a243"}, ] networkx = [ - {file = "networkx-2.8.8-py3-none-any.whl", hash = "sha256:e435dfa75b1d7195c7b8378c3859f0445cd88c6b0375c181ed66823a9ceb7524"}, - {file = "networkx-2.8.8.tar.gz", hash = "sha256:230d388117af870fce5647a3c52401fcf753e94720e6ea6b4197a5355648885e"}, + {file = "networkx-3.0-py3-none-any.whl", hash = "sha256:58058d66b1818043527244fab9d41a51fcd7dcc271748015f3c181b8a90c8e2e"}, + {file = "networkx-3.0.tar.gz", hash = "sha256:9a9992345353618ae98339c2b63d8201c381c2944f38a2ab49cb45a4c667e412"}, ] nr-util = [ {file = "nr.util-0.8.12-py3-none-any.whl", hash = "sha256:91da02ac9795eb8e015372275c1efe54bac9051231ee9b0e7e6f96b0b4e7d2bb"}, {file = "nr.util-0.8.12.tar.gz", hash = "sha256:a4549c2033d99d2f0379b3f3d233fd2a8ade286bbf0b3ad0cc7cea16022214f4"}, ] numpy = [ - {file = "numpy-1.23.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9c88793f78fca17da0145455f0d7826bcb9f37da4764af27ac945488116efe63"}, - {file = "numpy-1.23.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e9f4c4e51567b616be64e05d517c79a8a22f3606499941d97bb76f2ca59f982d"}, - {file = "numpy-1.23.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7903ba8ab592b82014713c491f6c5d3a1cde5b4a3bf116404e08f5b52f6daf43"}, - {file = "numpy-1.23.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5e05b1c973a9f858c74367553e236f287e749465f773328c8ef31abe18f691e1"}, - {file = "numpy-1.23.5-cp310-cp310-win32.whl", hash = "sha256:522e26bbf6377e4d76403826ed689c295b0b238f46c28a7251ab94716da0b280"}, - {file = "numpy-1.23.5-cp310-cp310-win_amd64.whl", hash = "sha256:dbee87b469018961d1ad79b1a5d50c0ae850000b639bcb1b694e9981083243b6"}, - {file = "numpy-1.23.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ce571367b6dfe60af04e04a1834ca2dc5f46004ac1cc756fb95319f64c095a96"}, - {file = "numpy-1.23.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:56e454c7833e94ec9769fa0f86e6ff8e42ee38ce0ce1fa4cbb747ea7e06d56aa"}, - {file = "numpy-1.23.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5039f55555e1eab31124a5768898c9e22c25a65c1e0037f4d7c495a45778c9f2"}, - {file = "numpy-1.23.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:58f545efd1108e647604a1b5aa809591ccd2540f468a880bedb97247e72db387"}, - {file = "numpy-1.23.5-cp311-cp311-win32.whl", hash = "sha256:b2a9ab7c279c91974f756c84c365a669a887efa287365a8e2c418f8b3ba73fb0"}, - {file = "numpy-1.23.5-cp311-cp311-win_amd64.whl", hash = "sha256:0cbe9848fad08baf71de1a39e12d1b6310f1d5b2d0ea4de051058e6e1076852d"}, - {file = "numpy-1.23.5-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:f063b69b090c9d918f9df0a12116029e274daf0181df392839661c4c7ec9018a"}, - {file = "numpy-1.23.5-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0aaee12d8883552fadfc41e96b4c82ee7d794949e2a7c3b3a7201e968c7ecab9"}, - {file = "numpy-1.23.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:92c8c1e89a1f5028a4c6d9e3ccbe311b6ba53694811269b992c0b224269e2398"}, - {file = "numpy-1.23.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d208a0f8729f3fb790ed18a003f3a57895b989b40ea4dce4717e9cf4af62c6bb"}, - {file = "numpy-1.23.5-cp38-cp38-win32.whl", hash = "sha256:06005a2ef6014e9956c09ba07654f9837d9e26696a0470e42beedadb78c11b07"}, - {file = "numpy-1.23.5-cp38-cp38-win_amd64.whl", hash = "sha256:ca51fcfcc5f9354c45f400059e88bc09215fb71a48d3768fb80e357f3b457e1e"}, - {file = "numpy-1.23.5-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:8969bfd28e85c81f3f94eb4a66bc2cf1dbdc5c18efc320af34bffc54d6b1e38f"}, - {file = "numpy-1.23.5-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:a7ac231a08bb37f852849bbb387a20a57574a97cfc7b6cabb488a4fc8be176de"}, - {file = "numpy-1.23.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf837dc63ba5c06dc8797c398db1e223a466c7ece27a1f7b5232ba3466aafe3d"}, - {file = "numpy-1.23.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:33161613d2269025873025b33e879825ec7b1d831317e68f4f2f0f84ed14c719"}, - {file = "numpy-1.23.5-cp39-cp39-win32.whl", hash = "sha256:af1da88f6bc3d2338ebbf0e22fe487821ea4d8e89053e25fa59d1d79786e7481"}, - {file = "numpy-1.23.5-cp39-cp39-win_amd64.whl", hash = "sha256:09b7847f7e83ca37c6e627682f145856de331049013853f344f37b0c9690e3df"}, - {file = "numpy-1.23.5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:abdde9f795cf292fb9651ed48185503a2ff29be87770c3b8e2a14b0cd7aa16f8"}, - {file = "numpy-1.23.5-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9a909a8bae284d46bbfdefbdd4a262ba19d3bc9921b1e76126b1d21c3c34135"}, - {file = "numpy-1.23.5-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:01dd17cbb340bf0fc23981e52e1d18a9d4050792e8fb8363cecbf066a84b827d"}, - {file = "numpy-1.23.5.tar.gz", hash = "sha256:1b1766d6f397c18153d40015ddfc79ddb715cabadc04d2d228d4e5a8bc4ded1a"}, + {file = "numpy-1.24.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:179a7ef0889ab769cc03573b6217f54c8bd8e16cef80aad369e1e8185f994cd7"}, + {file = "numpy-1.24.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b09804ff570b907da323b3d762e74432fb07955701b17b08ff1b5ebaa8cfe6a9"}, + {file = "numpy-1.24.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f1b739841821968798947d3afcefd386fa56da0caf97722a5de53e07c4ccedc7"}, + {file = "numpy-1.24.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0e3463e6ac25313462e04aea3fb8a0a30fb906d5d300f58b3bc2c23da6a15398"}, + {file = "numpy-1.24.1-cp310-cp310-win32.whl", hash = "sha256:b31da69ed0c18be8b77bfce48d234e55d040793cebb25398e2a7d84199fbc7e2"}, + {file = "numpy-1.24.1-cp310-cp310-win_amd64.whl", hash = "sha256:b07b40f5fb4fa034120a5796288f24c1fe0e0580bbfff99897ba6267af42def2"}, + {file = "numpy-1.24.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:7094891dcf79ccc6bc2a1f30428fa5edb1e6fb955411ffff3401fb4ea93780a8"}, + {file = "numpy-1.24.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:28e418681372520c992805bb723e29d69d6b7aa411065f48216d8329d02ba032"}, + {file = "numpy-1.24.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e274f0f6c7efd0d577744f52032fdd24344f11c5ae668fe8d01aac0422611df1"}, + {file = "numpy-1.24.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0044f7d944ee882400890f9ae955220d29b33d809a038923d88e4e01d652acd9"}, + {file = "numpy-1.24.1-cp311-cp311-win32.whl", hash = "sha256:442feb5e5bada8408e8fcd43f3360b78683ff12a4444670a7d9e9824c1817d36"}, + {file = "numpy-1.24.1-cp311-cp311-win_amd64.whl", hash = "sha256:de92efa737875329b052982e37bd4371d52cabf469f83e7b8be9bb7752d67e51"}, + {file = "numpy-1.24.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:b162ac10ca38850510caf8ea33f89edcb7b0bb0dfa5592d59909419986b72407"}, + {file = "numpy-1.24.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:26089487086f2648944f17adaa1a97ca6aee57f513ba5f1c0b7ebdabbe2b9954"}, + {file = "numpy-1.24.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:caf65a396c0d1f9809596be2e444e3bd4190d86d5c1ce21f5fc4be60a3bc5b36"}, + {file = "numpy-1.24.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0677a52f5d896e84414761531947c7a330d1adc07c3a4372262f25d84af7bf7"}, + {file = "numpy-1.24.1-cp38-cp38-win32.whl", hash = "sha256:dae46bed2cb79a58d6496ff6d8da1e3b95ba09afeca2e277628171ca99b99db1"}, + {file = "numpy-1.24.1-cp38-cp38-win_amd64.whl", hash = "sha256:6ec0c021cd9fe732e5bab6401adea5a409214ca5592cd92a114f7067febcba0c"}, + {file = "numpy-1.24.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:28bc9750ae1f75264ee0f10561709b1462d450a4808cd97c013046073ae64ab6"}, + {file = "numpy-1.24.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:84e789a085aabef2f36c0515f45e459f02f570c4b4c4c108ac1179c34d475ed7"}, + {file = "numpy-1.24.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8e669fbdcdd1e945691079c2cae335f3e3a56554e06bbd45d7609a6cf568c700"}, + {file = "numpy-1.24.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ef85cf1f693c88c1fd229ccd1055570cb41cdf4875873b7728b6301f12cd05bf"}, + {file = "numpy-1.24.1-cp39-cp39-win32.whl", hash = "sha256:87a118968fba001b248aac90e502c0b13606721b1343cdaddbc6e552e8dfb56f"}, + {file = "numpy-1.24.1-cp39-cp39-win_amd64.whl", hash = "sha256:ddc7ab52b322eb1e40521eb422c4e0a20716c271a306860979d450decbb51b8e"}, + {file = "numpy-1.24.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed5fb71d79e771ec930566fae9c02626b939e37271ec285e9efaf1b5d4370e7d"}, + {file = "numpy-1.24.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad2925567f43643f51255220424c23d204024ed428afc5aad0f86f3ffc080086"}, + {file = "numpy-1.24.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cfa1161c6ac8f92dea03d625c2d0c05e084668f4a06568b77a25a89111621566"}, + {file = "numpy-1.24.1.tar.gz", hash = "sha256:2386da9a471cc00a1f47845e27d916d5ec5346ae9696e01a8a34760858fe9dd2"}, ] oauthlib = [ {file = "oauthlib-3.2.2-py3-none-any.whl", hash = "sha256:8139f29aac13e25d502680e9e19963e83f16838d48a0d71c287fe40e7067fbca"}, @@ -4226,87 +4309,89 @@ parsimonious = [ {file = "parsimonious-0.8.1.tar.gz", hash = "sha256:3add338892d580e0cb3b1a39e4a1b427ff9f687858fdd61097053742391a9f6b"}, ] pathspec = [ - {file = "pathspec-0.10.2-py3-none-any.whl", hash = "sha256:88c2606f2c1e818b978540f73ecc908e13999c6c3a383daf3705652ae79807a5"}, - {file = "pathspec-0.10.2.tar.gz", hash = "sha256:8f6bf73e5758fd365ef5d58ce09ac7c27d2833a8d7da51712eac6e27e35141b0"}, + {file = "pathspec-0.10.3-py3-none-any.whl", hash = "sha256:3c95343af8b756205e2aba76e843ba9520a24dd84f68c22b9f93251507509dd6"}, + {file = "pathspec-0.10.3.tar.gz", hash = "sha256:56200de4077d9d0791465aa9095a01d421861e405b5096955051deefd697d6f6"}, ] pbr = [ - {file = "pbr-5.11.0-py2.py3-none-any.whl", hash = "sha256:db2317ff07c84c4c63648c9064a79fe9d9f5c7ce85a9099d4b6258b3db83225a"}, - {file = "pbr-5.11.0.tar.gz", hash = "sha256:b97bc6695b2aff02144133c2e7399d5885223d42b7912ffaec2ca3898e673bfe"}, + {file = "pbr-5.11.1-py2.py3-none-any.whl", hash = "sha256:567f09558bae2b3ab53cb3c1e2e33e726ff3338e7bae3db5dc954b3a44eef12b"}, + {file = "pbr-5.11.1.tar.gz", hash = "sha256:aefc51675b0b533d56bb5fd1c8c6c0522fe31896679882e1c4c63d5e4a0fccb3"}, ] pexpect = [ {file = "pexpect-4.8.0-py2.py3-none-any.whl", hash = "sha256:0b48a55dcb3c05f3329815901ea4fc1537514d6ba867a152b581d69ae3710937"}, {file = "pexpect-4.8.0.tar.gz", hash = "sha256:fc65a43959d153d0114afe13997d439c22823a27cefceb5ff35c2178c6784c0c"}, ] pillow = [ - {file = "Pillow-9.3.0-1-cp37-cp37m-win32.whl", hash = "sha256:e6ea6b856a74d560d9326c0f5895ef8050126acfdc7ca08ad703eb0081e82b74"}, - {file = "Pillow-9.3.0-1-cp37-cp37m-win_amd64.whl", hash = "sha256:32a44128c4bdca7f31de5be641187367fe2a450ad83b833ef78910397db491aa"}, - {file = "Pillow-9.3.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:0b7257127d646ff8676ec8a15520013a698d1fdc48bc2a79ba4e53df792526f2"}, - {file = "Pillow-9.3.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b90f7616ea170e92820775ed47e136208e04c967271c9ef615b6fbd08d9af0e3"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68943d632f1f9e3dce98908e873b3a090f6cba1cbb1b892a9e8d97c938871fbe"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:be55f8457cd1eac957af0c3f5ece7bc3f033f89b114ef30f710882717670b2a8"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5d77adcd56a42d00cc1be30843d3426aa4e660cab4a61021dc84467123f7a00c"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:829f97c8e258593b9daa80638aee3789b7df9da5cf1336035016d76f03b8860c"}, - {file = "Pillow-9.3.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:801ec82e4188e935c7f5e22e006d01611d6b41661bba9fe45b60e7ac1a8f84de"}, - {file = "Pillow-9.3.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:871b72c3643e516db4ecf20efe735deb27fe30ca17800e661d769faab45a18d7"}, - {file = "Pillow-9.3.0-cp310-cp310-win32.whl", hash = "sha256:655a83b0058ba47c7c52e4e2df5ecf484c1b0b0349805896dd350cbc416bdd91"}, - {file = "Pillow-9.3.0-cp310-cp310-win_amd64.whl", hash = "sha256:9f47eabcd2ded7698106b05c2c338672d16a6f2a485e74481f524e2a23c2794b"}, - {file = "Pillow-9.3.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:57751894f6618fd4308ed8e0c36c333e2f5469744c34729a27532b3db106ee20"}, - {file = "Pillow-9.3.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:7db8b751ad307d7cf238f02101e8e36a128a6cb199326e867d1398067381bff4"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3033fbe1feb1b59394615a1cafaee85e49d01b51d54de0cbf6aa8e64182518a1"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22b012ea2d065fd163ca096f4e37e47cd8b59cf4b0fd47bfca6abb93df70b34c"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a65733d103311331875c1dca05cb4606997fd33d6acfed695b1232ba1df193"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:502526a2cbfa431d9fc2a079bdd9061a2397b842bb6bc4239bb176da00993812"}, - {file = "Pillow-9.3.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:90fb88843d3902fe7c9586d439d1e8c05258f41da473952aa8b328d8b907498c"}, - {file = "Pillow-9.3.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:89dca0ce00a2b49024df6325925555d406b14aa3efc2f752dbb5940c52c56b11"}, - {file = "Pillow-9.3.0-cp311-cp311-win32.whl", hash = "sha256:3168434d303babf495d4ba58fc22d6604f6e2afb97adc6a423e917dab828939c"}, - {file = "Pillow-9.3.0-cp311-cp311-win_amd64.whl", hash = "sha256:18498994b29e1cf86d505edcb7edbe814d133d2232d256db8c7a8ceb34d18cef"}, - {file = "Pillow-9.3.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:772a91fc0e03eaf922c63badeca75e91baa80fe2f5f87bdaed4280662aad25c9"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:afa4107d1b306cdf8953edde0534562607fe8811b6c4d9a486298ad31de733b2"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4012d06c846dc2b80651b120e2cdd787b013deb39c09f407727ba90015c684f"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:77ec3e7be99629898c9a6d24a09de089fa5356ee408cdffffe62d67bb75fdd72"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:6c738585d7a9961d8c2821a1eb3dcb978d14e238be3d70f0a706f7fa9316946b"}, - {file = "Pillow-9.3.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:828989c45c245518065a110434246c44a56a8b2b2f6347d1409c787e6e4651ee"}, - {file = "Pillow-9.3.0-cp37-cp37m-win32.whl", hash = "sha256:82409ffe29d70fd733ff3c1025a602abb3e67405d41b9403b00b01debc4c9a29"}, - {file = "Pillow-9.3.0-cp37-cp37m-win_amd64.whl", hash = "sha256:41e0051336807468be450d52b8edd12ac60bebaa97fe10c8b660f116e50b30e4"}, - {file = "Pillow-9.3.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:b03ae6f1a1878233ac620c98f3459f79fd77c7e3c2b20d460284e1fb370557d4"}, - {file = "Pillow-9.3.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:4390e9ce199fc1951fcfa65795f239a8a4944117b5935a9317fb320e7767b40f"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40e1ce476a7804b0fb74bcfa80b0a2206ea6a882938eaba917f7a0f004b42502"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a0a06a052c5f37b4ed81c613a455a81f9a3a69429b4fd7bb913c3fa98abefc20"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:03150abd92771742d4a8cd6f2fa6246d847dcd2e332a18d0c15cc75bf6703040"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:15c42fb9dea42465dfd902fb0ecf584b8848ceb28b41ee2b58f866411be33f07"}, - {file = "Pillow-9.3.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:51e0e543a33ed92db9f5ef69a0356e0b1a7a6b6a71b80df99f1d181ae5875636"}, - {file = "Pillow-9.3.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:3dd6caf940756101205dffc5367babf288a30043d35f80936f9bfb37f8355b32"}, - {file = "Pillow-9.3.0-cp38-cp38-win32.whl", hash = "sha256:f1ff2ee69f10f13a9596480335f406dd1f70c3650349e2be67ca3139280cade0"}, - {file = "Pillow-9.3.0-cp38-cp38-win_amd64.whl", hash = "sha256:276a5ca930c913f714e372b2591a22c4bd3b81a418c0f6635ba832daec1cbcfc"}, - {file = "Pillow-9.3.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:73bd195e43f3fadecfc50c682f5055ec32ee2c933243cafbfdec69ab1aa87cad"}, - {file = "Pillow-9.3.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:1c7c8ae3864846fc95f4611c78129301e203aaa2af813b703c55d10cc1628535"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e0918e03aa0c72ea56edbb00d4d664294815aa11291a11504a377ea018330d3"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b0915e734b33a474d76c28e07292f196cdf2a590a0d25bcc06e64e545f2d146c"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:af0372acb5d3598f36ec0914deed2a63f6bcdb7b606da04dc19a88d31bf0c05b"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:ad58d27a5b0262c0c19b47d54c5802db9b34d38bbf886665b626aff83c74bacd"}, - {file = "Pillow-9.3.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:97aabc5c50312afa5e0a2b07c17d4ac5e865b250986f8afe2b02d772567a380c"}, - {file = "Pillow-9.3.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:9aaa107275d8527e9d6e7670b64aabaaa36e5b6bd71a1015ddd21da0d4e06448"}, - {file = "Pillow-9.3.0-cp39-cp39-win32.whl", hash = "sha256:bac18ab8d2d1e6b4ce25e3424f709aceef668347db8637c2296bcf41acb7cf48"}, - {file = "Pillow-9.3.0-cp39-cp39-win_amd64.whl", hash = "sha256:b472b5ea442148d1c3e2209f20f1e0bb0eb556538690fa70b5e1f79fa0ba8dc2"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-macosx_10_10_x86_64.whl", hash = "sha256:ab388aaa3f6ce52ac1cb8e122c4bd46657c15905904b3120a6248b5b8b0bc228"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:dbb8e7f2abee51cef77673be97760abff1674ed32847ce04b4af90f610144c7b"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bca31dd6014cb8b0b2db1e46081b0ca7d936f856da3b39744aef499db5d84d02"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:c7025dce65566eb6e89f56c9509d4f628fddcedb131d9465cacd3d8bac337e7e"}, - {file = "Pillow-9.3.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:ebf2029c1f464c59b8bdbe5143c79fa2045a581ac53679733d3a91d400ff9efb"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b59430236b8e58840a0dfb4099a0e8717ffb779c952426a69ae435ca1f57210c"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:12ce4932caf2ddf3e41d17fc9c02d67126935a44b86df6a206cf0d7161548627"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae5331c23ce118c53b172fa64a4c037eb83c9165aba3a7ba9ddd3ec9fa64a699"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:0b07fffc13f474264c336298d1b4ce01d9c5a011415b79d4ee5527bb69ae6f65"}, - {file = "Pillow-9.3.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:073adb2ae23431d3b9bcbcff3fe698b62ed47211d0716b067385538a1b0f28b8"}, - {file = "Pillow-9.3.0.tar.gz", hash = "sha256:c935a22a557a560108d780f9a0fc426dd7459940dc54faa49d83249c8d3e760f"}, + {file = "Pillow-9.4.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:2968c58feca624bb6c8502f9564dd187d0e1389964898f5e9e1fbc8533169157"}, + {file = "Pillow-9.4.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c5c1362c14aee73f50143d74389b2c158707b4abce2cb055b7ad37ce60738d47"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bd752c5ff1b4a870b7661234694f24b1d2b9076b8bf337321a814c612665f343"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9a3049a10261d7f2b6514d35bbb7a4dfc3ece4c4de14ef5876c4b7a23a0e566d"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16a8df99701f9095bea8a6c4b3197da105df6f74e6176c5b410bc2df2fd29a57"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:94cdff45173b1919350601f82d61365e792895e3c3a3443cf99819e6fbf717a5"}, + {file = "Pillow-9.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:ed3e4b4e1e6de75fdc16d3259098de7c6571b1a6cc863b1a49e7d3d53e036070"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:d5b2f8a31bd43e0f18172d8ac82347c8f37ef3e0b414431157718aa234991b28"}, + {file = "Pillow-9.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:09b89ddc95c248ee788328528e6a2996e09eaccddeeb82a5356e92645733be35"}, + {file = "Pillow-9.4.0-cp310-cp310-win32.whl", hash = "sha256:f09598b416ba39a8f489c124447b007fe865f786a89dbfa48bb5cf395693132a"}, + {file = "Pillow-9.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:f6e78171be3fb7941f9910ea15b4b14ec27725865a73c15277bc39f5ca4f8391"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:3fa1284762aacca6dc97474ee9c16f83990b8eeb6697f2ba17140d54b453e133"}, + {file = "Pillow-9.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:eaef5d2de3c7e9b21f1e762f289d17b726c2239a42b11e25446abf82b26ac132"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a4dfdae195335abb4e89cc9762b2edc524f3c6e80d647a9a81bf81e17e3fb6f0"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6abfb51a82e919e3933eb137e17c4ae9c0475a25508ea88993bb59faf82f3b35"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:451f10ef963918e65b8869e17d67db5e2f4ab40e716ee6ce7129b0cde2876eab"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:6663977496d616b618b6cfa43ec86e479ee62b942e1da76a2c3daa1c75933ef4"}, + {file = "Pillow-9.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:60e7da3a3ad1812c128750fc1bc14a7ceeb8d29f77e0a2356a8fb2aa8925287d"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:19005a8e58b7c1796bc0167862b1f54a64d3b44ee5d48152b06bb861458bc0f8"}, + {file = "Pillow-9.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:f715c32e774a60a337b2bb8ad9839b4abf75b267a0f18806f6f4f5f1688c4b5a"}, + {file = "Pillow-9.4.0-cp311-cp311-win32.whl", hash = "sha256:b222090c455d6d1a64e6b7bb5f4035c4dff479e22455c9eaa1bdd4c75b52c80c"}, + {file = "Pillow-9.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:ba6612b6548220ff5e9df85261bddc811a057b0b465a1226b39bfb8550616aee"}, + {file = "Pillow-9.4.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5f532a2ad4d174eb73494e7397988e22bf427f91acc8e6ebf5bb10597b49c493"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dd5a9c3091a0f414a963d427f920368e2b6a4c2f7527fdd82cde8ef0bc7a327"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef21af928e807f10bf4141cad4746eee692a0dd3ff56cfb25fce076ec3cc8abe"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:847b114580c5cc9ebaf216dd8c8dbc6b00a3b7ab0131e173d7120e6deade1f57"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:653d7fb2df65efefbcbf81ef5fe5e5be931f1ee4332c2893ca638c9b11a409c4"}, + {file = "Pillow-9.4.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:46f39cab8bbf4a384ba7cb0bc8bae7b7062b6a11cfac1ca4bc144dea90d4a9f5"}, + {file = "Pillow-9.4.0-cp37-cp37m-win32.whl", hash = "sha256:7ac7594397698f77bce84382929747130765f66406dc2cd8b4ab4da68ade4c6e"}, + {file = "Pillow-9.4.0-cp37-cp37m-win_amd64.whl", hash = "sha256:46c259e87199041583658457372a183636ae8cd56dbf3f0755e0f376a7f9d0e6"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:0e51f608da093e5d9038c592b5b575cadc12fd748af1479b5e858045fff955a9"}, + {file = "Pillow-9.4.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:765cb54c0b8724a7c12c55146ae4647e0274a839fb6de7bcba841e04298e1011"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:519e14e2c49fcf7616d6d2cfc5c70adae95682ae20f0395e9280db85e8d6c4df"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d197df5489004db87d90b918033edbeee0bd6df3848a204bca3ff0a903bef837"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0845adc64fe9886db00f5ab68c4a8cd933ab749a87747555cec1c95acea64b0b"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:e1339790c083c5a4de48f688b4841f18df839eb3c9584a770cbd818b33e26d5d"}, + {file = "Pillow-9.4.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:a96e6e23f2b79433390273eaf8cc94fec9c6370842e577ab10dabdcc7ea0a66b"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:7cfc287da09f9d2a7ec146ee4d72d6ea1342e770d975e49a8621bf54eaa8f30f"}, + {file = "Pillow-9.4.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:d7081c084ceb58278dd3cf81f836bc818978c0ccc770cbbb202125ddabec6628"}, + {file = "Pillow-9.4.0-cp38-cp38-win32.whl", hash = "sha256:df41112ccce5d47770a0c13651479fbcd8793f34232a2dd9faeccb75eb5d0d0d"}, + {file = "Pillow-9.4.0-cp38-cp38-win_amd64.whl", hash = "sha256:7a21222644ab69ddd9967cfe6f2bb420b460dae4289c9d40ff9a4896e7c35c9a"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:0f3269304c1a7ce82f1759c12ce731ef9b6e95b6df829dccd9fe42912cc48569"}, + {file = "Pillow-9.4.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:cb362e3b0976dc994857391b776ddaa8c13c28a16f80ac6522c23d5257156bed"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a2e0f87144fcbbe54297cae708c5e7f9da21a4646523456b00cc956bd4c65815"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28676836c7796805914b76b1837a40f76827ee0d5398f72f7dcc634bae7c6264"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0884ba7b515163a1a05440a138adeb722b8a6ae2c2b33aea93ea3118dd3a899e"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:53dcb50fbdc3fb2c55431a9b30caeb2f7027fcd2aeb501459464f0214200a503"}, + {file = "Pillow-9.4.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:e8c5cf126889a4de385c02a2c3d3aba4b00f70234bfddae82a5eaa3ee6d5e3e6"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6c6b1389ed66cdd174d040105123a5a1bc91d0aa7059c7261d20e583b6d8cbd2"}, + {file = "Pillow-9.4.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:0dd4c681b82214b36273c18ca7ee87065a50e013112eea7d78c7a1b89a739153"}, + {file = "Pillow-9.4.0-cp39-cp39-win32.whl", hash = "sha256:6d9dfb9959a3b0039ee06c1a1a90dc23bac3b430842dcb97908ddde05870601c"}, + {file = "Pillow-9.4.0-cp39-cp39-win_amd64.whl", hash = "sha256:54614444887e0d3043557d9dbc697dbb16cfb5a35d672b7a0fcc1ed0cf1c600b"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b9b752ab91e78234941e44abdecc07f1f0d8f51fb62941d32995b8161f68cfe5"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d3b56206244dc8711f7e8b7d6cad4663917cd5b2d950799425076681e8766286"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:aabdab8ec1e7ca7f1434d042bf8b1e92056245fb179790dc97ed040361f16bfd"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:db74f5562c09953b2c5f8ec4b7dfd3f5421f31811e97d1dbc0a7c93d6e3a24df"}, + {file = "Pillow-9.4.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:e9d7747847c53a16a729b6ee5e737cf170f7a16611c143d95aa60a109a59c336"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:b52ff4f4e002f828ea6483faf4c4e8deea8d743cf801b74910243c58acc6eda3"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:575d8912dca808edd9acd6f7795199332696d3469665ef26163cd090fa1f8bfa"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c3c4ed2ff6760e98d262e0cc9c9a7f7b8a9f61aa4d47c58835cdaf7b0b8811bb"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e621b0246192d3b9cb1dc62c78cfa4c6f6d2ddc0ec207d43c0dedecb914f152a"}, + {file = "Pillow-9.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:8f127e7b028900421cad64f51f75c051b628db17fb00e099eb148761eed598c9"}, + {file = "Pillow-9.4.0.tar.gz", hash = "sha256:a1c2d7780448eb93fbcc3789bf3916aa5720d942e37945f4056680317f1cd23e"}, ] pkgutil-resolve-name = [ {file = "pkgutil_resolve_name-1.3.10-py3-none-any.whl", hash = "sha256:ca27cc078d25c5ad71a9de0a7a330146c4e014c2462d9af19c6b828280649c5e"}, {file = "pkgutil_resolve_name-1.3.10.tar.gz", hash = "sha256:357d6c9e6a755653cfd78893817c0853af365dd51ec97f3d358a819373bbd174"}, ] platformdirs = [ - {file = "platformdirs-2.5.4-py3-none-any.whl", hash = "sha256:af0276409f9a02373d540bf8480021a048711d572745aef4b7842dad245eba10"}, - {file = "platformdirs-2.5.4.tar.gz", hash = "sha256:1006647646d80f16130f052404c6b901e80ee4ed6bef6792e1f238a8969106f7"}, + {file = "platformdirs-2.6.2-py3-none-any.whl", hash = "sha256:83c8f6d04389165de7c9b6f0c682439697887bca0aa2f1c87ef1826be3584490"}, + {file = "platformdirs-2.6.2.tar.gz", hash = "sha256:e1fea1fe471b9ff8332e229df3cb7de4f53eeea4998d3b6bfff542115e998bd2"}, ] pluggy = [ {file = "pluggy-1.0.0-py2.py3-none-any.whl", hash = "sha256:74134bbf457f031a36d68416e1509f34bd5ccc019f0bcc952c7b909d06b37bd3"}, @@ -4444,44 +4529,40 @@ pycparser = [ {file = "pycparser-2.21.tar.gz", hash = "sha256:e644fdec12f7872f86c58ff790da456218b10f863970249516d60a5eaca77206"}, ] pycryptodome = [ - {file = "pycryptodome-3.15.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:ff7ae90e36c1715a54446e7872b76102baa5c63aa980917f4aa45e8c78d1a3ec"}, - {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux1_i686.whl", hash = "sha256:2ffd8b31561455453ca9f62cb4c24e6b8d119d6d531087af5f14b64bee2c23e6"}, - {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux1_x86_64.whl", hash = "sha256:2ea63d46157386c5053cfebcdd9bd8e0c8b7b0ac4a0507a027f5174929403884"}, - {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:7c9ed8aa31c146bef65d89a1b655f5f4eab5e1120f55fc297713c89c9e56ff0b"}, - {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:5099c9ca345b2f252f0c28e96904643153bae9258647585e5e6f649bb7a1844a"}, - {file = "pycryptodome-3.15.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:2ec709b0a58b539a4f9d33fb8508264c3678d7edb33a68b8906ba914f71e8c13"}, - {file = "pycryptodome-3.15.0-cp27-cp27m-win32.whl", hash = "sha256:fd2184aae6ee2a944aaa49113e6f5787cdc5e4db1eb8edb1aea914bd75f33a0c"}, - {file = "pycryptodome-3.15.0-cp27-cp27m-win_amd64.whl", hash = "sha256:7e3a8f6ee405b3bd1c4da371b93c31f7027944b2bcce0697022801db93120d83"}, - {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux1_i686.whl", hash = "sha256:b9c5b1a1977491533dfd31e01550ee36ae0249d78aae7f632590db833a5012b8"}, - {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:0926f7cc3735033061ef3cf27ed16faad6544b14666410727b31fea85a5b16eb"}, - {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:2aa55aae81f935a08d5a3c2042eb81741a43e044bd8a81ea7239448ad751f763"}, - {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:c3640deff4197fa064295aaac10ab49a0d55ef3d6a54ae1499c40d646655c89f"}, - {file = "pycryptodome-3.15.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:045d75527241d17e6ef13636d845a12e54660aa82e823b3b3341bcf5af03fa79"}, - {file = "pycryptodome-3.15.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9ee40e2168f1348ae476676a2e938ca80a2f57b14a249d8fe0d3cdf803e5a676"}, - {file = "pycryptodome-3.15.0-cp35-abi3-manylinux1_i686.whl", hash = "sha256:4c3ccad74eeb7b001f3538643c4225eac398c77d617ebb3e57571a897943c667"}, - {file = "pycryptodome-3.15.0-cp35-abi3-manylinux1_x86_64.whl", hash = "sha256:1b22bcd9ec55e9c74927f6b1f69843cb256fb5a465088ce62837f793d9ffea88"}, - {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2010_i686.whl", hash = "sha256:57f565acd2f0cf6fb3e1ba553d0cb1f33405ec1f9c5ded9b9a0a5320f2c0bd3d"}, - {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2010_x86_64.whl", hash = "sha256:4b52cb18b0ad46087caeb37a15e08040f3b4c2d444d58371b6f5d786d95534c2"}, - {file = "pycryptodome-3.15.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:092a26e78b73f2530b8bd6b3898e7453ab2f36e42fd85097d705d6aba2ec3e5e"}, - {file = "pycryptodome-3.15.0-cp35-abi3-win32.whl", hash = "sha256:e244ab85c422260de91cda6379e8e986405b4f13dc97d2876497178707f87fc1"}, - {file = "pycryptodome-3.15.0-cp35-abi3-win_amd64.whl", hash = "sha256:c77126899c4b9c9827ddf50565e93955cb3996813c18900c16b2ea0474e130e9"}, - {file = "pycryptodome-3.15.0-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:9eaadc058106344a566dc51d3d3a758ab07f8edde013712bc8d22032a86b264f"}, - {file = "pycryptodome-3.15.0-pp27-pypy_73-manylinux1_x86_64.whl", hash = "sha256:ff287bcba9fbeb4f1cccc1f2e90a08d691480735a611ee83c80a7d74ad72b9d9"}, - {file = "pycryptodome-3.15.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:60b4faae330c3624cc5a546ba9cfd7b8273995a15de94ee4538130d74953ec2e"}, - {file = "pycryptodome-3.15.0-pp27-pypy_73-win32.whl", hash = "sha256:a8f06611e691c2ce45ca09bbf983e2ff2f8f4f87313609d80c125aff9fad6e7f"}, - {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-macosx_10_9_x86_64.whl", hash = "sha256:b9cc96e274b253e47ad33ae1fccc36ea386f5251a823ccb50593a935db47fdd2"}, - {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-manylinux1_x86_64.whl", hash = "sha256:ecaaef2d21b365d9c5ca8427ffc10cebed9d9102749fd502218c23cb9a05feb5"}, - {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-manylinux2010_x86_64.whl", hash = "sha256:d2a39a66057ab191e5c27211a7daf8f0737f23acbf6b3562b25a62df65ffcb7b"}, - {file = "pycryptodome-3.15.0-pp36-pypy36_pp73-win32.whl", hash = "sha256:9c772c485b27967514d0df1458b56875f4b6d025566bf27399d0c239ff1b369f"}, - {file = "pycryptodome-3.15.0.tar.gz", hash = "sha256:9135dddad504592bcc18b0d2d95ce86c3a5ea87ec6447ef25cfedea12d6018b8"}, + {file = "pycryptodome-3.16.0-cp27-cp27m-macosx_10_9_x86_64.whl", hash = "sha256:e061311b02cefb17ea93d4a5eb1ad36dca4792037078b43e15a653a0a4478ead"}, + {file = "pycryptodome-3.16.0-cp27-cp27m-manylinux2010_i686.whl", hash = "sha256:dab9359cc295160ba96738ba4912c675181c84bfdf413e5c0621cf00b7deeeaa"}, + {file = "pycryptodome-3.16.0-cp27-cp27m-manylinux2010_x86_64.whl", hash = "sha256:0198fe96c22f7bc31e7a7c27a26b2cec5af3cf6075d577295f4850856c77af32"}, + {file = "pycryptodome-3.16.0-cp27-cp27m-manylinux2014_aarch64.whl", hash = "sha256:58172080cbfaee724067a3c017add6a1a3cc167bbc8478dc5f2e5f45fa658763"}, + {file = "pycryptodome-3.16.0-cp27-cp27m-win32.whl", hash = "sha256:4d950ed2a887905b3fa709b86be5a163e26e1b174703ed59d34eb6832f213222"}, + {file = "pycryptodome-3.16.0-cp27-cp27m-win_amd64.whl", hash = "sha256:c69e19afc734b2a17b9d78b7bcb544aabd5a52ff628e14283b6e9404d27d0517"}, + {file = "pycryptodome-3.16.0-cp27-cp27mu-manylinux2010_i686.whl", hash = "sha256:1fc16c80a5da8231fd1f953a7b8dfeb415f68120248e8d68383c5c2c4b18708c"}, + {file = "pycryptodome-3.16.0-cp27-cp27mu-manylinux2010_x86_64.whl", hash = "sha256:5df582f2112dd72331de7e567837e136a9629181a8ab69ef8949e4bc294a0b99"}, + {file = "pycryptodome-3.16.0-cp27-cp27mu-manylinux2014_aarch64.whl", hash = "sha256:2bf2a270906a02b7b255e1a0d7b3aea4f06b3983c51ddec1673c380e0dff5b30"}, + {file = "pycryptodome-3.16.0-cp35-abi3-macosx_10_9_x86_64.whl", hash = "sha256:b12a88566a98617b1a34b4e5a805dff2da98d83fc74262aff3c3d724d0f525d6"}, + {file = "pycryptodome-3.16.0-cp35-abi3-manylinux2014_aarch64.whl", hash = "sha256:69adf32522b75968e1cbf25b5d83e87c04cd9a55610ce1e4a19012e58e7e4023"}, + {file = "pycryptodome-3.16.0-cp35-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d67a2d2fe344953e4572a7d30668cceb516b04287b8638170d562065e53ee2e0"}, + {file = "pycryptodome-3.16.0-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:e750a21d8a265b1f9bfb1a28822995ea33511ba7db5e2b55f41fb30781d0d073"}, + {file = "pycryptodome-3.16.0-cp35-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:47c71a0347847b747ba1349767b16cde049bc36f21654eb09cc82306ef5fdcf8"}, + {file = "pycryptodome-3.16.0-cp35-abi3-musllinux_1_1_i686.whl", hash = "sha256:856ebf822d08d754af62c22e2b93626509a72773214f92db1551e2b68d9e2a1b"}, + {file = "pycryptodome-3.16.0-cp35-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:6016269bb56caf0327f6d42e7bad1247e08b78407446dff562240c65f85d5a5e"}, + {file = "pycryptodome-3.16.0-cp35-abi3-win32.whl", hash = "sha256:1047ac2b9847ae84ea454e6e20db7dcb755a81c1b1631a879213d2b0ad835ff2"}, + {file = "pycryptodome-3.16.0-cp35-abi3-win_amd64.whl", hash = "sha256:13b3e610a2f8938c61a90b20625069ab7a77ccea20d65a9a0f926cc0cc1314b1"}, + {file = "pycryptodome-3.16.0-pp27-pypy_73-macosx_10_9_x86_64.whl", hash = "sha256:265bfcbbf20d58e6871ce695a7a08aac9b41a0553060d9c05363abd6f3391bdd"}, + {file = "pycryptodome-3.16.0-pp27-pypy_73-manylinux2010_x86_64.whl", hash = "sha256:54d807314c66785c69cd25425933d4bd4c23547a593cdcf49d962fa3e0081336"}, + {file = "pycryptodome-3.16.0-pp27-pypy_73-win32.whl", hash = "sha256:63165fbdc247450017eb9ef04cfe15cb3a72ca48ffcc3a3b75b08c0340bf3647"}, + {file = "pycryptodome-3.16.0-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:95069fd9e2813668a2713a1efcc65cc26d2c7e741401ac46628f1ec957511f1b"}, + {file = "pycryptodome-3.16.0-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:d1daec4d31bb00918e4e178297ac6ca6f86ec4c851ba584770533ece554d29e2"}, + {file = "pycryptodome-3.16.0-pp37-pypy37_pp73-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:48d99869d58f3979d72f6fa0c50f48d16f14973bc4a3adb0ce3b8325fdd7e223"}, + {file = "pycryptodome-3.16.0-pp37-pypy37_pp73-win_amd64.whl", hash = "sha256:c82e3bc1e70dde153b0956bffe20a15715a1fe3e00bc23e88d6973eda4505944"}, + {file = "pycryptodome-3.16.0.tar.gz", hash = "sha256:0e45d2d852a66ecfb904f090c3f87dc0dfb89a499570abad8590f10d9cffb350"}, ] pydoc-markdown = [ {file = "pydoc_markdown-4.6.4-py3-none-any.whl", hash = "sha256:166d384478065f62a0114017fbefdc7fe1fac1d9dc7fa901afed8b1e674328c7"}, {file = "pydoc_markdown-4.6.4.tar.gz", hash = "sha256:c3feab1240d397e38b132340dd2310b58a8538eaea78c939e1ca4df9ce098561"}, ] pydocstyle = [ - {file = "pydocstyle-6.1.1-py3-none-any.whl", hash = "sha256:6987826d6775056839940041beef5c08cc7e3d71d63149b48e36727f70144dc4"}, - {file = "pydocstyle-6.1.1.tar.gz", hash = "sha256:1d41b7c459ba0ee6c345f2eb9ae827cab14a7533a88c5c6f7e94923f72df92dc"}, + {file = "pydocstyle-6.2.3-py3-none-any.whl", hash = "sha256:a04ed1e6fe0be0970eddbb1681a7ab59b11eb92729fdb4b9b24f0eb11a25629e"}, + {file = "pydocstyle-6.2.3.tar.gz", hash = "sha256:d867acad25e48471f2ad8a40ef9813125e954ad675202245ca836cb6e28b2297"}, ] pyflakes = [ {file = "pyflakes-2.5.0-py2.py3-none-any.whl", hash = "sha256:4579f67d887f804e67edb544428f264b7b24f435b263c4614f384135cea553d2"}, @@ -4492,16 +4573,16 @@ pyglet = [ {file = "pyglet-1.5.0.zip", hash = "sha256:6ea918985feddfa9bf0fcc01ffe9ff5849e7b6e832d9b2e03b9d2a36369cb6ee"}, ] pygments = [ - {file = "Pygments-2.13.0-py3-none-any.whl", hash = "sha256:f643f331ab57ba3c9d89212ee4a2dabc6e94f117cf4eefde99a0574720d14c42"}, - {file = "Pygments-2.13.0.tar.gz", hash = "sha256:56a8508ae95f98e2b9bdf93a6be5ae3f7d8af858b43e02c5a2ff083726be40c1"}, + {file = "Pygments-2.14.0-py3-none-any.whl", hash = "sha256:fa7bd7bd2771287c0de303af8bfdfc731f51bd2c6a47ab69d117138893b82717"}, + {file = "Pygments-2.14.0.tar.gz", hash = "sha256:b3ed06a9e8ac9a9aae5a6f5dbe78a8a58655d17b43b93c078f094ddc476ae297"}, ] pylint = [ {file = "pylint-2.15.5-py3-none-any.whl", hash = "sha256:c2108037eb074334d9e874dc3c783752cc03d0796c88c9a9af282d0f161a1004"}, {file = "pylint-2.15.5.tar.gz", hash = "sha256:3b120505e5af1d06a5ad76b55d8660d44bf0f2fc3c59c2bdd94e39188ee3a4df"}, ] pymdown-extensions = [ - {file = "pymdown_extensions-9.9-py3-none-any.whl", hash = "sha256:ac698c15265680db5eb13cd4342abfcde2079ac01e5486028f47a1b41547b859"}, - {file = "pymdown_extensions-9.9.tar.gz", hash = "sha256:0f8fb7b74a37a61cc34e90b2c91865458b713ec774894ffad64353a5fce85cfc"}, + {file = "pymdown_extensions-9.9.1-py3-none-any.whl", hash = "sha256:8a8973933ab45b6fe8f5f8da1de25766356b1f91dee107bf4a34efd158dc340b"}, + {file = "pymdown_extensions-9.9.1.tar.gz", hash = "sha256:abed29926960bbb3b40f5ed5fa6375e29724d4e3cb86ced7c2bbd37ead1afeea"}, ] pymultihash = [ {file = "pymultihash-0.8.2-py3-none-any.whl", hash = "sha256:f7fa840b24bd6acbd6b073fcd330f10e15619387297babf1dd13ca4dae6e8209"}, @@ -4528,40 +4609,45 @@ pypiwin32 = [ {file = "pypiwin32-223.tar.gz", hash = "sha256:71be40c1fbd28594214ecaecb58e7aa8b708eabfa0125c8a109ebd51edbd776a"}, ] pyrsistent = [ - {file = "pyrsistent-0.19.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d6982b5a0237e1b7d876b60265564648a69b14017f3b5f908c5be2de3f9abb7a"}, - {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:187d5730b0507d9285a96fca9716310d572e5464cadd19f22b63a6976254d77a"}, - {file = "pyrsistent-0.19.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:055ab45d5911d7cae397dc418808d8802fb95262751872c841c170b0dbf51eed"}, - {file = "pyrsistent-0.19.2-cp310-cp310-win32.whl", hash = "sha256:456cb30ca8bff00596519f2c53e42c245c09e1a4543945703acd4312949bfd41"}, - {file = "pyrsistent-0.19.2-cp310-cp310-win_amd64.whl", hash = "sha256:b39725209e06759217d1ac5fcdb510e98670af9e37223985f330b611f62e7425"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:2aede922a488861de0ad00c7630a6e2d57e8023e4be72d9d7147a9fcd2d30712"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:879b4c2f4d41585c42df4d7654ddffff1239dc4065bc88b745f0341828b83e78"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c43bec251bbd10e3cb58ced80609c5c1eb238da9ca78b964aea410fb820d00d6"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-win32.whl", hash = "sha256:d690b18ac4b3e3cab73b0b7aa7dbe65978a172ff94970ff98d82f2031f8971c2"}, - {file = "pyrsistent-0.19.2-cp37-cp37m-win_amd64.whl", hash = "sha256:3ba4134a3ff0fc7ad225b6b457d1309f4698108fb6b35532d015dca8f5abed73"}, - {file = "pyrsistent-0.19.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a178209e2df710e3f142cbd05313ba0c5ebed0a55d78d9945ac7a4e09d923308"}, - {file = "pyrsistent-0.19.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e371b844cec09d8dc424d940e54bba8f67a03ebea20ff7b7b0d56f526c71d584"}, - {file = "pyrsistent-0.19.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111156137b2e71f3a9936baf27cb322e8024dac3dc54ec7fb9f0bcf3249e68bb"}, - {file = "pyrsistent-0.19.2-cp38-cp38-win32.whl", hash = "sha256:e5d8f84d81e3729c3b506657dddfe46e8ba9c330bf1858ee33108f8bb2adb38a"}, - {file = "pyrsistent-0.19.2-cp38-cp38-win_amd64.whl", hash = "sha256:9cd3e9978d12b5d99cbdc727a3022da0430ad007dacf33d0bf554b96427f33ab"}, - {file = "pyrsistent-0.19.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f1258f4e6c42ad0b20f9cfcc3ada5bd6b83374516cd01c0960e3cb75fdca6770"}, - {file = "pyrsistent-0.19.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:21455e2b16000440e896ab99e8304617151981ed40c29e9507ef1c2e4314ee95"}, - {file = "pyrsistent-0.19.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bfd880614c6237243ff53a0539f1cb26987a6dc8ac6e66e0c5a40617296a045e"}, - {file = "pyrsistent-0.19.2-cp39-cp39-win32.whl", hash = "sha256:71d332b0320642b3261e9fee47ab9e65872c2bd90260e5d225dabeed93cbd42b"}, - {file = "pyrsistent-0.19.2-cp39-cp39-win_amd64.whl", hash = "sha256:dec3eac7549869365fe263831f576c8457f6c833937c68542d08fde73457d291"}, - {file = "pyrsistent-0.19.2-py3-none-any.whl", hash = "sha256:ea6b79a02a28550c98b6ca9c35b9f492beaa54d7c5c9e9949555893c8a9234d0"}, - {file = "pyrsistent-0.19.2.tar.gz", hash = "sha256:bfa0351be89c9fcbcb8c9879b826f4353be10f58f8a677efab0c017bf7137ec2"}, + {file = "pyrsistent-0.19.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:20460ac0ea439a3e79caa1dbd560344b64ed75e85d8703943e0b66c2a6150e4a"}, + {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c18264cb84b5e68e7085a43723f9e4c1fd1d935ab240ce02c0324a8e01ccb64"}, + {file = "pyrsistent-0.19.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b774f9288dda8d425adb6544e5903f1fb6c273ab3128a355c6b972b7df39dcf"}, + {file = "pyrsistent-0.19.3-cp310-cp310-win32.whl", hash = "sha256:5a474fb80f5e0d6c9394d8db0fc19e90fa540b82ee52dba7d246a7791712f74a"}, + {file = "pyrsistent-0.19.3-cp310-cp310-win_amd64.whl", hash = "sha256:49c32f216c17148695ca0e02a5c521e28a4ee6c5089f97e34fe24163113722da"}, + {file = "pyrsistent-0.19.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f0774bf48631f3a20471dd7c5989657b639fd2d285b861237ea9e82c36a415a9"}, + {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ab2204234c0ecd8b9368dbd6a53e83c3d4f3cab10ecaf6d0e772f456c442393"}, + {file = "pyrsistent-0.19.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e42296a09e83028b3476f7073fcb69ffebac0e66dbbfd1bd847d61f74db30f19"}, + {file = "pyrsistent-0.19.3-cp311-cp311-win32.whl", hash = "sha256:64220c429e42a7150f4bfd280f6f4bb2850f95956bde93c6fda1b70507af6ef3"}, + {file = "pyrsistent-0.19.3-cp311-cp311-win_amd64.whl", hash = "sha256:016ad1afadf318eb7911baa24b049909f7f3bb2c5b1ed7b6a8f21db21ea3faa8"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:c4db1bd596fefd66b296a3d5d943c94f4fac5bcd13e99bffe2ba6a759d959a28"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aeda827381f5e5d65cced3024126529ddc4289d944f75e090572c77ceb19adbf"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:42ac0b2f44607eb92ae88609eda931a4f0dfa03038c44c772e07f43e738bcac9"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-win32.whl", hash = "sha256:e8f2b814a3dc6225964fa03d8582c6e0b6650d68a232df41e3cc1b66a5d2f8d1"}, + {file = "pyrsistent-0.19.3-cp37-cp37m-win_amd64.whl", hash = "sha256:c9bb60a40a0ab9aba40a59f68214eed5a29c6274c83b2cc206a359c4a89fa41b"}, + {file = "pyrsistent-0.19.3-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:a2471f3f8693101975b1ff85ffd19bb7ca7dd7c38f8a81701f67d6b4f97b87d8"}, + {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cc5d149f31706762c1f8bda2e8c4f8fead6e80312e3692619a75301d3dbb819a"}, + {file = "pyrsistent-0.19.3-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3311cb4237a341aa52ab8448c27e3a9931e2ee09561ad150ba94e4cfd3fc888c"}, + {file = "pyrsistent-0.19.3-cp38-cp38-win32.whl", hash = "sha256:f0e7c4b2f77593871e918be000b96c8107da48444d57005b6a6bc61fb4331b2c"}, + {file = "pyrsistent-0.19.3-cp38-cp38-win_amd64.whl", hash = "sha256:c147257a92374fde8498491f53ffa8f4822cd70c0d85037e09028e478cababb7"}, + {file = "pyrsistent-0.19.3-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:b735e538f74ec31378f5a1e3886a26d2ca6351106b4dfde376a26fc32a044edc"}, + {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:99abb85579e2165bd8522f0c0138864da97847875ecbd45f3e7e2af569bfc6f2"}, + {file = "pyrsistent-0.19.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3a8cb235fa6d3fd7aae6a4f1429bbb1fec1577d978098da1252f0489937786f3"}, + {file = "pyrsistent-0.19.3-cp39-cp39-win32.whl", hash = "sha256:c74bed51f9b41c48366a286395c67f4e894374306b197e62810e0fdaf2364da2"}, + {file = "pyrsistent-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:878433581fc23e906d947a6814336eee031a00e6defba224234169ae3d3d6a98"}, + {file = "pyrsistent-0.19.3-py3-none-any.whl", hash = "sha256:ccf0d6bd208f8111179f0c26fdf84ed7c3891982f2edaeae7422575f47e66b64"}, + {file = "pyrsistent-0.19.3.tar.gz", hash = "sha256:1a2994773706bbb4995c31a97bc94f1418314923bd1048c6d964837040376440"}, ] pyserial = [ {file = "pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0"}, {file = "pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb"}, ] pytest = [ - {file = "pytest-7.2.0-py3-none-any.whl", hash = "sha256:892f933d339f068883b6fd5a459f03d85bfcb355e4981e146d2c7616c21fef71"}, - {file = "pytest-7.2.0.tar.gz", hash = "sha256:c4014eb40e10f11f355ad4e3c2fb2c6c6d1919c73f3b5a433de4708202cade59"}, + {file = "pytest-7.2.1-py3-none-any.whl", hash = "sha256:c7c6ca206e93355074ae32f7403e8ea12163b1163c976fee7d4d84027c162be5"}, + {file = "pytest-7.2.1.tar.gz", hash = "sha256:d45e0952f3727241918b8fd0f376f5ff6b301cc0777c6f9a556935c92d8a7d42"}, ] pytest-asyncio = [ - {file = "pytest-asyncio-0.20.2.tar.gz", hash = "sha256:32a87a9836298a881c0ec637ebcc952cfe23a56436bdc0d09d1511941dd8a812"}, - {file = "pytest_asyncio-0.20.2-py3-none-any.whl", hash = "sha256:07e0abf9e6e6b95894a39f688a4a875d63c2128f76c02d03d16ccbc35bcc0f8a"}, + {file = "pytest-asyncio-0.20.3.tar.gz", hash = "sha256:83cbf01169ce3e8eb71c6c278ccb0574d1a7a3bb8eaaf5e50e0ad342afb33b36"}, + {file = "pytest_asyncio-0.20.3-py3-none-any.whl", hash = "sha256:f129998b209d04fcc65c96fc85c11e5316738358909a8399e93be553d7656442"}, ] pytest-cov = [ {file = "pytest-cov-4.0.0.tar.gz", hash = "sha256:996b79efde6433cdbd0088872dbc5fb3ed7fe1578b68cdbba634f14bb8dd0470"}, @@ -4666,9 +4752,99 @@ pyyaml-env-tag = [ quantile-python = [ {file = "quantile-python-1.1.tar.gz", hash = "sha256:558629e88c497ef3b9b1081349c1ae6a61b53590e317724298ff54c674db7969"}, ] +regex = [ + {file = "regex-2022.10.31-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a8ff454ef0bb061e37df03557afda9d785c905dab15584860f982e88be73015f"}, + {file = "regex-2022.10.31-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1eba476b1b242620c266edf6325b443a2e22b633217a9835a52d8da2b5c051f9"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0e5af9a9effb88535a472e19169e09ce750c3d442fb222254a276d77808620b"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d03fe67b2325cb3f09be029fd5da8df9e6974f0cde2c2ac6a79d2634e791dd57"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a9d0b68ac1743964755ae2d89772c7e6fb0118acd4d0b7464eaf3921c6b49dd4"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a45b6514861916c429e6059a55cf7db74670eaed2052a648e3e4d04f070e001"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8b0886885f7323beea6f552c28bff62cbe0983b9fbb94126531693ea6c5ebb90"}, + {file = "regex-2022.10.31-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:5aefb84a301327ad115e9d346c8e2760009131d9d4b4c6b213648d02e2abe144"}, + {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:702d8fc6f25bbf412ee706bd73019da5e44a8400861dfff7ff31eb5b4a1276dc"}, + {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:a3c1ebd4ed8e76e886507c9eddb1a891673686c813adf889b864a17fafcf6d66"}, + {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:50921c140561d3db2ab9f5b11c5184846cde686bb5a9dc64cae442926e86f3af"}, + {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:7db345956ecce0c99b97b042b4ca7326feeec6b75facd8390af73b18e2650ffc"}, + {file = "regex-2022.10.31-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:763b64853b0a8f4f9cfb41a76a4a85a9bcda7fdda5cb057016e7706fde928e66"}, + {file = "regex-2022.10.31-cp310-cp310-win32.whl", hash = "sha256:44136355e2f5e06bf6b23d337a75386371ba742ffa771440b85bed367c1318d1"}, + {file = "regex-2022.10.31-cp310-cp310-win_amd64.whl", hash = "sha256:bfff48c7bd23c6e2aec6454aaf6edc44444b229e94743b34bdcdda2e35126cf5"}, + {file = "regex-2022.10.31-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4b4b1fe58cd102d75ef0552cf17242705ce0759f9695334a56644ad2d83903fe"}, + {file = "regex-2022.10.31-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:542e3e306d1669b25936b64917285cdffcd4f5c6f0247636fec037187bd93542"}, + {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c27cc1e4b197092e50ddbf0118c788d9977f3f8f35bfbbd3e76c1846a3443df7"}, + {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b8e38472739028e5f2c3a4aded0ab7eadc447f0d84f310c7a8bb697ec417229e"}, + {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:76c598ca73ec73a2f568e2a72ba46c3b6c8690ad9a07092b18e48ceb936e9f0c"}, + {file = "regex-2022.10.31-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c28d3309ebd6d6b2cf82969b5179bed5fefe6142c70f354ece94324fa11bf6a1"}, + {file = "regex-2022.10.31-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9af69f6746120998cd9c355e9c3c6aec7dff70d47247188feb4f829502be8ab4"}, + {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:a5f9505efd574d1e5b4a76ac9dd92a12acb2b309551e9aa874c13c11caefbe4f"}, + {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:5ff525698de226c0ca743bfa71fc6b378cda2ddcf0d22d7c37b1cc925c9650a5"}, + {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:4fe7fda2fe7c8890d454f2cbc91d6c01baf206fbc96d89a80241a02985118c0c"}, + {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:2cdc55ca07b4e70dda898d2ab7150ecf17c990076d3acd7a5f3b25cb23a69f1c"}, + {file = "regex-2022.10.31-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:44a6c2f6374e0033873e9ed577a54a3602b4f609867794c1a3ebba65e4c93ee7"}, + {file = "regex-2022.10.31-cp311-cp311-win32.whl", hash = "sha256:d8716f82502997b3d0895d1c64c3b834181b1eaca28f3f6336a71777e437c2af"}, + {file = "regex-2022.10.31-cp311-cp311-win_amd64.whl", hash = "sha256:61edbca89aa3f5ef7ecac8c23d975fe7261c12665f1d90a6b1af527bba86ce61"}, + {file = "regex-2022.10.31-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:0a069c8483466806ab94ea9068c34b200b8bfc66b6762f45a831c4baaa9e8cdd"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d26166acf62f731f50bdd885b04b38828436d74e8e362bfcb8df221d868b5d9b"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ac741bf78b9bb432e2d314439275235f41656e189856b11fb4e774d9f7246d81"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75f591b2055523fc02a4bbe598aa867df9e953255f0b7f7715d2a36a9c30065c"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6b30bddd61d2a3261f025ad0f9ee2586988c6a00c780a2fb0a92cea2aa702c54"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ef4163770525257876f10e8ece1cf25b71468316f61451ded1a6f44273eedeb5"}, + {file = "regex-2022.10.31-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7b280948d00bd3973c1998f92e22aa3ecb76682e3a4255f33e1020bd32adf443"}, + {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_aarch64.whl", hash = "sha256:d0213671691e341f6849bf33cd9fad21f7b1cb88b89e024f33370733fec58742"}, + {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_i686.whl", hash = "sha256:22e7ebc231d28393dfdc19b185d97e14a0f178bedd78e85aad660e93b646604e"}, + {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_ppc64le.whl", hash = "sha256:8ad241da7fac963d7573cc67a064c57c58766b62a9a20c452ca1f21050868dfa"}, + {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_s390x.whl", hash = "sha256:586b36ebda81e6c1a9c5a5d0bfdc236399ba6595e1397842fd4a45648c30f35e"}, + {file = "regex-2022.10.31-cp36-cp36m-musllinux_1_1_x86_64.whl", hash = "sha256:0653d012b3bf45f194e5e6a41df9258811ac8fc395579fa82958a8b76286bea4"}, + {file = "regex-2022.10.31-cp36-cp36m-win32.whl", hash = "sha256:144486e029793a733e43b2e37df16a16df4ceb62102636ff3db6033994711066"}, + {file = "regex-2022.10.31-cp36-cp36m-win_amd64.whl", hash = "sha256:c14b63c9d7bab795d17392c7c1f9aaabbffd4cf4387725a0ac69109fb3b550c6"}, + {file = "regex-2022.10.31-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:4cac3405d8dda8bc6ed499557625585544dd5cbf32072dcc72b5a176cb1271c8"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:23cbb932cc53a86ebde0fb72e7e645f9a5eec1a5af7aa9ce333e46286caef783"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:74bcab50a13960f2a610cdcd066e25f1fd59e23b69637c92ad470784a51b1347"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78d680ef3e4d405f36f0d6d1ea54e740366f061645930072d39bca16a10d8c93"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce6910b56b700bea7be82c54ddf2e0ed792a577dfaa4a76b9af07d550af435c6"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:659175b2144d199560d99a8d13b2228b85e6019b6e09e556209dfb8c37b78a11"}, + {file = "regex-2022.10.31-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:1ddf14031a3882f684b8642cb74eea3af93a2be68893901b2b387c5fd92a03ec"}, + {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:b683e5fd7f74fb66e89a1ed16076dbab3f8e9f34c18b1979ded614fe10cdc4d9"}, + {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:2bde29cc44fa81c0a0c8686992c3080b37c488df167a371500b2a43ce9f026d1"}, + {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:4919899577ba37f505aaebdf6e7dc812d55e8f097331312db7f1aab18767cce8"}, + {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:9c94f7cc91ab16b36ba5ce476f1904c91d6c92441f01cd61a8e2729442d6fcf5"}, + {file = "regex-2022.10.31-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:ae1e96785696b543394a4e3f15f3f225d44f3c55dafe3f206493031419fedf95"}, + {file = "regex-2022.10.31-cp37-cp37m-win32.whl", hash = "sha256:c670f4773f2f6f1957ff8a3962c7dd12e4be54d05839b216cb7fd70b5a1df394"}, + {file = "regex-2022.10.31-cp37-cp37m-win_amd64.whl", hash = "sha256:8e0caeff18b96ea90fc0eb6e3bdb2b10ab5b01a95128dfeccb64a7238decf5f0"}, + {file = "regex-2022.10.31-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:131d4be09bea7ce2577f9623e415cab287a3c8e0624f778c1d955ec7c281bd4d"}, + {file = "regex-2022.10.31-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:e613a98ead2005c4ce037c7b061f2409a1a4e45099edb0ef3200ee26ed2a69a8"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:052b670fafbe30966bbe5d025e90b2a491f85dfe5b2583a163b5e60a85a321ad"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aa62a07ac93b7cb6b7d0389d8ef57ffc321d78f60c037b19dfa78d6b17c928ee"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5352bea8a8f84b89d45ccc503f390a6be77917932b1c98c4cdc3565137acc714"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20f61c9944f0be2dc2b75689ba409938c14876c19d02f7585af4460b6a21403e"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29c04741b9ae13d1e94cf93fca257730b97ce6ea64cfe1eba11cf9ac4e85afb6"}, + {file = "regex-2022.10.31-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:543883e3496c8b6d58bd036c99486c3c8387c2fc01f7a342b760c1ea3158a318"}, + {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:b7a8b43ee64ca8f4befa2bea4083f7c52c92864d8518244bfa6e88c751fa8fff"}, + {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:6a9a19bea8495bb419dc5d38c4519567781cd8d571c72efc6aa959473d10221a"}, + {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:6ffd55b5aedc6f25fd8d9f905c9376ca44fcf768673ffb9d160dd6f409bfda73"}, + {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:4bdd56ee719a8f751cf5a593476a441c4e56c9b64dc1f0f30902858c4ef8771d"}, + {file = "regex-2022.10.31-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:8ca88da1bd78990b536c4a7765f719803eb4f8f9971cc22d6ca965c10a7f2c4c"}, + {file = "regex-2022.10.31-cp38-cp38-win32.whl", hash = "sha256:5a260758454580f11dd8743fa98319bb046037dfab4f7828008909d0aa5292bc"}, + {file = "regex-2022.10.31-cp38-cp38-win_amd64.whl", hash = "sha256:5e6a5567078b3eaed93558842346c9d678e116ab0135e22eb72db8325e90b453"}, + {file = "regex-2022.10.31-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:5217c25229b6a85049416a5c1e6451e9060a1edcf988641e309dbe3ab26d3e49"}, + {file = "regex-2022.10.31-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4bf41b8b0a80708f7e0384519795e80dcb44d7199a35d52c15cc674d10b3081b"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0cf0da36a212978be2c2e2e2d04bdff46f850108fccc1851332bcae51c8907cc"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d403d781b0e06d2922435ce3b8d2376579f0c217ae491e273bab8d092727d244"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a37d51fa9a00d265cf73f3de3930fa9c41548177ba4f0faf76e61d512c774690"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e4f781ffedd17b0b834c8731b75cce2639d5a8afe961c1e58ee7f1f20b3af185"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d243b36fbf3d73c25e48014961e83c19c9cc92530516ce3c43050ea6276a2ab7"}, + {file = "regex-2022.10.31-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:370f6e97d02bf2dd20d7468ce4f38e173a124e769762d00beadec3bc2f4b3bc4"}, + {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:597f899f4ed42a38df7b0e46714880fb4e19a25c2f66e5c908805466721760f5"}, + {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:7dbdce0c534bbf52274b94768b3498abdf675a691fec5f751b6057b3030f34c1"}, + {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:22960019a842777a9fa5134c2364efaed5fbf9610ddc5c904bd3a400973b0eb8"}, + {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:7f5a3ffc731494f1a57bd91c47dc483a1e10048131ffb52d901bfe2beb6102e8"}, + {file = "regex-2022.10.31-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:7ef6b5942e6bfc5706301a18a62300c60db9af7f6368042227ccb7eeb22d0892"}, + {file = "regex-2022.10.31-cp39-cp39-win32.whl", hash = "sha256:395161bbdbd04a8333b9ff9763a05e9ceb4fe210e3c7690f5e68cedd3d65d8e1"}, + {file = "regex-2022.10.31-cp39-cp39-win_amd64.whl", hash = "sha256:957403a978e10fb3ca42572a23e6f7badff39aa1ce2f4ade68ee452dc6807692"}, + {file = "regex-2022.10.31.tar.gz", hash = "sha256:a3a98921da9a1bf8457aeee6a551948a83601689e5ecdd736894ea9bbec77e83"}, +] requests = [ - {file = "requests-2.28.1-py3-none-any.whl", hash = "sha256:8fefa2a1a1365bf5520aac41836fbee479da67864514bdb821f31ce07ce65349"}, - {file = "requests-2.28.1.tar.gz", hash = "sha256:7c5599b102feddaa661c826c56ab4fee28bfd17f5abca1ebbe3e7f19d7c97983"}, + {file = "requests-2.28.2-py3-none-any.whl", hash = "sha256:64299f4909223da747622c030b781c0d7811e359c37124b4bd368fb8c6518baa"}, + {file = "requests-2.28.2.tar.gz", hash = "sha256:98b1b2782e3c6c4904938b84c0eb932721069dfdb9134313beff7c83c2df24bf"}, ] requests-oauthlib = [ {file = "requests-oauthlib-1.3.1.tar.gz", hash = "sha256:75beac4a47881eeb94d5ea5d6ad31ef88856affe2332b9aafb52c6452ccf0d7a"}, @@ -4722,8 +4898,8 @@ ruamel-yaml-clib = [ {file = "ruamel.yaml.clib-0.2.7.tar.gz", hash = "sha256:1f08fd5a2bea9c4180db71678e850b995d2a5f4537be0e94557668cf0f5f9497"}, ] safety = [ - {file = "safety-2.3.1-py3-none-any.whl", hash = "sha256:8f098d12b607db2756886280e85c28ece8db1bba4f45fc5f981f4663217bd619"}, - {file = "safety-2.3.1.tar.gz", hash = "sha256:6e6fcb7d4e8321098cf289f59b65051cafd3467f089c6e57c9f894ae32c23b71"}, + {file = "safety-2.3.5-py3-none-any.whl", hash = "sha256:2227fcac1b22b53c1615af78872b48348661691450aa25d6704a5504dbd1f7e2"}, + {file = "safety-2.3.5.tar.gz", hash = "sha256:a60c11f8952f412cbb165d70cb1f673a3b43a2ba9a93ce11f97e6a4de834aa3a"}, ] scikit-image = [ {file = "scikit-image-0.19.3.tar.gz", hash = "sha256:24b5367de1762da6ee126dd8f30cc4e7efda474e0d7d70685433f0e3aa2ec450"}, @@ -4754,27 +4930,27 @@ scikit-image = [ {file = "scikit_image-0.19.3-cp39-cp39-win_amd64.whl", hash = "sha256:32fb88cc36203b99c9672fb972c9ef98635deaa5fc889fe969f3e11c44f22919"}, ] scipy = [ - {file = "scipy-1.9.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1884b66a54887e21addf9c16fb588720a8309a57b2e258ae1c7986d4444d3bc0"}, - {file = "scipy-1.9.3-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:83b89e9586c62e787f5012e8475fbb12185bafb996a03257e9675cd73d3736dd"}, - {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1a72d885fa44247f92743fc20732ae55564ff2a519e8302fb7e18717c5355a8b"}, - {file = "scipy-1.9.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d01e1dd7b15bd2449c8bfc6b7cc67d630700ed655654f0dfcf121600bad205c9"}, - {file = "scipy-1.9.3-cp310-cp310-win_amd64.whl", hash = "sha256:68239b6aa6f9c593da8be1509a05cb7f9efe98b80f43a5861cd24c7557e98523"}, - {file = "scipy-1.9.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b41bc822679ad1c9a5f023bc93f6d0543129ca0f37c1ce294dd9d386f0a21096"}, - {file = "scipy-1.9.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:90453d2b93ea82a9f434e4e1cba043e779ff67b92f7a0e85d05d286a3625df3c"}, - {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83c06e62a390a9167da60bedd4575a14c1f58ca9dfde59830fc42e5197283dab"}, - {file = "scipy-1.9.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:abaf921531b5aeaafced90157db505e10345e45038c39e5d9b6c7922d68085cb"}, - {file = "scipy-1.9.3-cp311-cp311-win_amd64.whl", hash = "sha256:06d2e1b4c491dc7d8eacea139a1b0b295f74e1a1a0f704c375028f8320d16e31"}, - {file = "scipy-1.9.3-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5a04cd7d0d3eff6ea4719371cbc44df31411862b9646db617c99718ff68d4840"}, - {file = "scipy-1.9.3-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:545c83ffb518094d8c9d83cce216c0c32f8c04aaf28b92cc8283eda0685162d5"}, - {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d54222d7a3ba6022fdf5773931b5d7c56efe41ede7f7128c7b1637700409108"}, - {file = "scipy-1.9.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cff3a5295234037e39500d35316a4c5794739433528310e117b8a9a0c76d20fc"}, - {file = "scipy-1.9.3-cp38-cp38-win_amd64.whl", hash = "sha256:2318bef588acc7a574f5bfdff9c172d0b1bf2c8143d9582e05f878e580a3781e"}, - {file = "scipy-1.9.3-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d644a64e174c16cb4b2e41dfea6af722053e83d066da7343f333a54dae9bc31c"}, - {file = "scipy-1.9.3-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:da8245491d73ed0a994ed9c2e380fd058ce2fa8a18da204681f2fe1f57f98f95"}, - {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4db5b30849606a95dcf519763dd3ab6fe9bd91df49eba517359e450a7d80ce2e"}, - {file = "scipy-1.9.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c68db6b290cbd4049012990d7fe71a2abd9ffbe82c0056ebe0f01df8be5436b0"}, - {file = "scipy-1.9.3-cp39-cp39-win_amd64.whl", hash = "sha256:5b88e6d91ad9d59478fafe92a7c757d00c59e3bdc3331be8ada76a4f8d683f58"}, - {file = "scipy-1.9.3.tar.gz", hash = "sha256:fbc5c05c85c1a02be77b1ff591087c83bc44579c6d2bd9fb798bb64ea5e1a027"}, + {file = "scipy-1.10.0-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:b901b423c91281a974f6cd1c36f5c6c523e665b5a6d5e80fcb2334e14670eefd"}, + {file = "scipy-1.10.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:16ba05d3d1b9f2141004f3f36888e05894a525960b07f4c2bfc0456b955a00be"}, + {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:151f066fe7d6653c3ffefd489497b8fa66d7316e3e0d0c0f7ff6acca1b802809"}, + {file = "scipy-1.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f9ea0a37aca111a407cb98aa4e8dfde6e5d9333bae06dfa5d938d14c80bb5c3"}, + {file = "scipy-1.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:27e548276b5a88b51212b61f6dda49a24acf5d770dff940bd372b3f7ced8c6c2"}, + {file = "scipy-1.10.0-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:42ab8b9e7dc1ebe248e55f54eea5307b6ab15011a7883367af48dd781d1312e4"}, + {file = "scipy-1.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:e096b062d2efdea57f972d232358cb068413dc54eec4f24158bcbb5cb8bddfd8"}, + {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4df25a28bd22c990b22129d3c637fd5c3be4b7c94f975dca909d8bab3309b694"}, + {file = "scipy-1.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ad449db4e0820e4b42baccefc98ec772ad7818dcbc9e28b85aa05a536b0f1a2"}, + {file = "scipy-1.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:6faf86ef7717891195ae0537e48da7524d30bc3b828b30c9b115d04ea42f076f"}, + {file = "scipy-1.10.0-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:4bd0e3278126bc882d10414436e58fa3f1eca0aa88b534fcbf80ed47e854f46c"}, + {file = "scipy-1.10.0-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:38bfbd18dcc69eeb589811e77fae552fa923067fdfbb2e171c9eac749885f210"}, + {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ab2a58064836632e2cec31ca197d3695c86b066bc4818052b3f5381bfd2a728"}, + {file = "scipy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5cd7a30970c29d9768a7164f564d1fbf2842bfc77b7d114a99bc32703ce0bf48"}, + {file = "scipy-1.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:9b878c671655864af59c108c20e4da1e796154bd78c0ed6bb02bc41c84625686"}, + {file = "scipy-1.10.0-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:3afcbddb4488ac950ce1147e7580178b333a29cd43524c689b2e3543a080a2c8"}, + {file = "scipy-1.10.0-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:6e4497e5142f325a5423ff5fda2fff5b5d953da028637ff7c704378c8c284ea7"}, + {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:441cab2166607c82e6d7a8683779cb89ba0f475b983c7e4ab88f3668e268c143"}, + {file = "scipy-1.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0490dc499fe23e4be35b8b6dd1e60a4a34f0c4adb30ac671e6332446b3cbbb5a"}, + {file = "scipy-1.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:954ff69d2d1bf666b794c1d7216e0a746c9d9289096a64ab3355a17c7c59db54"}, + {file = "scipy-1.10.0.tar.gz", hash = "sha256:c8b3cbc636a87a89b770c6afc999baa6bcbb01691b5ccbbc1b1791c7c0a07540"}, ] semantic-version = [ {file = "semantic_version-2.10.0-py2.py3-none-any.whl", hash = "sha256:de78a3b8e0feda74cabc54aab2da702113e33ac9d9eb9d2389bcf1f58b7d9177"}, @@ -4785,8 +4961,8 @@ semver = [ {file = "semver-2.13.0.tar.gz", hash = "sha256:fa0fe2722ee1c3f57eac478820c3a5ae2f624af8264cbdf9000c980ff7f75e3f"}, ] setuptools = [ - {file = "setuptools-65.6.3-py3-none-any.whl", hash = "sha256:57f6f22bde4e042978bcd50176fdb381d7c21a9efa4041202288d3737a0c6a54"}, - {file = "setuptools-65.6.3.tar.gz", hash = "sha256:a7620757bf984b58deaf32fc8a4577a9bbc0850cf92c20e1ce41c38c19e5fb75"}, + {file = "setuptools-66.0.0-py3-none-any.whl", hash = "sha256:a78d01d1e2c175c474884671dde039962c9d74c7223db7369771fcf6e29ceeab"}, + {file = "setuptools-66.0.0.tar.gz", hash = "sha256:bd6eb2d6722568de6d14b87c44a96fac54b2a45ff5e940e639979a3d1792adb6"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, @@ -4805,47 +4981,47 @@ soupsieve = [ {file = "soupsieve-2.3.2.post1.tar.gz", hash = "sha256:fc53893b3da2c33de295667a0e19f078c14bf86544af307354de5fcf12a3f30d"}, ] sqlalchemy = [ - {file = "SQLAlchemy-1.4.44-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:da60b98b0f6f0df9fbf8b72d67d13b73aa8091923a48af79a951d4088530a239"}, - {file = "SQLAlchemy-1.4.44-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:95f4f8d62589755b507218f2e3189475a4c1f5cc9db2aec772071a7dc6cd5726"}, - {file = "SQLAlchemy-1.4.44-cp27-cp27m-win32.whl", hash = "sha256:afd1ac99179d1864a68c06b31263a08ea25a49df94e272712eb2824ef151e294"}, - {file = "SQLAlchemy-1.4.44-cp27-cp27m-win_amd64.whl", hash = "sha256:f8e5443295b218b08bef8eb85d31b214d184b3690d99a33b7bd8e5591e2b0aa1"}, - {file = "SQLAlchemy-1.4.44-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:53f90a2374f60e703c94118d21533765412da8225ba98659de7dd7998641ab17"}, - {file = "SQLAlchemy-1.4.44-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:65a0ad931944fcb0be12a8e0ac322dbd3ecf17c53f088bc10b6da8f0caac287b"}, - {file = "SQLAlchemy-1.4.44-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:595b185041a4dc5c685283ea98c2f67bbfa47bb28e4a4f5b27ebf40684e7a9f8"}, - {file = "SQLAlchemy-1.4.44-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:80ead36fb1d676cc019586ffdc21c7e906ce4bf243fe4021e4973dae332b6038"}, - {file = "SQLAlchemy-1.4.44-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68e0cd5d32a32c4395168d42f2fefbb03b817ead3a8f3704b8bd5697c0b26c24"}, - {file = "SQLAlchemy-1.4.44-cp310-cp310-win32.whl", hash = "sha256:ae1ed1ebc407d2f66c6f0ec44ef7d56e3f455859df5494680e2cf89dad8e3ae0"}, - {file = "SQLAlchemy-1.4.44-cp310-cp310-win_amd64.whl", hash = "sha256:6f0ea4d7348feb5e5d0bf317aace92e28398fa9a6e38b7be9ec1f31aad4a8039"}, - {file = "SQLAlchemy-1.4.44-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f5e8ed9cde48b76318ab989deeddc48f833d2a6a7b7c393c49b704f67dedf01d"}, - {file = "SQLAlchemy-1.4.44-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c857676d810ca196be73c98eb839125d6fa849bfa3589be06201a6517f9961c"}, - {file = "SQLAlchemy-1.4.44-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4c56e6899fa6e767e4be5d106941804a4201c5cb9620a409c0b80448ec70b656"}, - {file = "SQLAlchemy-1.4.44-cp311-cp311-win32.whl", hash = "sha256:c46322354c58d4dc039a2c982d28284330f8919f31206894281f4b595b9d8dbe"}, - {file = "SQLAlchemy-1.4.44-cp311-cp311-win_amd64.whl", hash = "sha256:7313e4acebb9ae88dbde14a8a177467a7625b7449306c03a3f9f309b30e163d0"}, - {file = "SQLAlchemy-1.4.44-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:17aee7bfcef7bf0dea92f10e5dfdd67418dcf6fe0759f520e168b605855c003e"}, - {file = "SQLAlchemy-1.4.44-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9470633395e5f24d6741b4c8a6e905bce405a28cf417bba4ccbaadf3dab0111d"}, - {file = "SQLAlchemy-1.4.44-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:393f51a09778e8984d735b59a810731394308b4038acdb1635397c2865dae2b6"}, - {file = "SQLAlchemy-1.4.44-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7e3b9e01fdbe1ce3a165cc7e1ff52b24813ee79c6df6dee0d1e13888a97817e"}, - {file = "SQLAlchemy-1.4.44-cp36-cp36m-win32.whl", hash = "sha256:6a06c2506c41926d2769f7968759995f2505e31c5b5a0821e43ca5a3ddb0e8ae"}, - {file = "SQLAlchemy-1.4.44-cp36-cp36m-win_amd64.whl", hash = "sha256:3ca21b35b714ce36f4b8d1ee8d15f149db8eb43a472cf71600bf18dae32286e7"}, - {file = "SQLAlchemy-1.4.44-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:3cbdbed8cdcae0f83640a9c44fa02b45a6c61e149c58d45a63c9581aba62850f"}, - {file = "SQLAlchemy-1.4.44-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a22208c1982f1fe2ae82e5e4c3d4a6f2445a7a0d65fb7983a3d7cbbe3983f5a4"}, - {file = "SQLAlchemy-1.4.44-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:d3b9ac11f36ab9a726097fba7c7f6384f0129aedb017f1d4d1d4fce9052a1320"}, - {file = "SQLAlchemy-1.4.44-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d654870a66027af3a26df1372cf7f002e161c6768ebe4c9c6fdc0da331cb5173"}, - {file = "SQLAlchemy-1.4.44-cp37-cp37m-win32.whl", hash = "sha256:0be9b479c5806cece01f1581726573a8d6515f8404e082c375b922c45cfc2a7b"}, - {file = "SQLAlchemy-1.4.44-cp37-cp37m-win_amd64.whl", hash = "sha256:3eba07f740488c3a125f17c092a81eeae24a6c7ec32ac9dbc52bf7afaf0c4f16"}, - {file = "SQLAlchemy-1.4.44-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:ad5f966623905ee33694680dda1b735544c99c7638f216045d21546d3d8c6f5b"}, - {file = "SQLAlchemy-1.4.44-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f68eab46649504eb95be36ca529aea16cd199f080726c28cbdbcbf23d20b2a2"}, - {file = "SQLAlchemy-1.4.44-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:21f3df74a0ab39e1255e94613556e33c1dc3b454059fe0b365ec3bbb9ed82e4a"}, - {file = "SQLAlchemy-1.4.44-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d8080bc51a775627865e0f1dbfc0040ff4ace685f187f6036837e1727ba2ed10"}, - {file = "SQLAlchemy-1.4.44-cp38-cp38-win32.whl", hash = "sha256:b6a337a2643a41476fb6262059b8740f4b9a2ec29bf00ffb18c18c080f6e0aed"}, - {file = "SQLAlchemy-1.4.44-cp38-cp38-win_amd64.whl", hash = "sha256:b737fbeb2f78926d1f59964feb287bbbd050e7904766f87c8ce5cfb86e6d840c"}, - {file = "SQLAlchemy-1.4.44-cp39-cp39-macosx_10_15_x86_64.whl", hash = "sha256:c9aa372b295a36771cffc226b6517df3011a7d146ac22d19fa6a75f1cdf9d7e6"}, - {file = "SQLAlchemy-1.4.44-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:237067ba0ef45a518b64606e1807f7229969ad568288b110ed5f0ca714a3ed3a"}, - {file = "SQLAlchemy-1.4.44-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6d7e1b28342b45f19e3dea7873a9479e4a57e15095a575afca902e517fb89652"}, - {file = "SQLAlchemy-1.4.44-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94c0093678001f5d79f2dcbf3104c54d6c89e41ab50d619494c503a4d3f1aef2"}, - {file = "SQLAlchemy-1.4.44-cp39-cp39-win32.whl", hash = "sha256:7cf7c7adbf4417e3f46fc5a2dbf8395a5a69698217337086888f79700a12e93a"}, - {file = "SQLAlchemy-1.4.44-cp39-cp39-win_amd64.whl", hash = "sha256:d3b6d4588994da73567bb00af9d7224a16c8027865a8aab53ae9be83f9b7cbd1"}, - {file = "SQLAlchemy-1.4.44.tar.gz", hash = "sha256:2dda5f96719ae89b3ec0f1b79698d86eb9aecb1d54e990abb3fdd92c04b46a90"}, + {file = "SQLAlchemy-1.4.46-cp27-cp27m-macosx_10_14_x86_64.whl", hash = "sha256:7001f16a9a8e06488c3c7154827c48455d1c1507d7228d43e781afbc8ceccf6d"}, + {file = "SQLAlchemy-1.4.46-cp27-cp27m-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:c7a46639ba058d320c9f53a81db38119a74b8a7a1884df44d09fbe807d028aaf"}, + {file = "SQLAlchemy-1.4.46-cp27-cp27m-win32.whl", hash = "sha256:c04144a24103135ea0315d459431ac196fe96f55d3213bfd6d39d0247775c854"}, + {file = "SQLAlchemy-1.4.46-cp27-cp27m-win_amd64.whl", hash = "sha256:7b81b1030c42b003fc10ddd17825571603117f848814a344d305262d370e7c34"}, + {file = "SQLAlchemy-1.4.46-cp27-cp27mu-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:939f9a018d2ad04036746e15d119c0428b1e557470361aa798e6e7d7f5875be0"}, + {file = "SQLAlchemy-1.4.46-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:b7f4b6aa6e87991ec7ce0e769689a977776db6704947e562102431474799a857"}, + {file = "SQLAlchemy-1.4.46-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5dbf17ac9a61e7a3f1c7ca47237aac93cabd7f08ad92ac5b96d6f8dea4287fc1"}, + {file = "SQLAlchemy-1.4.46-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:7f8267682eb41a0584cf66d8a697fef64b53281d01c93a503e1344197f2e01fe"}, + {file = "SQLAlchemy-1.4.46-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64cb0ad8a190bc22d2112001cfecdec45baffdf41871de777239da6a28ed74b6"}, + {file = "SQLAlchemy-1.4.46-cp310-cp310-win32.whl", hash = "sha256:5f752676fc126edc1c4af0ec2e4d2adca48ddfae5de46bb40adbd3f903eb2120"}, + {file = "SQLAlchemy-1.4.46-cp310-cp310-win_amd64.whl", hash = "sha256:31de1e2c45e67a5ec1ecca6ec26aefc299dd5151e355eb5199cd9516b57340be"}, + {file = "SQLAlchemy-1.4.46-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:d68e1762997bfebf9e5cf2a9fd0bcf9ca2fdd8136ce7b24bbd3bbfa4328f3e4a"}, + {file = "SQLAlchemy-1.4.46-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d112b0f3c1bc5ff70554a97344625ef621c1bfe02a73c5d97cac91f8cd7a41e"}, + {file = "SQLAlchemy-1.4.46-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69fac0a7054d86b997af12dc23f581cf0b25fb1c7d1fed43257dee3af32d3d6d"}, + {file = "SQLAlchemy-1.4.46-cp311-cp311-win32.whl", hash = "sha256:887865924c3d6e9a473dc82b70977395301533b3030d0f020c38fd9eba5419f2"}, + {file = "SQLAlchemy-1.4.46-cp311-cp311-win_amd64.whl", hash = "sha256:984ee13543a346324319a1fb72b698e521506f6f22dc37d7752a329e9cd00a32"}, + {file = "SQLAlchemy-1.4.46-cp36-cp36m-macosx_10_14_x86_64.whl", hash = "sha256:9167d4227b56591a4cc5524f1b79ccd7ea994f36e4c648ab42ca995d28ebbb96"}, + {file = "SQLAlchemy-1.4.46-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d61e9ecc849d8d44d7f80894ecff4abe347136e9d926560b818f6243409f3c86"}, + {file = "SQLAlchemy-1.4.46-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:3ec187acf85984263299a3f15c34a6c0671f83565d86d10f43ace49881a82718"}, + {file = "SQLAlchemy-1.4.46-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9883f5fae4fd8e3f875adc2add69f8b945625811689a6c65866a35ee9c0aea23"}, + {file = "SQLAlchemy-1.4.46-cp36-cp36m-win32.whl", hash = "sha256:535377e9b10aff5a045e3d9ada8a62d02058b422c0504ebdcf07930599890eb0"}, + {file = "SQLAlchemy-1.4.46-cp36-cp36m-win_amd64.whl", hash = "sha256:18cafdb27834fa03569d29f571df7115812a0e59fd6a3a03ccb0d33678ec8420"}, + {file = "SQLAlchemy-1.4.46-cp37-cp37m-macosx_10_15_x86_64.whl", hash = "sha256:a1ad90c97029cc3ab4ffd57443a20fac21d2ec3c89532b084b073b3feb5abff3"}, + {file = "SQLAlchemy-1.4.46-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4847f4b1d822754e35707db913396a29d874ee77b9c3c3ef3f04d5a9a6209618"}, + {file = "SQLAlchemy-1.4.46-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c5a99282848b6cae0056b85da17392a26b2d39178394fc25700bcf967e06e97a"}, + {file = "SQLAlchemy-1.4.46-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4b1cc7835b39835c75cf7c20c926b42e97d074147c902a9ebb7cf2c840dc4e2"}, + {file = "SQLAlchemy-1.4.46-cp37-cp37m-win32.whl", hash = "sha256:c522e496f9b9b70296a7675272ec21937ccfc15da664b74b9f58d98a641ce1b6"}, + {file = "SQLAlchemy-1.4.46-cp37-cp37m-win_amd64.whl", hash = "sha256:ae067ab639fa499f67ded52f5bc8e084f045d10b5ac7bb928ae4ca2b6c0429a5"}, + {file = "SQLAlchemy-1.4.46-cp38-cp38-macosx_10_15_x86_64.whl", hash = "sha256:e3c1808008124850115a3f7e793a975cfa5c8a26ceeeb9ff9cbb4485cac556df"}, + {file = "SQLAlchemy-1.4.46-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4d164df3d83d204c69f840da30b292ac7dc54285096c6171245b8d7807185aa"}, + {file = "SQLAlchemy-1.4.46-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:b33ffbdbbf5446cf36cd4cc530c9d9905d3c2fe56ed09e25c22c850cdb9fac92"}, + {file = "SQLAlchemy-1.4.46-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d94682732d1a0def5672471ba42a29ff5e21bb0aae0afa00bb10796fc1e28dd"}, + {file = "SQLAlchemy-1.4.46-cp38-cp38-win32.whl", hash = "sha256:f8cb80fe8d14307e4124f6fad64dfd87ab749c9d275f82b8b4ec84c84ecebdbe"}, + {file = "SQLAlchemy-1.4.46-cp38-cp38-win_amd64.whl", hash = "sha256:07e48cbcdda6b8bc7a59d6728bd3f5f574ffe03f2c9fb384239f3789c2d95c2e"}, + {file = "SQLAlchemy-1.4.46-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:1b1e5e96e2789d89f023d080bee432e2fef64d95857969e70d3cadec80bd26f0"}, + {file = "SQLAlchemy-1.4.46-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a3714e5b33226131ac0da60d18995a102a17dddd42368b7bdd206737297823ad"}, + {file = "SQLAlchemy-1.4.46-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:955162ad1a931fe416eded6bb144ba891ccbf9b2e49dc7ded39274dd9c5affc5"}, + {file = "SQLAlchemy-1.4.46-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6e4cb5c63f705c9d546a054c60d326cbde7421421e2d2565ce3e2eee4e1a01f"}, + {file = "SQLAlchemy-1.4.46-cp39-cp39-win32.whl", hash = "sha256:51e1ba2884c6a2b8e19109dc08c71c49530006c1084156ecadfaadf5f9b8b053"}, + {file = "SQLAlchemy-1.4.46-cp39-cp39-win_amd64.whl", hash = "sha256:315676344e3558f1f80d02535f410e80ea4e8fddba31ec78fe390eff5fb8f466"}, + {file = "SQLAlchemy-1.4.46.tar.gz", hash = "sha256:6913b8247d8a292ef8315162a51931e2b40ce91681f1b6f18f697045200c4a30"}, ] stevedore = [ {file = "stevedore-4.1.1-py3-none-any.whl", hash = "sha256:aa6436565c069b2946fe4ebff07f5041e0c8bf18c7376dd29edf80cf7d524e4e"}, @@ -4888,25 +5064,29 @@ tensorflow-estimator = [ {file = "tensorflow_estimator-2.10.0-py2.py3-none-any.whl", hash = "sha256:f324ea17cd57f16e33bf188711d5077e6b2e5f5a12c328d6e01a07b23888edcd"}, ] tensorflow-io-gcs-filesystem = [ - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:22753dc28c949bfaf29b573ee376370762c88d80330fe95cfb291261eb5e927a"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:52988659f405166df79905e9859bc84ae2a71e3ff61522ba32a95e4dce8e66d2"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp310-cp310-win_amd64.whl", hash = "sha256:698d7f89e09812b9afeb47c3860797343a22f997c64ab9dab98132c61daa8a7d"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:bbf245883aa52ec687b66d0fcbe0f5f0a92d98c0b1c53e6a736039a3548d29a1"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:6d95f306ff225c5053fd06deeab3e3a2716357923cb40c44d566c11be779caa3"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp311-cp311-win_amd64.whl", hash = "sha256:5fbef5836e70026245d8d9e692c44dae2c6dbc208c743d01f5b7a2978d6b6bc6"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:00cf6a92f1f9f90b2ba2d728870bcd2a70b116316d0817ab0b91dd390c25b3fd"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f76cbe1a784841c223f6861e5f6c7e53aa6232cb626d57e76881a0638c365de6"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp37-cp37m-win_amd64.whl", hash = "sha256:c5d99f56c12a349905ff684142e4d2df06ae68ecf50c4aad5449a5f81731d858"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:b6e2d275020fb4d1a952cd3fa546483f4e46ad91d64e90d3458e5ca3d12f6477"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6670e0da16c884267e896ea5c3334d6fd319bd6ff7cf917043a9f3b2babb1b3"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp38-cp38-win_amd64.whl", hash = "sha256:bfed720fc691d3f45802a7bed420716805aef0939c11cebf25798906201f626e"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:cc062ce13ec95fb64b1fd426818a6d2b0e5be9692bc0e43a19cce115b6da4336"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:366e1eff8dbd6b64333d7061e2a8efd081ae4742614f717ced08d8cc9379eb50"}, - {file = "tensorflow_io_gcs_filesystem-0.28.0-cp39-cp39-win_amd64.whl", hash = "sha256:9484893779324b2d34874b0aacf3b824eb4f22d782e75df029cbccab2e607974"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp310-cp310-macosx_10_14_x86_64.whl", hash = "sha256:d8eb242b118721c8a23d598af69c25ad450c1e18bd1cd7ef7e8274ae0e7781ca"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:c826154e0c6bd9a1a0395a1b985976ac255a3d79d147d3eb10343b6d15710267"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9db8dc3f2c4ddfdf02f33a492600be35d0bca085aa12121a5feef173e6b5914e"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp310-cp310-win_amd64.whl", hash = "sha256:7ff4b18f1a74e1a56603fa204cf82b1af5b24ad18c579692c487b4fb4a2baec8"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp311-cp311-macosx_10_14_x86_64.whl", hash = "sha256:571fc6ba4960f3a749a362d487b60e248eb43f0abcfb0ace4f04ddb91ae04faf"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp311-cp311-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:a6297b68677a17ce388594fcf76c70718b837dba59e858280898521a858a8e4c"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp311-cp311-win_amd64.whl", hash = "sha256:ff107ac28d56bdd4c50ac69b18cc237d3a9342be8c2d11e458e19a0fac31fb9d"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp37-cp37m-macosx_10_14_x86_64.whl", hash = "sha256:6617054b8ac75cf2f19ec24ddf3a696a500758d1f755b847f3ba42aec6ad7b9e"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp37-cp37m-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:ec87a475a4024bc8c4427c6cbeba009fd76b1b95ad764755fdf958c234470acd"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:931e225b406d67d0a8a8f549242a0a1d173a02e0179d86b88351de19c393e06f"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp37-cp37m-win_amd64.whl", hash = "sha256:975b674d7816c08cf47a50cfc5b73a36ca0b3ef32d8e37a788b7cae38b9e1549"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp38-cp38-macosx_10_14_x86_64.whl", hash = "sha256:e114d672fc565985468d6a26a1e54e2f0002ab76c711f49a56d948ad05718c80"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp38-cp38-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:630372fe2f1c05b57c4ad0c9050b570bc67e474ec513cf046832f8889002fab7"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d0736853c35030e027c0f9577f07355e5cd21463321008ef4ee8b390f913fdd6"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp38-cp38-win_amd64.whl", hash = "sha256:049b21d5056f57952b0450c2bac9c2bf2fabc4bbb571470abf0cba4243a41dfe"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp39-cp39-macosx_10_14_x86_64.whl", hash = "sha256:655af38843d83ef322db190d162e21060ca143935a04f4b64b29f60c1c4dc073"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:8543e14b2f32771e7a7eca7a3d34a8fbdf1f4e9ae7d346bcacff011f43c693cb"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ef5656932c1f4d4e4d366cdae469562344ecd38cd51de70ebf60e68ee0834da1"}, + {file = "tensorflow_io_gcs_filesystem-0.29.0-cp39-cp39-win_amd64.whl", hash = "sha256:bcb7405474ed136b3a2e2181a732968c52ba9f35a03fe296acc9f1ec4e7044ee"}, ] termcolor = [ - {file = "termcolor-2.1.1-py3-none-any.whl", hash = "sha256:fa852e957f97252205e105dd55bbc23b419a70fec0085708fc0515e399f304fd"}, - {file = "termcolor-2.1.1.tar.gz", hash = "sha256:67cee2009adc6449c650f6bcf3bdeed00c8ba53a8cda5362733c53e0a39fb70b"}, + {file = "termcolor-2.2.0-py3-none-any.whl", hash = "sha256:91ddd848e7251200eac969846cbae2dacd7d71c2871e92733289e7e3666f48e7"}, + {file = "termcolor-2.2.0.tar.gz", hash = "sha256:dfc8ac3f350788f23b2947b3e6cfa5a53b630b612e6cd8965a015a776020b99a"}, ] tifffile = [ {file = "tifffile-2022.10.10-py3-none-any.whl", hash = "sha256:87f3aee8a0d06b74655269a105de75c1958a24653e1930d523eb516100043503"}, @@ -4933,8 +5113,8 @@ toolz = [ {file = "toolz-0.12.0.tar.gz", hash = "sha256:88c570861c440ee3f2f6037c4654613228ff40c93a6c25e0eba70d17282c6194"}, ] tox = [ - {file = "tox-3.27.1-py2.py3-none-any.whl", hash = "sha256:f52ca66eae115fcfef0e77ef81fd107133d295c97c52df337adedb8dfac6ab84"}, - {file = "tox-3.27.1.tar.gz", hash = "sha256:b2a920e35a668cc06942ffd1cf3a4fb221a4d909ca72191fb6d84b0b18a7be04"}, + {file = "tox-3.28.0-py2.py3-none-any.whl", hash = "sha256:57b5ab7e8bb3074edc3c0c0b4b192a4f3799d3723b2c5b76f1fa9f2d40316eea"}, + {file = "tox-3.28.0.tar.gz", hash = "sha256:d0d28f3fe6d6d7195c27f8b054c3e99d5451952b54abdae673b71609a581f640"}, ] types-certifi = [ {file = "types-certifi-2021.10.8.3.tar.gz", hash = "sha256:72cf7798d165bc0b76e1c10dd1ea3097c7063c42c21d664523b928e88b554a4f"}, @@ -4944,17 +5124,21 @@ types-click = [ {file = "types-click-7.1.8.tar.gz", hash = "sha256:b6604968be6401dc516311ca50708a0a28baa7a0cb840efd7412f0dbbff4e092"}, {file = "types_click-7.1.8-py3-none-any.whl", hash = "sha256:8cb030a669e2e927461be9827375f83c16b8178c365852c060a34e24871e7e81"}, ] +types-docutils = [ + {file = "types-docutils-0.19.1.1.tar.gz", hash = "sha256:be0a51ba1c7dd215d9d2df66d6845e63c1009b4bbf4c5beb87a0d9745cdba962"}, + {file = "types_docutils-0.19.1.1-py3-none-any.whl", hash = "sha256:a024cada35f0c13cc45eb0b68a102719018a634013690b7fef723bcbfadbd1f1"}, +] types-pyyaml = [ {file = "types-PyYAML-6.0.12.2.tar.gz", hash = "sha256:6840819871c92deebe6a2067fb800c11b8a063632eb4e3e755914e7ab3604e83"}, {file = "types_PyYAML-6.0.12.2-py3-none-any.whl", hash = "sha256:1e94e80aafee07a7e798addb2a320e32956a373f376655128ae20637adb2655b"}, ] types-requests = [ - {file = "types-requests-2.28.11.5.tar.gz", hash = "sha256:a7df37cc6fb6187a84097da951f8e21d335448aa2501a6b0a39cbd1d7ca9ee2a"}, - {file = "types_requests-2.28.11.5-py3-none-any.whl", hash = "sha256:091d4a5a33c1b4f20d8b1b952aa8fa27a6e767c44c3cf65e56580df0b05fd8a9"}, + {file = "types-requests-2.28.11.7.tar.gz", hash = "sha256:0ae38633734990d019b80f5463dfa164ebd3581998ac8435f526da6fe4d598c3"}, + {file = "types_requests-2.28.11.7-py3-none-any.whl", hash = "sha256:b6a2fca8109f4fdba33052f11ed86102bddb2338519e1827387137fefc66a98b"}, ] types-setuptools = [ - {file = "types-setuptools-65.6.0.1.tar.gz", hash = "sha256:a03cf72f336929c9405f485dd90baef31a401776675f785f69a5a519f0b099ca"}, - {file = "types_setuptools-65.6.0.1-py3-none-any.whl", hash = "sha256:c957599502195ab98e90f0560466fa963f6a23373905e6d4e1772dbfaf1e44b7"}, + {file = "types-setuptools-65.7.0.1.tar.gz", hash = "sha256:fe89f2d15caee7015708bed8fb68ff578b4d96f9a64b6e2010dad42bb9cc82a6"}, + {file = "types_setuptools-65.7.0.1-py3-none-any.whl", hash = "sha256:667597f0773464f0259524d349d37503bffefc9d0d3fae621e4493d2fd7b1602"}, ] types-urllib3 = [ {file = "types-urllib3-1.26.25.4.tar.gz", hash = "sha256:eec5556428eec862b1ac578fb69aab3877995a99ffec9e5a12cf7fbd0cc9daee"}, @@ -4969,46 +5153,49 @@ uritemplate = [ {file = "uritemplate-4.1.1.tar.gz", hash = "sha256:4346edfc5c3b79f694bccd6d6099a322bbeb628dbf2cd86eea55a456ce5124f0"}, ] urllib3 = [ - {file = "urllib3-1.26.13-py2.py3-none-any.whl", hash = "sha256:47cc05d99aaa09c9e72ed5809b60e7ba354e64b59c9c173ac3018642d8bb41fc"}, - {file = "urllib3-1.26.13.tar.gz", hash = "sha256:c083dd0dce68dbfbe1129d5271cb90f9447dea7d52097c6e0126120c521ddea8"}, + {file = "urllib3-1.26.14-py2.py3-none-any.whl", hash = "sha256:75edcdc2f7d85b137124a6c3c9fc3933cdeaa12ecb9a6a959f22797a0feca7e1"}, + {file = "urllib3-1.26.14.tar.gz", hash = "sha256:076907bf8fd355cde77728471316625a4d2f7e713c125f51953bb5b3eecf4f72"}, ] varint = [ {file = "varint-1.0.2.tar.gz", hash = "sha256:a6ecc02377ac5ee9d65a6a8ad45c9ff1dac8ccee19400a5950fb51d594214ca5"}, ] virtualenv = [ - {file = "virtualenv-20.16.7-py3-none-any.whl", hash = "sha256:efd66b00386fdb7dbe4822d172303f40cd05e50e01740b19ea42425cbe653e29"}, - {file = "virtualenv-20.16.7.tar.gz", hash = "sha256:8691e3ff9387f743e00f6bb20f70121f5e4f596cae754531f2b3b3a1b1ac696e"}, + {file = "virtualenv-20.17.1-py3-none-any.whl", hash = "sha256:ce3b1684d6e1a20a3e5ed36795a97dfc6af29bc3970ca8dab93e11ac6094b3c4"}, + {file = "virtualenv-20.17.1.tar.gz", hash = "sha256:f8b927684efc6f1cc206c9db297a570ab9ad0e51c16fa9e45487d36d1905c058"}, ] vulture = [ {file = "vulture-2.6-py2.py3-none-any.whl", hash = "sha256:e792e903ccc063ec4873a8979dcf11b51ea3d65a2d3b31c113d47be48f0cdcae"}, {file = "vulture-2.6.tar.gz", hash = "sha256:2515fa848181001dc8a73aba6a01a1a17406f5d372f24ec7f7191866f9f4997e"}, ] watchdog = [ - {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a735a990a1095f75ca4f36ea2ef2752c99e6ee997c46b0de507ba40a09bf7330"}, - {file = "watchdog-2.1.9-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:6b17d302850c8d412784d9246cfe8d7e3af6bcd45f958abb2d08a6f8bedf695d"}, - {file = "watchdog-2.1.9-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ee3e38a6cc050a8830089f79cbec8a3878ec2fe5160cdb2dc8ccb6def8552658"}, - {file = "watchdog-2.1.9-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:64a27aed691408a6abd83394b38503e8176f69031ca25d64131d8d640a307591"}, - {file = "watchdog-2.1.9-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:195fc70c6e41237362ba720e9aaf394f8178bfc7fa68207f112d108edef1af33"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:bfc4d351e6348d6ec51df007432e6fe80adb53fd41183716017026af03427846"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:8250546a98388cbc00c3ee3cc5cf96799b5a595270dfcfa855491a64b86ef8c3"}, - {file = "watchdog-2.1.9-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:117ffc6ec261639a0209a3252546b12800670d4bf5f84fbd355957a0595fe654"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:97f9752208f5154e9e7b76acc8c4f5a58801b338de2af14e7e181ee3b28a5d39"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:247dcf1df956daa24828bfea5a138d0e7a7c98b1a47cf1fa5b0c3c16241fcbb7"}, - {file = "watchdog-2.1.9-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:226b3c6c468ce72051a4c15a4cc2ef317c32590d82ba0b330403cafd98a62cfd"}, - {file = "watchdog-2.1.9-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:d9820fe47c20c13e3c9dd544d3706a2a26c02b2b43c993b62fcd8011bcc0adb3"}, - {file = "watchdog-2.1.9-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:70af927aa1613ded6a68089a9262a009fbdf819f46d09c1a908d4b36e1ba2b2d"}, - {file = "watchdog-2.1.9-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:ed80a1628cee19f5cfc6bb74e173f1b4189eb532e705e2a13e3250312a62e0c9"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_aarch64.whl", hash = "sha256:9f05a5f7c12452f6a27203f76779ae3f46fa30f1dd833037ea8cbc2887c60213"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_armv7l.whl", hash = "sha256:255bb5758f7e89b1a13c05a5bceccec2219f8995a3a4c4d6968fe1de6a3b2892"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_i686.whl", hash = "sha256:d3dda00aca282b26194bdd0adec21e4c21e916956d972369359ba63ade616153"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64.whl", hash = "sha256:186f6c55abc5e03872ae14c2f294a153ec7292f807af99f57611acc8caa75306"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:083171652584e1b8829581f965b9b7723ca5f9a2cd7e20271edf264cfd7c1412"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_s390x.whl", hash = "sha256:b530ae007a5f5d50b7fbba96634c7ee21abec70dc3e7f0233339c81943848dc1"}, - {file = "watchdog-2.1.9-py3-none-manylinux2014_x86_64.whl", hash = "sha256:4f4e1c4aa54fb86316a62a87b3378c025e228178d55481d30d857c6c438897d6"}, - {file = "watchdog-2.1.9-py3-none-win32.whl", hash = "sha256:5952135968519e2447a01875a6f5fc8c03190b24d14ee52b0f4b1682259520b1"}, - {file = "watchdog-2.1.9-py3-none-win_amd64.whl", hash = "sha256:7a833211f49143c3d336729b0020ffd1274078e94b0ae42e22f596999f50279c"}, - {file = "watchdog-2.1.9-py3-none-win_ia64.whl", hash = "sha256:ad576a565260d8f99d97f2e64b0f97a48228317095908568a9d5c786c829d428"}, - {file = "watchdog-2.1.9.tar.gz", hash = "sha256:43ce20ebb36a51f21fa376f76d1d4692452b2527ccd601950d69ed36b9e21609"}, + {file = "watchdog-2.2.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a09483249d25cbdb4c268e020cb861c51baab2d1affd9a6affc68ffe6a231260"}, + {file = "watchdog-2.2.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:5100eae58133355d3ca6c1083a33b81355c4f452afa474c2633bd2fbbba398b3"}, + {file = "watchdog-2.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e618a4863726bc7a3c64f95c218437f3349fb9d909eb9ea3a1ed3b567417c661"}, + {file = "watchdog-2.2.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:102a60093090fc3ff76c983367b19849b7cc24ec414a43c0333680106e62aae1"}, + {file = "watchdog-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:748ca797ff59962e83cc8e4b233f87113f3cf247c23e6be58b8a2885c7337aa3"}, + {file = "watchdog-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6ccd8d84b9490a82b51b230740468116b8205822ea5fdc700a553d92661253a3"}, + {file = "watchdog-2.2.1-cp36-cp36m-macosx_10_9_x86_64.whl", hash = "sha256:6e01d699cd260d59b84da6bda019dce0a3353e3fcc774408ae767fe88ee096b7"}, + {file = "watchdog-2.2.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:8586d98c494690482c963ffb24c49bf9c8c2fe0589cec4dc2f753b78d1ec301d"}, + {file = "watchdog-2.2.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:adaf2ece15f3afa33a6b45f76b333a7da9256e1360003032524d61bdb4c422ae"}, + {file = "watchdog-2.2.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:83a7cead445008e880dbde833cb9e5cc7b9a0958edb697a96b936621975f15b9"}, + {file = "watchdog-2.2.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8ac23ff2c2df4471a61af6490f847633024e5aa120567e08d07af5718c9d092"}, + {file = "watchdog-2.2.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:d0f29fd9f3f149a5277929de33b4f121a04cf84bb494634707cfa8ea8ae106a8"}, + {file = "watchdog-2.2.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:967636031fa4c4955f0f3f22da3c5c418aa65d50908d31b73b3b3ffd66d60640"}, + {file = "watchdog-2.2.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:96cbeb494e6cbe3ae6aacc430e678ce4b4dd3ae5125035f72b6eb4e5e9eb4f4e"}, + {file = "watchdog-2.2.1-pp37-pypy37_pp73-macosx_10_9_x86_64.whl", hash = "sha256:61fdb8e9c57baf625e27e1420e7ca17f7d2023929cd0065eb79c83da1dfbeacd"}, + {file = "watchdog-2.2.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:4cb5ecc332112017fbdb19ede78d92e29a8165c46b68a0b8ccbd0a154f196d5e"}, + {file = "watchdog-2.2.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a480d122740debf0afac4ddd583c6c0bb519c24f817b42ed6f850e2f6f9d64a8"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_aarch64.whl", hash = "sha256:978a1aed55de0b807913b7482d09943b23a2d634040b112bdf31811a422f6344"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_armv7l.whl", hash = "sha256:8c28c23972ec9c524967895ccb1954bc6f6d4a557d36e681a36e84368660c4ce"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_i686.whl", hash = "sha256:c27d8c1535fd4474e40a4b5e01f4ba6720bac58e6751c667895cbc5c8a7af33c"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_ppc64.whl", hash = "sha256:d6b87477752bd86ac5392ecb9eeed92b416898c30bd40c7e2dd03c3146105646"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:cece1aa596027ff56369f0b50a9de209920e1df9ac6d02c7f9e5d8162eb4f02b"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_s390x.whl", hash = "sha256:8b5cde14e5c72b2df5d074774bdff69e9b55da77e102a91f36ef26ca35f9819c"}, + {file = "watchdog-2.2.1-py3-none-manylinux2014_x86_64.whl", hash = "sha256:e038be858425c4f621900b8ff1a3a1330d9edcfeaa1c0468aeb7e330fb87693e"}, + {file = "watchdog-2.2.1-py3-none-win32.whl", hash = "sha256:bc43c1b24d2f86b6e1cc15f68635a959388219426109233e606517ff7d0a5a73"}, + {file = "watchdog-2.2.1-py3-none-win_amd64.whl", hash = "sha256:17f1708f7410af92ddf591e94ae71a27a13974559e72f7e9fde3ec174b26ba2e"}, + {file = "watchdog-2.2.1-py3-none-win_ia64.whl", hash = "sha256:195ab1d9d611a4c1e5311cbf42273bc541e18ea8c32712f2fb703cfc6ff006f9"}, + {file = "watchdog-2.2.1.tar.gz", hash = "sha256:cdcc23c9528601a8a293eb4369cbd14f6b4f34f07ae8769421252e9c22718b6f"}, ] web3 = [ {file = "web3-5.31.1-py3-none-any.whl", hash = "sha256:9c2e72688a5b35881062ef4f9da01c4a1e922afeb3134cfc92f6b4b95bb7df06"}, @@ -5132,65 +5319,80 @@ yapf = [ {file = "yapf-0.32.0.tar.gz", hash = "sha256:a3f5085d37ef7e3e004c4ba9f9b3e40c54ff1901cd111f05145ae313a7c67d1b"}, ] yarl = [ - {file = "yarl-1.8.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:abc06b97407868ef38f3d172762f4069323de52f2b70d133d096a48d72215d28"}, - {file = "yarl-1.8.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:07b21e274de4c637f3e3b7104694e53260b5fc10d51fb3ec5fed1da8e0f754e3"}, - {file = "yarl-1.8.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9de955d98e02fab288c7718662afb33aab64212ecb368c5dc866d9a57bf48880"}, - {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ec362167e2c9fd178f82f252b6d97669d7245695dc057ee182118042026da40"}, - {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:20df6ff4089bc86e4a66e3b1380460f864df3dd9dccaf88d6b3385d24405893b"}, - {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5999c4662631cb798496535afbd837a102859568adc67d75d2045e31ec3ac497"}, - {file = "yarl-1.8.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed19b74e81b10b592084a5ad1e70f845f0aacb57577018d31de064e71ffa267a"}, - {file = "yarl-1.8.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1e4808f996ca39a6463f45182e2af2fae55e2560be586d447ce8016f389f626f"}, - {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2d800b9c2eaf0684c08be5f50e52bfa2aa920e7163c2ea43f4f431e829b4f0fd"}, - {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6628d750041550c5d9da50bb40b5cf28a2e63b9388bac10fedd4f19236ef4957"}, - {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:f5af52738e225fcc526ae64071b7e5342abe03f42e0e8918227b38c9aa711e28"}, - {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:76577f13333b4fe345c3704811ac7509b31499132ff0181f25ee26619de2c843"}, - {file = "yarl-1.8.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:0c03f456522d1ec815893d85fccb5def01ffaa74c1b16ff30f8aaa03eb21e453"}, - {file = "yarl-1.8.1-cp310-cp310-win32.whl", hash = "sha256:ea30a42dc94d42f2ba4d0f7c0ffb4f4f9baa1b23045910c0c32df9c9902cb272"}, - {file = "yarl-1.8.1-cp310-cp310-win_amd64.whl", hash = "sha256:9130ddf1ae9978abe63808b6b60a897e41fccb834408cde79522feb37fb72fb0"}, - {file = "yarl-1.8.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:0ab5a138211c1c366404d912824bdcf5545ccba5b3ff52c42c4af4cbdc2c5035"}, - {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a0fb2cb4204ddb456a8e32381f9a90000429489a25f64e817e6ff94879d432fc"}, - {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:85cba594433915d5c9a0d14b24cfba0339f57a2fff203a5d4fd070e593307d0b"}, - {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1ca7e596c55bd675432b11320b4eacc62310c2145d6801a1f8e9ad160685a231"}, - {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0f77539733e0ec2475ddcd4e26777d08996f8cd55d2aef82ec4d3896687abda"}, - {file = "yarl-1.8.1-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29e256649f42771829974e742061c3501cc50cf16e63f91ed8d1bf98242e5507"}, - {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:7fce6cbc6c170ede0221cc8c91b285f7f3c8b9fe28283b51885ff621bbe0f8ee"}, - {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:59ddd85a1214862ce7c7c66457f05543b6a275b70a65de366030d56159a979f0"}, - {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:12768232751689c1a89b0376a96a32bc7633c08da45ad985d0c49ede691f5c0d"}, - {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:b19255dde4b4f4c32e012038f2c169bb72e7f081552bea4641cab4d88bc409dd"}, - {file = "yarl-1.8.1-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:6c8148e0b52bf9535c40c48faebb00cb294ee577ca069d21bd5c48d302a83780"}, - {file = "yarl-1.8.1-cp37-cp37m-win32.whl", hash = "sha256:de839c3a1826a909fdbfe05f6fe2167c4ab033f1133757b5936efe2f84904c07"}, - {file = "yarl-1.8.1-cp37-cp37m-win_amd64.whl", hash = "sha256:dd032e8422a52e5a4860e062eb84ac94ea08861d334a4bcaf142a63ce8ad4802"}, - {file = "yarl-1.8.1-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:19cd801d6f983918a3f3a39f3a45b553c015c5aac92ccd1fac619bd74beece4a"}, - {file = "yarl-1.8.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6347f1a58e658b97b0a0d1ff7658a03cb79bdbda0331603bed24dd7054a6dea1"}, - {file = "yarl-1.8.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:7c0da7e44d0c9108d8b98469338705e07f4bb7dab96dbd8fa4e91b337db42548"}, - {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5587bba41399854703212b87071c6d8638fa6e61656385875f8c6dff92b2e461"}, - {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:31a9a04ecccd6b03e2b0e12e82131f1488dea5555a13a4d32f064e22a6003cfe"}, - {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:205904cffd69ae972a1707a1bd3ea7cded594b1d773a0ce66714edf17833cdae"}, - {file = "yarl-1.8.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ea513a25976d21733bff523e0ca836ef1679630ef4ad22d46987d04b372d57fc"}, - {file = "yarl-1.8.1-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d0b51530877d3ad7a8d47b2fff0c8df3b8f3b8deddf057379ba50b13df2a5eae"}, - {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:d2b8f245dad9e331540c350285910b20dd913dc86d4ee410c11d48523c4fd546"}, - {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:ab2a60d57ca88e1d4ca34a10e9fb4ab2ac5ad315543351de3a612bbb0560bead"}, - {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:449c957ffc6bc2309e1fbe67ab7d2c1efca89d3f4912baeb8ead207bb3cc1cd4"}, - {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:a165442348c211b5dea67c0206fc61366212d7082ba8118c8c5c1c853ea4d82e"}, - {file = "yarl-1.8.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:b3ded839a5c5608eec8b6f9ae9a62cb22cd037ea97c627f38ae0841a48f09eae"}, - {file = "yarl-1.8.1-cp38-cp38-win32.whl", hash = "sha256:c1445a0c562ed561d06d8cbc5c8916c6008a31c60bc3655cdd2de1d3bf5174a0"}, - {file = "yarl-1.8.1-cp38-cp38-win_amd64.whl", hash = "sha256:56c11efb0a89700987d05597b08a1efcd78d74c52febe530126785e1b1a285f4"}, - {file = "yarl-1.8.1-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:e80ed5a9939ceb6fda42811542f31c8602be336b1fb977bccb012e83da7e4936"}, - {file = "yarl-1.8.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:6afb336e23a793cd3b6476c30f030a0d4c7539cd81649683b5e0c1b0ab0bf350"}, - {file = "yarl-1.8.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:4c322cbaa4ed78a8aac89b2174a6df398faf50e5fc12c4c191c40c59d5e28357"}, - {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fae37373155f5ef9b403ab48af5136ae9851151f7aacd9926251ab26b953118b"}, - {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5395da939ffa959974577eff2cbfc24b004a2fb6c346918f39966a5786874e54"}, - {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:076eede537ab978b605f41db79a56cad2e7efeea2aa6e0fa8f05a26c24a034fb"}, - {file = "yarl-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d1a50e461615747dd93c099f297c1994d472b0f4d2db8a64e55b1edf704ec1c"}, - {file = "yarl-1.8.1-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7de89c8456525650ffa2bb56a3eee6af891e98f498babd43ae307bd42dca98f6"}, - {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:4a88510731cd8d4befaba5fbd734a7dd914de5ab8132a5b3dde0bbd6c9476c64"}, - {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:2d93a049d29df172f48bcb09acf9226318e712ce67374f893b460b42cc1380ae"}, - {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:21ac44b763e0eec15746a3d440f5e09ad2ecc8b5f6dcd3ea8cb4773d6d4703e3"}, - {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:d0272228fabe78ce00a3365ffffd6f643f57a91043e119c289aaba202f4095b0"}, - {file = "yarl-1.8.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:99449cd5366fe4608e7226c6cae80873296dfa0cde45d9b498fefa1de315a09e"}, - {file = "yarl-1.8.1-cp39-cp39-win32.whl", hash = "sha256:8b0af1cf36b93cee99a31a545fe91d08223e64390c5ecc5e94c39511832a4bb6"}, - {file = "yarl-1.8.1-cp39-cp39-win_amd64.whl", hash = "sha256:de49d77e968de6626ba7ef4472323f9d2e5a56c1d85b7c0e2a190b2173d3b9be"}, - {file = "yarl-1.8.1.tar.gz", hash = "sha256:af887845b8c2e060eb5605ff72b6f2dd2aab7a761379373fd89d314f4752abbf"}, + {file = "yarl-1.8.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:bb81f753c815f6b8e2ddd2eef3c855cf7da193b82396ac013c661aaa6cc6b0a5"}, + {file = "yarl-1.8.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:47d49ac96156f0928f002e2424299b2c91d9db73e08c4cd6742923a086f1c863"}, + {file = "yarl-1.8.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:3fc056e35fa6fba63248d93ff6e672c096f95f7836938241ebc8260e062832fe"}, + {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:58a3c13d1c3005dbbac5c9f0d3210b60220a65a999b1833aa46bd6677c69b08e"}, + {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:10b08293cda921157f1e7c2790999d903b3fd28cd5c208cf8826b3b508026996"}, + {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:de986979bbd87272fe557e0a8fcb66fd40ae2ddfe28a8b1ce4eae22681728fef"}, + {file = "yarl-1.8.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c4fcfa71e2c6a3cb568cf81aadc12768b9995323186a10827beccf5fa23d4f8"}, + {file = "yarl-1.8.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae4d7ff1049f36accde9e1ef7301912a751e5bae0a9d142459646114c70ecba6"}, + {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:bf071f797aec5b96abfc735ab97da9fd8f8768b43ce2abd85356a3127909d146"}, + {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:74dece2bfc60f0f70907c34b857ee98f2c6dd0f75185db133770cd67300d505f"}, + {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_ppc64le.whl", hash = "sha256:df60a94d332158b444301c7f569659c926168e4d4aad2cfbf4bce0e8fb8be826"}, + {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:63243b21c6e28ec2375f932a10ce7eda65139b5b854c0f6b82ed945ba526bff3"}, + {file = "yarl-1.8.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:cfa2bbca929aa742b5084fd4663dd4b87c191c844326fcb21c3afd2d11497f80"}, + {file = "yarl-1.8.2-cp310-cp310-win32.whl", hash = "sha256:b05df9ea7496df11b710081bd90ecc3a3db6adb4fee36f6a411e7bc91a18aa42"}, + {file = "yarl-1.8.2-cp310-cp310-win_amd64.whl", hash = "sha256:24ad1d10c9db1953291f56b5fe76203977f1ed05f82d09ec97acb623a7976574"}, + {file = "yarl-1.8.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:2a1fca9588f360036242f379bfea2b8b44cae2721859b1c56d033adfd5893634"}, + {file = "yarl-1.8.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f37db05c6051eff17bc832914fe46869f8849de5b92dc4a3466cd63095d23dfd"}, + {file = "yarl-1.8.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:77e913b846a6b9c5f767b14dc1e759e5aff05502fe73079f6f4176359d832581"}, + {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0978f29222e649c351b173da2b9b4665ad1feb8d1daa9d971eb90df08702668a"}, + {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:388a45dc77198b2460eac0aca1efd6a7c09e976ee768b0d5109173e521a19daf"}, + {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2305517e332a862ef75be8fad3606ea10108662bc6fe08509d5ca99503ac2aee"}, + {file = "yarl-1.8.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:42430ff511571940d51e75cf42f1e4dbdded477e71c1b7a17f4da76c1da8ea76"}, + {file = "yarl-1.8.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3150078118f62371375e1e69b13b48288e44f6691c1069340081c3fd12c94d5b"}, + {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:c15163b6125db87c8f53c98baa5e785782078fbd2dbeaa04c6141935eb6dab7a"}, + {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:4d04acba75c72e6eb90745447d69f84e6c9056390f7a9724605ca9c56b4afcc6"}, + {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_ppc64le.whl", hash = "sha256:e7fd20d6576c10306dea2d6a5765f46f0ac5d6f53436217913e952d19237efc4"}, + {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:75c16b2a900b3536dfc7014905a128a2bea8fb01f9ee26d2d7d8db0a08e7cb2c"}, + {file = "yarl-1.8.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:6d88056a04860a98341a0cf53e950e3ac9f4e51d1b6f61a53b0609df342cc8b2"}, + {file = "yarl-1.8.2-cp311-cp311-win32.whl", hash = "sha256:fb742dcdd5eec9f26b61224c23baea46c9055cf16f62475e11b9b15dfd5c117b"}, + {file = "yarl-1.8.2-cp311-cp311-win_amd64.whl", hash = "sha256:8c46d3d89902c393a1d1e243ac847e0442d0196bbd81aecc94fcebbc2fd5857c"}, + {file = "yarl-1.8.2-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ceff9722e0df2e0a9e8a79c610842004fa54e5b309fe6d218e47cd52f791d7ef"}, + {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f6b4aca43b602ba0f1459de647af954769919c4714706be36af670a5f44c9c1"}, + {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1684a9bd9077e922300ecd48003ddae7a7474e0412bea38d4631443a91d61077"}, + {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ebb78745273e51b9832ef90c0898501006670d6e059f2cdb0e999494eb1450c2"}, + {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3adeef150d528ded2a8e734ebf9ae2e658f4c49bf413f5f157a470e17a4a2e89"}, + {file = "yarl-1.8.2-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57a7c87927a468e5a1dc60c17caf9597161d66457a34273ab1760219953f7f4c"}, + {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_aarch64.whl", hash = "sha256:efff27bd8cbe1f9bd127e7894942ccc20c857aa8b5a0327874f30201e5ce83d0"}, + {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_i686.whl", hash = "sha256:a783cd344113cb88c5ff7ca32f1f16532a6f2142185147822187913eb989f739"}, + {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_ppc64le.whl", hash = "sha256:705227dccbe96ab02c7cb2c43e1228e2826e7ead880bb19ec94ef279e9555b5b"}, + {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_s390x.whl", hash = "sha256:34c09b43bd538bf6c4b891ecce94b6fa4f1f10663a8d4ca589a079a5018f6ed7"}, + {file = "yarl-1.8.2-cp37-cp37m-musllinux_1_1_x86_64.whl", hash = "sha256:a48f4f7fea9a51098b02209d90297ac324241bf37ff6be6d2b0149ab2bd51b37"}, + {file = "yarl-1.8.2-cp37-cp37m-win32.whl", hash = "sha256:0414fd91ce0b763d4eadb4456795b307a71524dbacd015c657bb2a39db2eab89"}, + {file = "yarl-1.8.2-cp37-cp37m-win_amd64.whl", hash = "sha256:d881d152ae0007809c2c02e22aa534e702f12071e6b285e90945aa3c376463c5"}, + {file = "yarl-1.8.2-cp38-cp38-macosx_10_9_universal2.whl", hash = "sha256:5df5e3d04101c1e5c3b1d69710b0574171cc02fddc4b23d1b2813e75f35a30b1"}, + {file = "yarl-1.8.2-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:7a66c506ec67eb3159eea5096acd05f5e788ceec7b96087d30c7d2865a243918"}, + {file = "yarl-1.8.2-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:2b4fa2606adf392051d990c3b3877d768771adc3faf2e117b9de7eb977741229"}, + {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1e21fb44e1eff06dd6ef971d4bdc611807d6bd3691223d9c01a18cec3677939e"}, + {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93202666046d9edadfe9f2e7bf5e0782ea0d497b6d63da322e541665d65a044e"}, + {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:fc77086ce244453e074e445104f0ecb27530d6fd3a46698e33f6c38951d5a0f1"}, + {file = "yarl-1.8.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dd68a92cab699a233641f5929a40f02a4ede8c009068ca8aa1fe87b8c20ae3"}, + {file = "yarl-1.8.2-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1b372aad2b5f81db66ee7ec085cbad72c4da660d994e8e590c997e9b01e44901"}, + {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:e6f3515aafe0209dd17fb9bdd3b4e892963370b3de781f53e1746a521fb39fc0"}, + {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:dfef7350ee369197106805e193d420b75467b6cceac646ea5ed3049fcc950a05"}, + {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_ppc64le.whl", hash = "sha256:728be34f70a190566d20aa13dc1f01dc44b6aa74580e10a3fb159691bc76909d"}, + {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ff205b58dc2929191f68162633d5e10e8044398d7a45265f90a0f1d51f85f72c"}, + {file = "yarl-1.8.2-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:baf211dcad448a87a0d9047dc8282d7de59473ade7d7fdf22150b1d23859f946"}, + {file = "yarl-1.8.2-cp38-cp38-win32.whl", hash = "sha256:272b4f1599f1b621bf2aabe4e5b54f39a933971f4e7c9aa311d6d7dc06965165"}, + {file = "yarl-1.8.2-cp38-cp38-win_amd64.whl", hash = "sha256:326dd1d3caf910cd26a26ccbfb84c03b608ba32499b5d6eeb09252c920bcbe4f"}, + {file = "yarl-1.8.2-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:f8ca8ad414c85bbc50f49c0a106f951613dfa5f948ab69c10ce9b128d368baf8"}, + {file = "yarl-1.8.2-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:418857f837347e8aaef682679f41e36c24250097f9e2f315d39bae3a99a34cbf"}, + {file = "yarl-1.8.2-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:ae0eec05ab49e91a78700761777f284c2df119376e391db42c38ab46fd662b77"}, + {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:009a028127e0a1755c38b03244c0bea9d5565630db9c4cf9572496e947137a87"}, + {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3edac5d74bb3209c418805bda77f973117836e1de7c000e9755e572c1f7850d0"}, + {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:da65c3f263729e47351261351b8679c6429151ef9649bba08ef2528ff2c423b2"}, + {file = "yarl-1.8.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0ef8fb25e52663a1c85d608f6dd72e19bd390e2ecaf29c17fb08f730226e3a08"}, + {file = "yarl-1.8.2-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bcd7bb1e5c45274af9a1dd7494d3c52b2be5e6bd8d7e49c612705fd45420b12d"}, + {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:44ceac0450e648de86da8e42674f9b7077d763ea80c8ceb9d1c3e41f0f0a9951"}, + {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:97209cc91189b48e7cfe777237c04af8e7cc51eb369004e061809bcdf4e55220"}, + {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_ppc64le.whl", hash = "sha256:48dd18adcf98ea9cd721a25313aef49d70d413a999d7d89df44f469edfb38a06"}, + {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:e59399dda559688461762800d7fb34d9e8a6a7444fd76ec33220a926c8be1516"}, + {file = "yarl-1.8.2-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:d617c241c8c3ad5c4e78a08429fa49e4b04bedfc507b34b4d8dceb83b4af3588"}, + {file = "yarl-1.8.2-cp39-cp39-win32.whl", hash = "sha256:cb6d48d80a41f68de41212f3dfd1a9d9898d7841c8f7ce6696cf2fd9cb57ef83"}, + {file = "yarl-1.8.2-cp39-cp39-win_amd64.whl", hash = "sha256:6604711362f2dbf7160df21c416f81fac0de6dbcf0b5445a2ef25478ecc4c778"}, + {file = "yarl-1.8.2.tar.gz", hash = "sha256:49d43402c6e3013ad0978602bf6bf5328535c48d192304b91b97a3c6790b1562"}, ] zipp = [ {file = "zipp-3.11.0-py3-none-any.whl", hash = "sha256:83a28fcb75844b5c0cdaf5aa4003c2d728c77e05f5aeabe8e95e56727005fbaa"}, diff --git a/pyproject.toml b/pyproject.toml index 8f140130c6..195f9a20d9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api" [tool.poetry] name = "aea" -version = "1.2.4" +version = "1.2.5" description = "Autonomous Economic Agent framework" authors = ["Fetch.AI Limited"] readme = "README.md" @@ -72,7 +72,7 @@ cosmpy = ">=0.6.2,<0.7.0" bandit = "==1.7.4" vulture = "==2.6" isort = "==5.10.1" -safety = "==2.3.1" +safety = "==2.3.5" mypy = "==0.982" darglint = "==1.8.1" flake8 = "==5.0.4" @@ -98,13 +98,13 @@ pexpect = "^4.8.0" sqlalchemy = ">=1.4.41" # used in one test mistune = "^2.0.4" requests = "^2.28.0" -web3 = ">=5.31.0,<6.0.0" +web3 = "==5.31.1" [tool.poetry.group.docs] optional = true [tool.poetry.group.docs.dependencies] -mkdocs-material = "^8.5.7" +mkdocs-material = "^9.0.3" mkdocs-mermaid-plugin = { git = "https://github.com/pugong/mkdocs-mermaid-plugin.git" } pydoc-markdown = "^4.6.3" pydocstyle = "^6.1.1" diff --git a/scripts/NOTES.md b/scripts/NOTES.md index 022065ce21..6ea71dbf88 100644 --- a/scripts/NOTES.md +++ b/scripts/NOTES.md @@ -2,4 +2,4 @@ ## Threading -- always join the thread. Setting no timeout means the calling thread's execution will block until the thread is terminated (https://docs.python.org/3/library/threading.html) \ No newline at end of file +- always join the thread. Setting no timeout means the calling thread's execution will block until the thread is terminated () diff --git a/scripts/RELEASE_PROCESS.md b/scripts/RELEASE_PROCESS.md index 9efac17275..44a9f68c58 100644 --- a/scripts/RELEASE_PROCESS.md +++ b/scripts/RELEASE_PROCESS.md @@ -1,11 +1,11 @@ # Release Process from develop to main -1. Make sure all tests pass, coverage is at 100% and the local branch is in a clean state (nothing to commit). Make sure you have a clean develop virtual environment. - -2. Determine the next AEA version. Create a new release branch named "feature/release-{new-version}". Switch to this branch. Run `python scripts/bump_aea_version.py --new-version NEW_VERSION_HERE`. Commit if satisfied. +1. Make sure all tests pass, coverage is at 100% and the local branch is in a clean state (nothing to commit). Make sure you have a clean develop virtual environment. -3. Bump plugin versions if necessary by running `python scripts/update_plugin_versions.py --update "PLUGIN_NAME,NEW_VERSION"`. Commit if satisfied. +2. Determine the next AEA version (we use [semantic versioning v 2.0.0][semver]). Create a new release branch named "feature/release-" (e.g. feature/release-1.0.0). Switch to this branch. Run `python scripts/bump_aea_version.py --new-version `. Commit if satisfied. + +3. Bump plugin versions if necessary by running `python scripts/update_plugin_versions.py --update ","`. Commit if satisfied. 4. Check the protocols are up-to-date by running `python scripts/generate_all_protocols.py`. Commit if changes occurred. @@ -13,27 +13,33 @@ 6. Check the package upgrades are correct by running `python scripts/check_packages.py` and `python scripts/check_package_versions_in_docs.py`. Commit if satisfied. -7. Check the docs are up-to-date by running `python scripts/generate_api_docs.py` and `python scripts/check_doc_links.py`. Ensure all links are configured `mkdocs serve`. Commit if satisfied. +7. Check the docs are up-to-date by running `python scripts/generate_api_docs.py` and `python scripts/check_doc_links.py`. Ensure all API pages are added into `mkdocs.yaml`. Ensure documentation can be built: `make docs`. Commit if satisfied. 8. Write release notes and place them in `HISTORY.md`. Add upgrading tips in `upgrading.md`. If necessary, adjust version references in `SECURITY.md`. Commit if satisfied. 9. Run spell checker `./scripts/spell-check.sh`. Run `pylint --disable all --enable spelling ...`. Commit if required. -10. Open PRs and merge into develop. Then switch to the develop branch, open a PR from develop to main and merge if no problems. +10. Open a PR from feature/release- and merge into develop. -11. Tag version on main. +11. Switch to the develop branch, open a PR from develop to main. If there are failures, fix them in a branch off of develop and merge into develop. Repeat until no failure in the develop to main PR. -12. Pull main, make a clean environment (`pipenv --rm` and `pipenv --python 3.7`) and create distributions: `make dist`. +12. Release packages into registry: `python scripts/deploy_to_registry.py`. You might have to run the script a few times until all packages are updated due to a specific dependency structure. -13. Publish to PyPI with twine: `twine upload dist/*`. Optionally, publish to Test-PyPI with twine: -`twine upload --repository-url https://test.pypi.org/legacy/ dist/*`. +13. Merge the develop to main PR. + +14. Tag version on main. -14. Repeat 11. & 12. for each plugin. +15. Pull main, make a clean environment (`make new-env` and `poetry shell`). + +16. Create a distribution: `make dist`. + +17. Publish to PyPI with twine: `twine upload dist/*`. Optionally, publish to Test-PyPI with twine: +`twine upload --repository-url https://test.pypi.org/legacy/ dist/*`. -15. Make clean environment and install release from PyPI: `pip install aea[all] --no-cache`. +18. For each plugin: create a distribution (`python3 setup.py bdist_wheel sdist`) then perform step 17. -16. Release packages into registry: `python scripts/deploy_to_registry.py`. You might have to run the script a few times until all packages are updated due to a specific dependency structure. +> Note, the AEA develop docker image is automatically created as part of the CI process in the develop to main PR. -17. Note, the AEA develop docker image is automatically created as part of the CI process in the develop to main PR. +> If something goes wrong and only needs a small fix, do `LAST_VERSION.post1` as version, apply fixes, push again to PyPI. -If something goes wrong and only needs a small fix do `LAST_VERSION.post1` as version, apply fixes, push again to PyPI. +[semver]: https://semver.org/spec/v2.0.0.html \ No newline at end of file diff --git a/scripts/__init__.py b/scripts/__init__.py index 2c028fec31..c3668a39c6 100644 --- a/scripts/__init__.py +++ b/scripts/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/acn/README.md b/scripts/acn/README.md index 066335abed..a840552a47 100644 --- a/scripts/acn/README.md +++ b/scripts/acn/README.md @@ -1,4 +1,6 @@ -# Installing the agent communication network (ACN) in Kubernetes using helm +# Agent Communication Network (ACN) + +## Installing the agent communication network (ACN) in Kubernetes using helm **Requirements:** `helm` needs to be installed. @@ -11,17 +13,17 @@ To deploy a test network do the following steps: 1. Build and upload the ACN node image by running `./build_upload_img.sh`. You have to execute this from this folder. 2. update the image tag (two instances) in the `helm-chart/values.yaml` 3. `cd helm-chart` + **NOTE: Make sure to be in the `agents-p2p-dht-testnet` namespace before proceeding** +4. If: + 1. this is the first time deploying: run `helm install agents-dht-test .` + 2. you are upgrading an existing installation (see if there is one by `helm ls`): run `helm upgrade agents-dht-test .` -**NOTE: Make sure to be in the `agents-p2p-dht-testnet` namespace before proceeding** - -4. a) If this is the first time deploying run `helm install agents-dht-test .` - b) If you are upgrading an existing installation (see if there is one by `helm ls`) run `helm upgrade agents-dht-test .` - -## Simple image update: +### Simple image update Run `./build_upload_img.sh` and take note of the image tag. Replace below `IMAGE_TAG_HERE` with the image tag. + ``` bash kubens agents-p2p-dht-testnet kubectl set image sts/acn-node-9005 acn-node=gcr.io/fetch-ai-colearn/acn_node:{IMAGE_TAG_HERE} @@ -34,46 +36,49 @@ kubectl set image sts/acn-node-9000 acn-node=gcr.io/fetch-ai-colearn/acn_node:{I kubectl set image sts/acn-node-9001 acn-node=gcr.io/fetch-ai-colearn/acn_node:{IMAGE_TAG_HERE} ``` -# The agent communication network (ACN) Kubernetes deployment script +## The agent communication network (ACN) Kubernetes deployment script The `k8s_deploy_acn_node.py` script provides a configurable, reproducible, and verifiable deployment of the ACN node to a Kubernetes cluster. Configuration of the ACN node, docker image, and Kubernetes is passed through command-line interface. The script will then verify it, generate the -corresponding YAML deployment file and finally deploy it. +corresponding YAML deployment file and finally deploy it. The script can also delete a deployment by appending `--delete` to the CLI arguments used to create the deployment. The generated YAML deployment file includes: + - a `statefulSet` to persist ACN node log file across runs - a service for restarting the node (pod) in case of failure - a `DNSEndpoint` to expose public port -- a secret to safely upload the node's private key +- a secret to safely upload the node's private key -The generated YAML deployment file can be saved for future re-deployments by using CLI option `--from-file`. +The generated YAML deployment file can be saved for future re-deployments by using CLI option `--from-file`. Options `--from-file` and `--delete` can be combined as quick way to delete a previous deployment from Kubernetes cluster. Option `--generate-only` can be used to generate the deployment file without submitting it to the cluster. To reduce the number of CLI arguments to pass, the script offers defaults for docker and Kubernetes configuration that can be used by setting `--k8s-fetchai-defaults`, `--docker-fetchai-defaults` or `--docker-fetchai-defaults-dev`. -## Usage examples - +### Usage examples - deploy a node using CLI options + ```bash python3 scripts/acn/k8s_deploy_acn_node.py --acn-key-file fet_key_test_1.txt --acn-port 9009 --acn-port-delegate 11009 --k8s-fetchai-defaults --docker-fetchai-defaults-dev ``` - delete deployment using CLI options + ```bash python3 scripts/acn/k8s_deploy_acn_node.py --acn-key-file fet_key_test_1.txt --acn-port 9009 --acn-port-delegate 11009 --k8s-fetchai-defaults --docker-fetchai-defaults-dev --delete ``` - redeploy using the generated deployment file + ```bash python3 scripts/acn/k8s_deploy_acn_node.py --from-file .acn_deployment.yaml ``` - delete deployment using the generated deployment file + ```bash python3 scripts/acn/k8s_deploy_acn_node.py --from-file .acn_deployment.yaml --delete ``` - diff --git a/scripts/acn/k8s_deploy_acn_node.py b/scripts/acn/k8s_deploy_acn_node.py index c9212f8d41..fb7ecfa7de 100644 --- a/scripts/acn/k8s_deploy_acn_node.py +++ b/scripts/acn/k8s_deploy_acn_node.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/acn/run_acn_node_standalone.py b/scripts/acn/run_acn_node_standalone.py index 241c9b322c..9121621ab1 100644 --- a/scripts/acn/run_acn_node_standalone.py +++ b/scripts/acn/run_acn_node_standalone.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/bump_aea_version.py b/scripts/bump_aea_version.py index fb85ed2747..42d1f893b3 100644 --- a/scripts/bump_aea_version.py +++ b/scripts/bump_aea_version.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -263,7 +263,7 @@ def update_version_for_package(self, new_version: str) -> str: Update version for file. If __version__.py is available, parse it and check for __version__ variable. - Otherwise, try to parse setup.py. + Otherwise, try to parse pyproject.py. Otherwise, raise error. :param new_version: the new version @@ -457,7 +457,7 @@ def process_plugins(new_versions: Dict[str, Version]) -> bool: continue new_version = new_versions[plugin_dir_name] logging.info( - f"Processing {plugin_dir_name}: upgrading at version {new_version}" + f"Processing {plugin_dir_name}: upgrading to version {new_version}" ) plugin_bumper = make_plugin_bumper(plugin_dir, new_version) plugin_bumper.run() diff --git a/scripts/check_copyright_notice.py b/scripts/check_copyright_notice.py index 408fe11a79..3504683306 100755 --- a/scripts/check_copyright_notice.py +++ b/scripts/check_copyright_notice.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/check_doc_links.py b/scripts/check_doc_links.py index ad376dd538..12dd7fe4e4 100755 --- a/scripts/check_doc_links.py +++ b/scripts/check_doc_links.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/check_imports_and_dependencies.py b/scripts/check_imports_and_dependencies.py index 317a649de3..a68454274d 100755 --- a/scripts/check_imports_and_dependencies.py +++ b/scripts/check_imports_and_dependencies.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/check_package_versions_in_docs.py b/scripts/check_package_versions_in_docs.py index b01fbcb697..cdc8da9400 100755 --- a/scripts/check_package_versions_in_docs.py +++ b/scripts/check_package_versions_in_docs.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/check_packages.py b/scripts/check_packages.py index 94c5db300b..3545893822 100755 --- a/scripts/check_packages.py +++ b/scripts/check_packages.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/check_pipfile_and_toxini.py b/scripts/check_pipfile_and_toxini.py index e36c7a7a6f..7ed05daf8e 100644 --- a/scripts/check_pipfile_and_toxini.py +++ b/scripts/check_pipfile_and_toxini.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/common.py b/scripts/common.py index 286f9fb8c6..9280a96430 100644 --- a/scripts/common.py +++ b/scripts/common.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/deploy_to_registry.py b/scripts/deploy_to_registry.py index d2cfe02422..9a00e964d9 100644 --- a/scripts/deploy_to_registry.py +++ b/scripts/deploy_to_registry.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/freeze_dependencies.py b/scripts/freeze_dependencies.py index cae21f02a4..4078e208c0 100755 --- a/scripts/freeze_dependencies.py +++ b/scripts/freeze_dependencies.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/generate_all_protocols.py b/scripts/generate_all_protocols.py index f27dca68b4..0369604527 100755 --- a/scripts/generate_all_protocols.py +++ b/scripts/generate_all_protocols.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/generate_api_docs.py b/scripts/generate_api_docs.py index c38f919eea..2be7f7eced 100755 --- a/scripts/generate_api_docs.py +++ b/scripts/generate_api_docs.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/generate_ipfs_hashes.py b/scripts/generate_ipfs_hashes.py index 0db8989556..bc4a02a176 100755 --- a/scripts/generate_ipfs_hashes.py +++ b/scripts/generate_ipfs_hashes.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/ledger_network_update.py b/scripts/ledger_network_update.py index a17423b445..ddebca493b 100755 --- a/scripts/ledger_network_update.py +++ b/scripts/ledger_network_update.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/oef/launch.py b/scripts/oef/launch.py index 26d57fd2ee..4d91c64919 100644 --- a/scripts/oef/launch.py +++ b/scripts/oef/launch.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/parse_main_dependencies_from_lock.py b/scripts/parse_main_dependencies_from_lock.py index 2659f4b406..a2dc6cf3de 100755 --- a/scripts/parse_main_dependencies_from_lock.py +++ b/scripts/parse_main_dependencies_from_lock.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/update_package_versions.py b/scripts/update_package_versions.py index 96b46ed66f..0d133e881d 100644 --- a/scripts/update_package_versions.py +++ b/scripts/update_package_versions.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/update_plugin_versions.py b/scripts/update_plugin_versions.py index 8008f140bc..8b2102be94 100644 --- a/scripts/update_plugin_versions.py +++ b/scripts/update_plugin_versions.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/update_symlinks_cross_platform.py b/scripts/update_symlinks_cross_platform.py index 61cc35c86a..49e1e12e5b 100755 --- a/scripts/update_symlinks_cross_platform.py +++ b/scripts/update_symlinks_cross_platform.py @@ -2,7 +2,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/scripts/whitelist.py b/scripts/whitelist.py index 10010ea285..893fd4de77 100644 --- a/scripts/whitelist.py +++ b/scripts/whitelist.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/__init__.py b/tests/__init__.py index 9b03f5e132..2f4cc8fbc5 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/common/__init__.py b/tests/common/__init__.py index 18ae68d800..1e70dca3f8 100644 --- a/tests/common/__init__.py +++ b/tests/common/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/common/docker_image.py b/tests/common/docker_image.py index 08a2ffc6fe..482f327596 100644 --- a/tests/common/docker_image.py +++ b/tests/common/docker_image.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/common/mocks.py b/tests/common/mocks.py index b776118335..3f2b474ce4 100644 --- a/tests/common/mocks.py +++ b/tests/common/mocks.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/common/oef_search_pluto_scripts/launch.py b/tests/common/oef_search_pluto_scripts/launch.py index e0cd495627..15aba56745 100755 --- a/tests/common/oef_search_pluto_scripts/launch.py +++ b/tests/common/oef_search_pluto_scripts/launch.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/common/pexpect_popen.py b/tests/common/pexpect_popen.py index fdf9397f86..402f504a4a 100644 --- a/tests/common/pexpect_popen.py +++ b/tests/common/pexpect_popen.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/common/utils.py b/tests/common/utils.py index b213f40d7f..e3c063c994 100644 --- a/tests/common/utils.py +++ b/tests/common/utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/conftest.py b/tests/conftest.py index d6f96ce946..ed3db721c2 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -282,7 +282,7 @@ # common public ids used in the tests UNKNOWN_PROTOCOL_PUBLIC_ID = PublicId("unknown_author", "unknown_protocol", "0.1.0") UNKNOWN_CONNECTION_PUBLIC_ID = PublicId("unknown_author", "unknown_connection", "0.1.0") -MY_FIRST_AEA_PUBLIC_ID = PublicId.from_str("fetchai/my_first_aea:0.28.4") +MY_FIRST_AEA_PUBLIC_ID = PublicId.from_str("fetchai/my_first_aea:0.28.5") DUMMY_SKILL_PATH = os.path.join(CUR_PATH, "data", "dummy_skill", SKILL_YAML) diff --git a/tests/data/__init__.py b/tests/data/__init__.py index 3462b42f91..e3f031563c 100644 --- a/tests/data/__init__.py +++ b/tests/data/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/aea-config.example.yaml b/tests/data/aea-config.example.yaml index 50b742e104..1b68135fc2 100644 --- a/tests/data/aea-config.example.yaml +++ b/tests/data/aea-config.example.yaml @@ -7,16 +7,16 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/oef:0.22.5 +- fetchai/oef:0.22.6 contracts: [] protocols: -- fetchai/oef_search:1.1.6 -- fetchai/default:1.1.6 -- fetchai/tac:1.1.6 -- fetchai/fipa:1.1.6 +- fetchai/oef_search:1.1.7 +- fetchai/default:1.1.7 +- fetchai/tac:1.1.7 +- fetchai/fipa:1.1.7 skills: -- fetchai/echo:0.20.5 -default_connection: fetchai/oef:0.22.5 +- fetchai/echo:0.20.6 +default_connection: fetchai/oef:0.22.6 default_ledger: cosmos required_ledgers: - cosmos diff --git a/tests/data/aea-config.example_w_keys.yaml b/tests/data/aea-config.example_w_keys.yaml index 4a2c6660f7..c75b039905 100644 --- a/tests/data/aea-config.example_w_keys.yaml +++ b/tests/data/aea-config.example_w_keys.yaml @@ -7,16 +7,16 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/oef:0.22.5 +- fetchai/oef:0.22.6 contracts: [] protocols: -- fetchai/oef_search:1.1.6 -- fetchai/default:1.1.6 -- fetchai/tac:1.1.6 -- fetchai/fipa:1.1.6 +- fetchai/oef_search:1.1.7 +- fetchai/default:1.1.7 +- fetchai/tac:1.1.7 +- fetchai/fipa:1.1.7 skills: -- fetchai/echo:0.20.5 -default_connection: fetchai/oef:0.22.5 +- fetchai/echo:0.20.6 +default_connection: fetchai/oef:0.22.6 default_ledger: cosmos required_ledgers: - cosmos diff --git a/tests/data/custom_crypto.py b/tests/data/custom_crypto.py index c28dc215f6..960ed2de55 100644 --- a/tests/data/custom_crypto.py +++ b/tests/data/custom_crypto.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dependencies_skill/__init__.py b/tests/data/dependencies_skill/__init__.py index 03b1c17aa6..23c1fd10fd 100644 --- a/tests/data/dependencies_skill/__init__.py +++ b/tests/data/dependencies_skill/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dependencies_skill/skill.yaml b/tests/data/dependencies_skill/skill.yaml index 8c268713ed..5a0aabf9eb 100644 --- a/tests/data/dependencies_skill/skill.yaml +++ b/tests/data/dependencies_skill/skill.yaml @@ -6,11 +6,11 @@ description: a skill for testing purposes. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - __init__.py: QmZfYLD7aHkPLxHPLwcx7LNNuEdVPZCRqmNZdby1nEbrcN + __init__.py: QmVLEKUHaEdU1fcEvwiPYogLC8FjoKaZDzmq8UXr1rf9zM fingerprint_ignore_patterns: [] contracts: [] protocols: -- fetchai/default:1.1.6 +- fetchai/default:1.1.7 skills: [] behaviours: {} handlers: {} diff --git a/tests/data/dummy_aea/aea-config.yaml b/tests/data/dummy_aea/aea-config.yaml index 642d827abb..3e5ee057cd 100644 --- a/tests/data/dummy_aea/aea-config.yaml +++ b/tests/data/dummy_aea/aea-config.yaml @@ -7,21 +7,21 @@ aea_version: '>=1.0.0, <2.0.0' fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/local:0.21.5 -- fetchai/p2p_libp2p:0.27.4 +- fetchai/local:0.21.6 +- fetchai/p2p_libp2p:0.27.5 contracts: -- fetchai/erc1155:0.23.2 +- fetchai/erc1155:0.23.3 protocols: -- fetchai/acn:1.1.6 -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/acn:1.1.7 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: - dummy_author/dummy:0.1.0 -- fetchai/error:0.18.5 -default_connection: fetchai/local:0.21.5 +- fetchai/error:0.18.6 +default_connection: fetchai/local:0.21.6 default_ledger: fetchai required_ledgers: - fetchai diff --git a/tests/data/dummy_aea/connections/__init__.py b/tests/data/dummy_aea/connections/__init__.py index faecc1b656..c62df47f32 100644 --- a/tests/data/dummy_aea/connections/__init__.py +++ b/tests/data/dummy_aea/connections/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_aea/contracts/__init__.py b/tests/data/dummy_aea/contracts/__init__.py index 5cd23a24c1..6acff36112 100644 --- a/tests/data/dummy_aea/contracts/__init__.py +++ b/tests/data/dummy_aea/contracts/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_aea/protocols/__init__.py b/tests/data/dummy_aea/protocols/__init__.py index c91d75ee8e..f0c8355d74 100644 --- a/tests/data/dummy_aea/protocols/__init__.py +++ b/tests/data/dummy_aea/protocols/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_aea/skills/__init__.py b/tests/data/dummy_aea/skills/__init__.py index e0c1827d5d..d495534711 100644 --- a/tests/data/dummy_aea/skills/__init__.py +++ b/tests/data/dummy_aea/skills/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_aea/vendor/__init__.py b/tests/data/dummy_aea/vendor/__init__.py index 41b6d8f541..4fd40e4da9 100644 --- a/tests/data/dummy_aea/vendor/__init__.py +++ b/tests/data/dummy_aea/vendor/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_aea/vendor/fetchai/__init__.py b/tests/data/dummy_aea/vendor/fetchai/__init__.py index 44e9d9d7af..445c782893 100644 --- a/tests/data/dummy_aea/vendor/fetchai/__init__.py +++ b/tests/data/dummy_aea/vendor/fetchai/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_aea/vendor/fetchai/connections/__init__.py b/tests/data/dummy_aea/vendor/fetchai/connections/__init__.py index faecc1b656..c62df47f32 100644 --- a/tests/data/dummy_aea/vendor/fetchai/connections/__init__.py +++ b/tests/data/dummy_aea/vendor/fetchai/connections/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_aea/vendor/fetchai/contracts/__init__.py b/tests/data/dummy_aea/vendor/fetchai/contracts/__init__.py index 5cd23a24c1..6acff36112 100644 --- a/tests/data/dummy_aea/vendor/fetchai/contracts/__init__.py +++ b/tests/data/dummy_aea/vendor/fetchai/contracts/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_aea/vendor/fetchai/protocols/__init__.py b/tests/data/dummy_aea/vendor/fetchai/protocols/__init__.py index c91d75ee8e..f0c8355d74 100644 --- a/tests/data/dummy_aea/vendor/fetchai/protocols/__init__.py +++ b/tests/data/dummy_aea/vendor/fetchai/protocols/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_aea/vendor/fetchai/skills/__init__.py b/tests/data/dummy_aea/vendor/fetchai/skills/__init__.py index e0c1827d5d..d495534711 100644 --- a/tests/data/dummy_aea/vendor/fetchai/skills/__init__.py +++ b/tests/data/dummy_aea/vendor/fetchai/skills/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_connection/__init__.py b/tests/data/dummy_connection/__init__.py index 59417e225b..848a375ebc 100644 --- a/tests/data/dummy_connection/__init__.py +++ b/tests/data/dummy_connection/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_connection/connection.py b/tests/data/dummy_connection/connection.py index d2b596b5f6..acc537466d 100644 --- a/tests/data/dummy_connection/connection.py +++ b/tests/data/dummy_connection/connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_connection/connection.yaml b/tests/data/dummy_connection/connection.yaml index 8e3b9263dd..f4014bede7 100644 --- a/tests/data/dummy_connection/connection.yaml +++ b/tests/data/dummy_connection/connection.yaml @@ -6,8 +6,8 @@ description: dummy_connection connection description. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - __init__.py: QmYqrEF1XrRvBKRc85AtJxoXVpeAGwr6fzKiTrRv1cUy7R - connection.py: QmbqvFHy48N5qJNJRt5ivSXsPc8iBAGL7auqUBVSSFZBma + __init__.py: QmVLvYQsVuMRPvU3w9UzZzEGjGa5iP5SWwDwTKCuRMzRrQ + connection.py: QmergefLxWSmAPqn4DZiKEa8xS4u6F8Wp46QqsCv6UMnKq fingerprint_ignore_patterns: [] build_entrypoint: path/to/script.py connections: [] @@ -16,7 +16,7 @@ class_name: DummyConnection config: {} excluded_protocols: [] restricted_to_protocols: -- fetchai/default:1.1.6 +- fetchai/default:1.1.7 dependencies: dep1: version: ==1.0.0 diff --git a/tests/data/dummy_contract/__init__.py b/tests/data/dummy_contract/__init__.py index 01bef33dc0..43fd8d0633 100644 --- a/tests/data/dummy_contract/__init__.py +++ b/tests/data/dummy_contract/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_contract/contract.py b/tests/data/dummy_contract/contract.py index 03a8c7126a..1cf17ff476 100644 --- a/tests/data/dummy_contract/contract.py +++ b/tests/data/dummy_contract/contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_contract/contract.yaml b/tests/data/dummy_contract/contract.yaml index 323aab9b9a..cca50696b9 100644 --- a/tests/data/dummy_contract/contract.yaml +++ b/tests/data/dummy_contract/contract.yaml @@ -6,10 +6,10 @@ description: A test contract license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - __init__.py: QmU1AKVDZPZurHxYStRw5tpoyxKxAohQ4yu57mNSTWYzPE + __init__.py: QmURXWttkpyyuCk7YfhmvWyRx9xNXzZUmrXaZDJeucajzn build/some.json: Qma5n7au2NDCg1nLwYfYnmFNwWChFuXtu65w5DV7wAZRvw build/some.wasm: Qmc9gthbdwRSywinTHKjRVQdFzrKTxUuLDx2ryNfQp1xqf - contract.py: QmPUPN58uwMtQEigj4e6SNFGQNNRpzCuQcXYFF4XyHLD8r + contract.py: QmUw1VRch2sJGAzS5nb8JMFN2xYL5ovsm3SpnZMw9nV8zg fingerprint_ignore_patterns: [] build_entrypoint: path/to/script.py class_name: DummyContract diff --git a/tests/data/dummy_skill/__init__.py b/tests/data/dummy_skill/__init__.py index f400320c26..0fa6512903 100644 --- a/tests/data/dummy_skill/__init__.py +++ b/tests/data/dummy_skill/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_skill/behaviours.py b/tests/data/dummy_skill/behaviours.py index a050207e6c..d7a079a1a1 100644 --- a/tests/data/dummy_skill/behaviours.py +++ b/tests/data/dummy_skill/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_skill/dummy.py b/tests/data/dummy_skill/dummy.py index 82cdd37c7d..6f8d40d939 100644 --- a/tests/data/dummy_skill/dummy.py +++ b/tests/data/dummy_skill/dummy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_skill/dummy_subpackage/__init__.py b/tests/data/dummy_skill/dummy_subpackage/__init__.py index b2f2886377..1a4cd166da 100644 --- a/tests/data/dummy_skill/dummy_subpackage/__init__.py +++ b/tests/data/dummy_skill/dummy_subpackage/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_skill/dummy_subpackage/foo.py b/tests/data/dummy_skill/dummy_subpackage/foo.py index b88fbf0d87..d780ec03b7 100644 --- a/tests/data/dummy_skill/dummy_subpackage/foo.py +++ b/tests/data/dummy_skill/dummy_subpackage/foo.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_skill/handlers.py b/tests/data/dummy_skill/handlers.py index 4bfe0d1bcd..3681b3b061 100644 --- a/tests/data/dummy_skill/handlers.py +++ b/tests/data/dummy_skill/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/dummy_skill/skill.yaml b/tests/data/dummy_skill/skill.yaml index d11b85b5d2..918b70ef08 100644 --- a/tests/data/dummy_skill/skill.yaml +++ b/tests/data/dummy_skill/skill.yaml @@ -6,19 +6,19 @@ description: a dummy_skill for testing purposes. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - __init__.py: QmNqncXE2j6RcXDJiFEuUkjsNbTSC7wPzVCKwg2aagmKLW - behaviours.py: QmQe9af92uxEnCBZXJPbL7HwubYkscy5AmpZcKnaacYxjz - dummy.py: QmcrSECZ3cL3ba4wt63iHrPoLCHsbZbHNenuZQBusVS8Ys - dummy_subpackage/__init__.py: QmQ1NvzFZeq3FEaF4Bq3LGT8VrSXKs2QyX8uAHKTpzj1ZV - dummy_subpackage/foo.py: QmPzUah7jE3s9mg1QW3a9aJrzmmhFGzJUHSkTbn5Q1RbjN - handlers.py: QmSNUxoN5MzKABJ5rwAi4U75fsLXC5CwsGfbg4dXh4rZPT - tasks.py: QmTdnWeaEmqixX3P4r65PixFB6GyHKxU6W4kW4RSTEvYMW + __init__.py: QmbTjuDJuSgXvD6guu4GJEyZC3BwwtTaSN7HkqgzkCTypX + behaviours.py: QmdN12JcAxikGXueDjuwyuGuvbcpihcznG2SLoRr24MDL4 + dummy.py: QmW6RFSAACA7dy9N6ux22LRpsyCMWtFUXrgjy8YwoPf1XS + dummy_subpackage/__init__.py: QmUgN7JbokfWGK6NHxYKN7oSkqcpwupM2FQRVMANwkzjoA + dummy_subpackage/foo.py: QmXTMpmhi4qd7VH7rBFaSzDEFnYyj2r7EvALQzcwpK9PcN + handlers.py: QmTpiZ1B5RoAKGF1t6TYuhdPemAZ75YuveQpZNETqjphVS + tasks.py: QmeEex6NZvzHDSkQakPRTjymAYvyxd4t65mU6RiYAn8DVv fingerprint_ignore_patterns: [] contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/signing:1.1.6 -- fetchai/state_update:1.1.6 +- fetchai/default:1.1.7 +- fetchai/signing:1.1.7 +- fetchai/state_update:1.1.7 skills: [] behaviours: dummy: diff --git a/tests/data/dummy_skill/tasks.py b/tests/data/dummy_skill/tasks.py index aa55369857..2f9816e5e4 100644 --- a/tests/data/dummy_skill/tasks.py +++ b/tests/data/dummy_skill/tasks.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/exception_skill/__init__.py b/tests/data/exception_skill/__init__.py index ec6354d36e..0d434482cc 100644 --- a/tests/data/exception_skill/__init__.py +++ b/tests/data/exception_skill/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/exception_skill/behaviours.py b/tests/data/exception_skill/behaviours.py index ce17f9ed5e..b8d1a3c28f 100644 --- a/tests/data/exception_skill/behaviours.py +++ b/tests/data/exception_skill/behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/exception_skill/handlers.py b/tests/data/exception_skill/handlers.py index b2ec7c8e34..e259ac393d 100644 --- a/tests/data/exception_skill/handlers.py +++ b/tests/data/exception_skill/handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/exception_skill/skill.yaml b/tests/data/exception_skill/skill.yaml index 05c58423f7..e2e63861e4 100644 --- a/tests/data/exception_skill/skill.yaml +++ b/tests/data/exception_skill/skill.yaml @@ -6,10 +6,10 @@ description: Raise an exception, at some point. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - __init__.py: QmV9f6fiZvY96Mo4afiietr5iajR5WvCb52ohctqDxo6og - behaviours.py: QmWwW5Rfpjrc5EEdbwvg1bf54RriKXXCiEtGTPJxF1bZ6i - handlers.py: QmUVUgvfp1Ch4mKddEv32QmBK2SE5tVrZwziCDJwwQ9p1T - tasks.py: Qma5prBLtXzvdTutoFg1Ssk17q1q5v88h77cHFPCvwYhgH + __init__.py: QmRLyScuC6bY5DANwG1Mk9zNCfiD6arrP2uoSd3ruz7hXQ + behaviours.py: QmYnyEnHA73V488mTg5j1i9drtbnd2JBbQa71ypU1uaYuo + handlers.py: QmZnd7QMHo9pmwouLcfRFdy3daT4xMP1Cn1FfxYYbzmcXx + tasks.py: QmcXkhi79S4AJynSPQtFMqHr7NPT3NDb6EMDSMM3UqAVZZ fingerprint_ignore_patterns: [] build_entrypoint: path/to/script.py contracts: [] diff --git a/tests/data/exception_skill/tasks.py b/tests/data/exception_skill/tasks.py index e097733f35..a39301233a 100644 --- a/tests/data/exception_skill/tasks.py +++ b/tests/data/exception_skill/tasks.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/generator/__init__.py b/tests/data/generator/__init__.py index 112b591e98..2ea8291cdd 100644 --- a/tests/data/generator/__init__.py +++ b/tests/data/generator/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/generator/t_protocol/__init__.py b/tests/data/generator/t_protocol/__init__.py index 66c4a36a69..f962e60bf5 100644 --- a/tests/data/generator/t_protocol/__init__.py +++ b/tests/data/generator/t_protocol/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the t_protocol protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from tests.data.generator.t_protocol.message import TProtocolMessage diff --git a/tests/data/generator/t_protocol/custom_types.py b/tests/data/generator/t_protocol/custom_types.py index 6887755b16..100ca4a48f 100644 --- a/tests/data/generator/t_protocol/custom_types.py +++ b/tests/data/generator/t_protocol/custom_types.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2020 fetchai +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/generator/t_protocol/dialogues.py b/tests/data/generator/t_protocol/dialogues.py index 0ed7fa95f1..1033de471b 100644 --- a/tests/data/generator/t_protocol/dialogues.py +++ b/tests/data/generator/t_protocol/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/generator/t_protocol/message.py b/tests/data/generator/t_protocol/message.py index 933a026c43..c75ec5ddbd 100644 --- a/tests/data/generator/t_protocol/message.py +++ b/tests/data/generator/t_protocol/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/generator/t_protocol/protocol.yaml b/tests/data/generator/t_protocol/protocol.yaml index 3f2104abe1..e2bd8f0e2c 100644 --- a/tests/data/generator/t_protocol/protocol.yaml +++ b/tests/data/generator/t_protocol/protocol.yaml @@ -7,11 +7,11 @@ description: A protocol for testing purposes. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - __init__.py: QmbH6HUaAngANq9NKNzcb1C5BxsZ9aJXG9diPgibNmQ8R2 - custom_types.py: QmPTzGJCB3waK3aQbBjdDpm8JRe4ApERsFqJ1RP5b9M45Z - dialogues.py: Qmaaa73ZuSE85xwkXaiKHUFXjG7aMECvAGxAZQvmyWc55X - message.py: QmVUh2pW5ME3KVZvisqij6s1VV3Z1GgzLPbgo746byhr4Q - serialization.py: Qmb4Q4TfZxf3CsYcxjzKj5T4p8TFeZkUWxJkig6753cshF + __init__.py: QmNg4u2z7LVfhFYWiGjvabHoNQ26pyE1a3Z8df8nMVYjKu + custom_types.py: QmYe8yi1PB7aGqEJ3z6LqTVUhQyf57Q6U1nCPsEfnEfTVQ + dialogues.py: QmerAFMZq4g5fwTdC4CZ3hAG3XA7egXkPeYz95vBSLYHCZ + message.py: QmZDVSvvrwrN6tNfipxPUjr6q4N9cqDTMQpenZPZMTtxEg + serialization.py: QmXcTuZAbSDXFaCfajXPfFofT2koguvCLriJDx9wAHtSXT t_protocol.proto: QmY6Gw3Y7iKY2zR4kK6cx8cR1jjJivhLsSnP6HDk8843si t_protocol_pb2.py: QmWW1wUqN4X5VCQCmPP1TiHgpNpcNM1z59TnDPZuQ4L8aR fingerprint_ignore_patterns: [] diff --git a/tests/data/generator/t_protocol/serialization.py b/tests/data/generator/t_protocol/serialization.py index 9f04de0cee..45117aa1e8 100644 --- a/tests/data/generator/t_protocol/serialization.py +++ b/tests/data/generator/t_protocol/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/generator/t_protocol_no_ct/__init__.py b/tests/data/generator/t_protocol_no_ct/__init__.py index 0310bf041a..e9c9a8001e 100644 --- a/tests/data/generator/t_protocol_no_ct/__init__.py +++ b/tests/data/generator/t_protocol_no_ct/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ """ This module contains the support resources for the t_protocol_no_ct protocol. -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. +It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.5`. """ from tests.data.generator.t_protocol_no_ct.message import TProtocolNoCtMessage diff --git a/tests/data/generator/t_protocol_no_ct/dialogues.py b/tests/data/generator/t_protocol_no_ct/dialogues.py index 0fad51899d..1435da5739 100644 --- a/tests/data/generator/t_protocol_no_ct/dialogues.py +++ b/tests/data/generator/t_protocol_no_ct/dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/generator/t_protocol_no_ct/message.py b/tests/data/generator/t_protocol_no_ct/message.py index e152b16daa..9c7da19027 100644 --- a/tests/data/generator/t_protocol_no_ct/message.py +++ b/tests/data/generator/t_protocol_no_ct/message.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/generator/t_protocol_no_ct/protocol.yaml b/tests/data/generator/t_protocol_no_ct/protocol.yaml index 41a1ea8788..41a3f72696 100644 --- a/tests/data/generator/t_protocol_no_ct/protocol.yaml +++ b/tests/data/generator/t_protocol_no_ct/protocol.yaml @@ -7,10 +7,10 @@ description: A protocol for testing purposes. license: Apache-2.0 aea_version: '>=1.0.0, <2.0.0' fingerprint: - __init__.py: QmdLZXHCBVvbAFGN5UT7N2m26phKSS1AWWA6SdFBvY2n6t - dialogues.py: QmQw2uWqsbwNma5yKnb6cRhaCHuU5nRa5F7eZoxRgUVekm - message.py: QmVuM5P73nhZfTRW6yM4Ehz8tpegDGs38Vig3sYbHLMEKy - serialization.py: QmQNpaTtPDZ2jpAEYTJM6Y5poyJFEYSbAGj8GcvRLQc3xo + __init__.py: QmcxVa3xRNtDc5tmaeDiN3KMHC7dENFrrgmnufQ3Ypqk9w + dialogues.py: QmRTxDfiHH5CS65g9wtz1mqWDmENDpMvgmmczsn1tWemSr + message.py: QmYR1AwBvuVUFdQdLagHastVduKJB3WPUX8hWiyAozsEwG + serialization.py: Qmbem38xwYtcGsFfn6vd8xuMeE8FVFrJXGUXNEhY5V3zpR t_protocol_no_ct.proto: QmapyiDZBjF3K8yLZvCBYhjm3dFVwaLBKL8PLWUoYpTLez t_protocol_no_ct_pb2.py: QmUeCxpxg2SYZfB26rjFentsmpFtJLgwU1ueMvPNQA4YbP fingerprint_ignore_patterns: [] diff --git a/tests/data/generator/t_protocol_no_ct/serialization.py b/tests/data/generator/t_protocol_no_ct/serialization.py index af92794552..e935f67a87 100644 --- a/tests/data/generator/t_protocol_no_ct/serialization.py +++ b/tests/data/generator/t_protocol_no_ct/serialization.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/data/gym-connection.yaml b/tests/data/gym-connection.yaml index 891215f086..b198b0af1c 100644 --- a/tests/data/gym-connection.yaml +++ b/tests/data/gym-connection.yaml @@ -12,8 +12,8 @@ description: "The gym connection wraps an OpenAI gym." class_name: GymConnection connections: [] protocols: -- fetchai/gym:1.1.6 -restricted_to_protocols: ["fetchai/gym:1.1.6"] +- fetchai/gym:1.1.7 +restricted_to_protocols: ["fetchai/gym:1.1.7"] excluded_protocols: [] config: env: 'gyms.env.BanditNArmedRandom' diff --git a/tests/data/hashes.csv b/tests/data/hashes.csv index 455f1abf19..242ddd6950 100644 --- a/tests/data/hashes.csv +++ b/tests/data/hashes.csv @@ -1,8 +1,8 @@ -dummy_author/agents/dummy_aea,QmcfS5oG5eYqEbvFnRBLfUZg7BhxAkYmCZkeCogNVY2eRd -dummy_author/skills/dummy_skill,QmQz8WW9a2RBHBiKdCC1YfnZwzZG4dCv6Bn7Ub363b4y6o -fetchai/connections/dummy_connection,QmVS8Rd44mH8f1A5krqiPx8Mz68fKC7LrREjtrPcyiaE48 -fetchai/contracts/dummy_contract,QmVvnWPgN5W5yfFvczTjHiiYJU11ScvBUJpumwTn9n4qia -fetchai/protocols/t_protocol,QmQFxvkYBMpreq2PdPPSkkufCGhK5QVKTyqcfwrsNSEyiP -fetchai/protocols/t_protocol_no_ct,QmRGozuCKYag7jMx7MEWMYZanu13dTDFDAH4u88u9Njetb -fetchai/skills/dependencies_skill,Qma7mKaoTNVo4XsXregtmtM91RVdpYiHeqC61K4efepDhh -fetchai/skills/exception_skill,QmdwB97g4DPZj1dmdWGaAeeddrfy97y2j6Zg6FUPqT2CAp +dummy_author/agents/dummy_aea,Qmdh3dsyHEGYVyXgjbgnMd32D7zPrr6MqNGJ4Ye2gxPsVv +dummy_author/skills/dummy_skill,QmX4qGcgk6Rs7mXszSWGXknzEabQJ44PAcw8YinWe2nRyB +fetchai/connections/dummy_connection,QmNwX9YPbjQER5hypZk7P6kmi4Lt3Z3VuATXzNiCtzrTSR +fetchai/contracts/dummy_contract,QmSMqYSAdM6mfA5beVS8XLjqYoCyzyv8aqq1YQtKZFf6vm +fetchai/protocols/t_protocol,QmcsHPDZjVL4SfVJhyyJfHgUxqfhDA7JM6rR7DwtRraRdj +fetchai/protocols/t_protocol_no_ct,QmfS8z6CiTRFUwduco5F5iFKtj5CKDaeKPdrvqbhyE7Qvn +fetchai/skills/dependencies_skill,QmYmZt4oYbtRod6rjeGyeojCoPDmgzFaWTK322oFS5vf3a +fetchai/skills/exception_skill,QmX7kNkQkcz23vtFExC9rpBN119atNHF8T8viqo2u9yrp8 diff --git a/tests/data/reference_protocols/t_protocol/__init__.py b/tests/data/reference_protocols/t_protocol/__init__.py deleted file mode 100644 index 66c4a36a69..0000000000 --- a/tests/data/reference_protocols/t_protocol/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# ------------------------------------------------------------------------------ -# -# Copyright 2018-2022 Fetch.AI Limited -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# ------------------------------------------------------------------------------ - -""" -This module contains the support resources for the t_protocol protocol. - -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. -""" - -from tests.data.generator.t_protocol.message import TProtocolMessage -from tests.data.generator.t_protocol.serialization import TProtocolSerializer - - -TProtocolMessage.serializer = TProtocolSerializer diff --git a/tests/data/reference_protocols/t_protocol/custom_types.py b/tests/data/reference_protocols/t_protocol/custom_types.py deleted file mode 100644 index 6887755b16..0000000000 --- a/tests/data/reference_protocols/t_protocol/custom_types.py +++ /dev/null @@ -1,121 +0,0 @@ -# -*- coding: utf-8 -*- -# ------------------------------------------------------------------------------ -# -# Copyright 2020 fetchai -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# ------------------------------------------------------------------------------ - -"""This module contains class representations corresponding to every custom type in the protocol specification.""" - -from typing import Dict, List, Set - - -class DataModel: - """This class represents an instance of DataModel.""" - - def __init__( - self, - bytes_field: bytes, - int_field: int, - float_field: float, - bool_field: bool, - str_field: str, - set_field: Set[int], - list_field: List[str], - dict_field: Dict[int, bool], - ): - """Initialise an instance of DataModel.""" - self.bytes_field = bytes_field - self.int_field = int_field - self.float_field = float_field - self.bool_field = bool_field - self.str_field = str_field - self.set_field = set_field - self.list_field = list_field - self.dict_field = dict_field - - @staticmethod - def encode(data_model_protobuf_object, data_model_object: "DataModel") -> None: - """ - Encode an instance of this class into the protocol buffer object. - - The protocol buffer object in the data_model_protobuf_object argument is matched with the instance of this class in the 'data_model_object' argument. - - :param data_model_protobuf_object: the protocol buffer object whose type corresponds with this class. - :param data_model_object: an instance of this class to be encoded in the protocol buffer object. - :return: None - """ - data_model_protobuf_object.bytes_field = data_model_object.bytes_field - data_model_protobuf_object.int_field = data_model_object.int_field - data_model_protobuf_object.float_field = data_model_object.float_field - data_model_protobuf_object.bool_field = data_model_object.bool_field - data_model_protobuf_object.str_field = data_model_object.str_field - - data_model_protobuf_object.set_field.extend(data_model_object.set_field) - data_model_protobuf_object.list_field.extend(data_model_object.list_field) - data_model_protobuf_object.dict_field.update(data_model_object.dict_field) - - @classmethod - def decode(cls, data_model_protobuf_object) -> "DataModel": - """ - Decode a protocol buffer object that corresponds with this class into an instance of this class. - - A new instance of this class is created that matches the protocol buffer object in the 'data_model_protobuf_object' argument. - - :param data_model_protobuf_object: the protocol buffer object whose type corresponds with this class. - :return: A new instance of this class that matches the protocol buffer object in the 'data_model_protobuf_object' argument. - """ - return cls( - bytes_field=data_model_protobuf_object.bytes_field, - int_field=data_model_protobuf_object.int_field, - float_field=data_model_protobuf_object.float_field, - bool_field=data_model_protobuf_object.bool_field, - str_field=data_model_protobuf_object.str_field, - set_field=set(data_model_protobuf_object.set_field), - list_field=data_model_protobuf_object.list_field, - dict_field=data_model_protobuf_object.dict_field, - ) - - def __eq__(self, other): - """Overrides the default implementation""" - if not isinstance(other, self.__class__): - return False - return ( - self.bytes_field == other.bytes_field - and self.int_field == other.int_field - # floats seem to lose some precision when serialised then deserialised using protobuf - # and self.float_field == other.float_field - and self.bool_field == other.bool_field - and self.str_field == other.str_field - and self.set_field == other.set_field - and self.list_field == other.list_field - and self.dict_field == other.dict_field - ) - - -class DataModel1(DataModel): - """This class represents an instance of DataModel1.""" - - -class DataModel2(DataModel): - """This class represents an instance of DataModel2.""" - - -class DataModel3(DataModel): - """This class represents an instance of DataModel3.""" - - -class DataModel4(DataModel): - """This class represents an instance of DataModel3.""" diff --git a/tests/data/reference_protocols/t_protocol/dialogues.py b/tests/data/reference_protocols/t_protocol/dialogues.py deleted file mode 100644 index 0ed7fa95f1..0000000000 --- a/tests/data/reference_protocols/t_protocol/dialogues.py +++ /dev/null @@ -1,151 +0,0 @@ -# -*- coding: utf-8 -*- -# ------------------------------------------------------------------------------ -# -# Copyright 2018-2022 Fetch.AI Limited -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# ------------------------------------------------------------------------------ - -""" -This module contains the classes required for t_protocol dialogue management. - -- TProtocolDialogue: The dialogue class maintains state of a dialogue and manages it. -- TProtocolDialogues: The dialogues class keeps track of all dialogues. -""" - -from abc import ABC -from typing import Callable, Dict, FrozenSet, Type, cast - -from aea.common import Address -from aea.protocols.base import Message -from aea.protocols.dialogue.base import Dialogue, DialogueLabel, Dialogues - -from tests.data.generator.t_protocol.message import TProtocolMessage - - -class TProtocolDialogue(Dialogue): - """The t_protocol dialogue class maintains state of a dialogue and manages it.""" - - INITIAL_PERFORMATIVES: FrozenSet[Message.Performative] = frozenset( - { - TProtocolMessage.Performative.PERFORMATIVE_CT, - TProtocolMessage.Performative.PERFORMATIVE_PT, - } - ) - TERMINAL_PERFORMATIVES: FrozenSet[Message.Performative] = frozenset( - { - TProtocolMessage.Performative.PERFORMATIVE_MT, - TProtocolMessage.Performative.PERFORMATIVE_O, - } - ) - VALID_REPLIES: Dict[Message.Performative, FrozenSet[Message.Performative]] = { - TProtocolMessage.Performative.PERFORMATIVE_CT: frozenset( - {TProtocolMessage.Performative.PERFORMATIVE_PCT} - ), - TProtocolMessage.Performative.PERFORMATIVE_EMPTY_CONTENTS: frozenset( - {TProtocolMessage.Performative.PERFORMATIVE_EMPTY_CONTENTS} - ), - TProtocolMessage.Performative.PERFORMATIVE_MT: frozenset(), - TProtocolMessage.Performative.PERFORMATIVE_O: frozenset(), - TProtocolMessage.Performative.PERFORMATIVE_PCT: frozenset( - { - TProtocolMessage.Performative.PERFORMATIVE_MT, - TProtocolMessage.Performative.PERFORMATIVE_O, - } - ), - TProtocolMessage.Performative.PERFORMATIVE_PMT: frozenset( - { - TProtocolMessage.Performative.PERFORMATIVE_MT, - TProtocolMessage.Performative.PERFORMATIVE_O, - } - ), - TProtocolMessage.Performative.PERFORMATIVE_PT: frozenset( - { - TProtocolMessage.Performative.PERFORMATIVE_PT, - TProtocolMessage.Performative.PERFORMATIVE_PMT, - } - ), - } - - class Role(Dialogue.Role): - """This class defines the agent's role in a t_protocol dialogue.""" - - ROLE_1 = "role_1" - ROLE_2 = "role_2" - - class EndState(Dialogue.EndState): - """This class defines the end states of a t_protocol dialogue.""" - - END_STATE_1 = 0 - END_STATE_2 = 1 - END_STATE_3 = 2 - - def __init__( - self, - dialogue_label: DialogueLabel, - self_address: Address, - role: Dialogue.Role, - message_class: Type[TProtocolMessage] = TProtocolMessage, - ) -> None: - """ - Initialize a dialogue. - - :param dialogue_label: the identifier of the dialogue - :param self_address: the address of the entity for whom this dialogue is maintained - :param role: the role of the agent this dialogue is maintained for - :param message_class: the message class used - """ - Dialogue.__init__( - self, - dialogue_label=dialogue_label, - message_class=message_class, - self_address=self_address, - role=role, - ) - - -class TProtocolDialogues(Dialogues, ABC): - """This class keeps track of all t_protocol dialogues.""" - - END_STATES = frozenset( - { - TProtocolDialogue.EndState.END_STATE_1, - TProtocolDialogue.EndState.END_STATE_2, - TProtocolDialogue.EndState.END_STATE_3, - } - ) - - _keep_terminal_state_dialogues = True - - def __init__( - self, - self_address: Address, - role_from_first_message: Callable[[Message, Address], Dialogue.Role], - dialogue_class: Type[TProtocolDialogue] = TProtocolDialogue, - ) -> None: - """ - Initialize dialogues. - - :param self_address: the address of the entity for whom dialogues are maintained - :param dialogue_class: the dialogue class used - :param role_from_first_message: the callable determining role from first message - """ - Dialogues.__init__( - self, - self_address=self_address, - end_states=cast(FrozenSet[Dialogue.EndState], self.END_STATES), - message_class=TProtocolMessage, - dialogue_class=dialogue_class, - role_from_first_message=role_from_first_message, - ) diff --git a/tests/data/reference_protocols/t_protocol/message.py b/tests/data/reference_protocols/t_protocol/message.py deleted file mode 100644 index 933a026c43..0000000000 --- a/tests/data/reference_protocols/t_protocol/message.py +++ /dev/null @@ -1,1274 +0,0 @@ -# -*- coding: utf-8 -*- -# ------------------------------------------------------------------------------ -# -# Copyright 2018-2022 Fetch.AI Limited -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# ------------------------------------------------------------------------------ - -"""This module contains t_protocol's message definition.""" - -# pylint: disable=too-many-statements,too-many-locals,no-member,too-few-public-methods,too-many-branches,not-an-iterable,unidiomatic-typecheck,unsubscriptable-object -import logging -from typing import Any, Dict, FrozenSet, Optional, Set, Tuple, Union, cast - -from aea.configurations.base import PublicId -from aea.exceptions import AEAEnforceError, enforce -from aea.protocols.base import Message - -from tests.data.generator.t_protocol.custom_types import DataModel as CustomDataModel -from tests.data.generator.t_protocol.custom_types import DataModel1 as CustomDataModel1 -from tests.data.generator.t_protocol.custom_types import DataModel2 as CustomDataModel2 -from tests.data.generator.t_protocol.custom_types import DataModel3 as CustomDataModel3 -from tests.data.generator.t_protocol.custom_types import DataModel4 as CustomDataModel4 - - -_default_logger = logging.getLogger("aea.packages.fetchai.protocols.t_protocol.message") - -DEFAULT_BODY_SIZE = 4 - - -class TProtocolMessage(Message): - """A protocol for testing purposes.""" - - protocol_id = PublicId.from_str("fetchai/t_protocol:0.1.0") - protocol_specification_id = PublicId.from_str( - "some_author/some_protocol_name:1.0.0" - ) - - DataModel = CustomDataModel - - DataModel1 = CustomDataModel1 - - DataModel2 = CustomDataModel2 - - DataModel3 = CustomDataModel3 - - DataModel4 = CustomDataModel4 - - class Performative(Message.Performative): - """Performatives for the t_protocol protocol.""" - - PERFORMATIVE_CT = "performative_ct" - PERFORMATIVE_EMPTY_CONTENTS = "performative_empty_contents" - PERFORMATIVE_MT = "performative_mt" - PERFORMATIVE_O = "performative_o" - PERFORMATIVE_PCT = "performative_pct" - PERFORMATIVE_PMT = "performative_pmt" - PERFORMATIVE_PT = "performative_pt" - - def __str__(self) -> str: - """Get the string representation.""" - return str(self.value) - - _performatives = { - "performative_ct", - "performative_empty_contents", - "performative_mt", - "performative_o", - "performative_pct", - "performative_pmt", - "performative_pt", - } - __slots__: Tuple[str, ...] = tuple() - - class _SlotsCls: - __slots__ = ( - "content_bool", - "content_bytes", - "content_ct", - "content_dict_bool_bool", - "content_dict_bool_bytes", - "content_dict_bool_float", - "content_dict_bool_int", - "content_dict_bool_str", - "content_dict_int_bool", - "content_dict_int_bytes", - "content_dict_int_float", - "content_dict_int_int", - "content_dict_int_str", - "content_dict_str_bool", - "content_dict_str_bytes", - "content_dict_str_float", - "content_dict_str_int", - "content_dict_str_str", - "content_float", - "content_int", - "content_list_bool", - "content_list_bytes", - "content_list_float", - "content_list_int", - "content_list_str", - "content_o_bool", - "content_o_ct", - "content_o_dict_str_int", - "content_o_list_bytes", - "content_o_set_int", - "content_set_bool", - "content_set_bytes", - "content_set_float", - "content_set_int", - "content_set_str", - "content_str", - "content_union_1", - "content_union_2", - "content_union_3", - "dialogue_reference", - "message_id", - "performative", - "target", - ) - - def __init__( - self, - performative: Performative, - dialogue_reference: Tuple[str, str] = ("", ""), - message_id: int = 1, - target: int = 0, - **kwargs: Any, - ): - """ - Initialise an instance of TProtocolMessage. - - :param message_id: the message id. - :param dialogue_reference: the dialogue reference. - :param target: the message target. - :param performative: the message performative. - :param **kwargs: extra options. - """ - super().__init__( - dialogue_reference=dialogue_reference, - message_id=message_id, - target=target, - performative=TProtocolMessage.Performative(performative), - **kwargs, - ) - - @property - def valid_performatives(self) -> Set[str]: - """Get valid performatives.""" - return self._performatives - - @property - def dialogue_reference(self) -> Tuple[str, str]: - """Get the dialogue_reference of the message.""" - enforce(self.is_set("dialogue_reference"), "dialogue_reference is not set.") - return cast(Tuple[str, str], self.get("dialogue_reference")) - - @property - def message_id(self) -> int: - """Get the message_id of the message.""" - enforce(self.is_set("message_id"), "message_id is not set.") - return cast(int, self.get("message_id")) - - @property - def performative(self) -> Performative: # type: ignore # noqa: F821 - """Get the performative of the message.""" - enforce(self.is_set("performative"), "performative is not set.") - return cast(TProtocolMessage.Performative, self.get("performative")) - - @property - def target(self) -> int: - """Get the target of the message.""" - enforce(self.is_set("target"), "target is not set.") - return cast(int, self.get("target")) - - @property - def content_bool(self) -> bool: - """Get the 'content_bool' content from the message.""" - enforce(self.is_set("content_bool"), "'content_bool' content is not set.") - return cast(bool, self.get("content_bool")) - - @property - def content_bytes(self) -> bytes: - """Get the 'content_bytes' content from the message.""" - enforce(self.is_set("content_bytes"), "'content_bytes' content is not set.") - return cast(bytes, self.get("content_bytes")) - - @property - def content_ct(self) -> CustomDataModel: - """Get the 'content_ct' content from the message.""" - enforce(self.is_set("content_ct"), "'content_ct' content is not set.") - return cast(CustomDataModel, self.get("content_ct")) - - @property - def content_dict_bool_bool(self) -> Dict[bool, bool]: - """Get the 'content_dict_bool_bool' content from the message.""" - enforce( - self.is_set("content_dict_bool_bool"), - "'content_dict_bool_bool' content is not set.", - ) - return cast(Dict[bool, bool], self.get("content_dict_bool_bool")) - - @property - def content_dict_bool_bytes(self) -> Dict[bool, bytes]: - """Get the 'content_dict_bool_bytes' content from the message.""" - enforce( - self.is_set("content_dict_bool_bytes"), - "'content_dict_bool_bytes' content is not set.", - ) - return cast(Dict[bool, bytes], self.get("content_dict_bool_bytes")) - - @property - def content_dict_bool_float(self) -> Dict[bool, float]: - """Get the 'content_dict_bool_float' content from the message.""" - enforce( - self.is_set("content_dict_bool_float"), - "'content_dict_bool_float' content is not set.", - ) - return cast(Dict[bool, float], self.get("content_dict_bool_float")) - - @property - def content_dict_bool_int(self) -> Dict[bool, int]: - """Get the 'content_dict_bool_int' content from the message.""" - enforce( - self.is_set("content_dict_bool_int"), - "'content_dict_bool_int' content is not set.", - ) - return cast(Dict[bool, int], self.get("content_dict_bool_int")) - - @property - def content_dict_bool_str(self) -> Dict[bool, str]: - """Get the 'content_dict_bool_str' content from the message.""" - enforce( - self.is_set("content_dict_bool_str"), - "'content_dict_bool_str' content is not set.", - ) - return cast(Dict[bool, str], self.get("content_dict_bool_str")) - - @property - def content_dict_int_bool(self) -> Dict[int, bool]: - """Get the 'content_dict_int_bool' content from the message.""" - enforce( - self.is_set("content_dict_int_bool"), - "'content_dict_int_bool' content is not set.", - ) - return cast(Dict[int, bool], self.get("content_dict_int_bool")) - - @property - def content_dict_int_bytes(self) -> Dict[int, bytes]: - """Get the 'content_dict_int_bytes' content from the message.""" - enforce( - self.is_set("content_dict_int_bytes"), - "'content_dict_int_bytes' content is not set.", - ) - return cast(Dict[int, bytes], self.get("content_dict_int_bytes")) - - @property - def content_dict_int_float(self) -> Dict[int, float]: - """Get the 'content_dict_int_float' content from the message.""" - enforce( - self.is_set("content_dict_int_float"), - "'content_dict_int_float' content is not set.", - ) - return cast(Dict[int, float], self.get("content_dict_int_float")) - - @property - def content_dict_int_int(self) -> Dict[int, int]: - """Get the 'content_dict_int_int' content from the message.""" - enforce( - self.is_set("content_dict_int_int"), - "'content_dict_int_int' content is not set.", - ) - return cast(Dict[int, int], self.get("content_dict_int_int")) - - @property - def content_dict_int_str(self) -> Dict[int, str]: - """Get the 'content_dict_int_str' content from the message.""" - enforce( - self.is_set("content_dict_int_str"), - "'content_dict_int_str' content is not set.", - ) - return cast(Dict[int, str], self.get("content_dict_int_str")) - - @property - def content_dict_str_bool(self) -> Dict[str, bool]: - """Get the 'content_dict_str_bool' content from the message.""" - enforce( - self.is_set("content_dict_str_bool"), - "'content_dict_str_bool' content is not set.", - ) - return cast(Dict[str, bool], self.get("content_dict_str_bool")) - - @property - def content_dict_str_bytes(self) -> Dict[str, bytes]: - """Get the 'content_dict_str_bytes' content from the message.""" - enforce( - self.is_set("content_dict_str_bytes"), - "'content_dict_str_bytes' content is not set.", - ) - return cast(Dict[str, bytes], self.get("content_dict_str_bytes")) - - @property - def content_dict_str_float(self) -> Dict[str, float]: - """Get the 'content_dict_str_float' content from the message.""" - enforce( - self.is_set("content_dict_str_float"), - "'content_dict_str_float' content is not set.", - ) - return cast(Dict[str, float], self.get("content_dict_str_float")) - - @property - def content_dict_str_int(self) -> Dict[str, int]: - """Get the 'content_dict_str_int' content from the message.""" - enforce( - self.is_set("content_dict_str_int"), - "'content_dict_str_int' content is not set.", - ) - return cast(Dict[str, int], self.get("content_dict_str_int")) - - @property - def content_dict_str_str(self) -> Dict[str, str]: - """Get the 'content_dict_str_str' content from the message.""" - enforce( - self.is_set("content_dict_str_str"), - "'content_dict_str_str' content is not set.", - ) - return cast(Dict[str, str], self.get("content_dict_str_str")) - - @property - def content_float(self) -> float: - """Get the 'content_float' content from the message.""" - enforce(self.is_set("content_float"), "'content_float' content is not set.") - return cast(float, self.get("content_float")) - - @property - def content_int(self) -> int: - """Get the 'content_int' content from the message.""" - enforce(self.is_set("content_int"), "'content_int' content is not set.") - return cast(int, self.get("content_int")) - - @property - def content_list_bool(self) -> Tuple[bool, ...]: - """Get the 'content_list_bool' content from the message.""" - enforce( - self.is_set("content_list_bool"), "'content_list_bool' content is not set." - ) - return cast(Tuple[bool, ...], self.get("content_list_bool")) - - @property - def content_list_bytes(self) -> Tuple[bytes, ...]: - """Get the 'content_list_bytes' content from the message.""" - enforce( - self.is_set("content_list_bytes"), - "'content_list_bytes' content is not set.", - ) - return cast(Tuple[bytes, ...], self.get("content_list_bytes")) - - @property - def content_list_float(self) -> Tuple[float, ...]: - """Get the 'content_list_float' content from the message.""" - enforce( - self.is_set("content_list_float"), - "'content_list_float' content is not set.", - ) - return cast(Tuple[float, ...], self.get("content_list_float")) - - @property - def content_list_int(self) -> Tuple[int, ...]: - """Get the 'content_list_int' content from the message.""" - enforce( - self.is_set("content_list_int"), "'content_list_int' content is not set." - ) - return cast(Tuple[int, ...], self.get("content_list_int")) - - @property - def content_list_str(self) -> Tuple[str, ...]: - """Get the 'content_list_str' content from the message.""" - enforce( - self.is_set("content_list_str"), "'content_list_str' content is not set." - ) - return cast(Tuple[str, ...], self.get("content_list_str")) - - @property - def content_o_bool(self) -> Optional[bool]: - """Get the 'content_o_bool' content from the message.""" - return cast(Optional[bool], self.get("content_o_bool")) - - @property - def content_o_ct(self) -> Optional[CustomDataModel4]: - """Get the 'content_o_ct' content from the message.""" - return cast(Optional[CustomDataModel4], self.get("content_o_ct")) - - @property - def content_o_dict_str_int(self) -> Optional[Dict[str, int]]: - """Get the 'content_o_dict_str_int' content from the message.""" - return cast(Optional[Dict[str, int]], self.get("content_o_dict_str_int")) - - @property - def content_o_list_bytes(self) -> Optional[Tuple[bytes, ...]]: - """Get the 'content_o_list_bytes' content from the message.""" - return cast(Optional[Tuple[bytes, ...]], self.get("content_o_list_bytes")) - - @property - def content_o_set_int(self) -> Optional[FrozenSet[int]]: - """Get the 'content_o_set_int' content from the message.""" - return cast(Optional[FrozenSet[int]], self.get("content_o_set_int")) - - @property - def content_set_bool(self) -> FrozenSet[bool]: - """Get the 'content_set_bool' content from the message.""" - enforce( - self.is_set("content_set_bool"), "'content_set_bool' content is not set." - ) - return cast(FrozenSet[bool], self.get("content_set_bool")) - - @property - def content_set_bytes(self) -> FrozenSet[bytes]: - """Get the 'content_set_bytes' content from the message.""" - enforce( - self.is_set("content_set_bytes"), "'content_set_bytes' content is not set." - ) - return cast(FrozenSet[bytes], self.get("content_set_bytes")) - - @property - def content_set_float(self) -> FrozenSet[float]: - """Get the 'content_set_float' content from the message.""" - enforce( - self.is_set("content_set_float"), "'content_set_float' content is not set." - ) - return cast(FrozenSet[float], self.get("content_set_float")) - - @property - def content_set_int(self) -> FrozenSet[int]: - """Get the 'content_set_int' content from the message.""" - enforce(self.is_set("content_set_int"), "'content_set_int' content is not set.") - return cast(FrozenSet[int], self.get("content_set_int")) - - @property - def content_set_str(self) -> FrozenSet[str]: - """Get the 'content_set_str' content from the message.""" - enforce(self.is_set("content_set_str"), "'content_set_str' content is not set.") - return cast(FrozenSet[str], self.get("content_set_str")) - - @property - def content_str(self) -> str: - """Get the 'content_str' content from the message.""" - enforce(self.is_set("content_str"), "'content_str' content is not set.") - return cast(str, self.get("content_str")) - - @property - def content_union_1( - self, - ) -> Union[ - CustomDataModel1, - bytes, - int, - float, - bool, - str, - FrozenSet[int], - Tuple[bool, ...], - Dict[str, int], - ]: - """Get the 'content_union_1' content from the message.""" - enforce(self.is_set("content_union_1"), "'content_union_1' content is not set.") - return cast( - Union[ - CustomDataModel1, - bytes, - int, - float, - bool, - str, - FrozenSet[int], - Tuple[bool, ...], - Dict[str, int], - ], - self.get("content_union_1"), - ) - - @property - def content_union_2( - self, - ) -> Union[ - FrozenSet[bytes], - FrozenSet[int], - FrozenSet[str], - Tuple[float, ...], - Tuple[bool, ...], - Tuple[bytes, ...], - Dict[str, int], - Dict[int, float], - Dict[bool, bytes], - int, - ]: - """Get the 'content_union_2' content from the message.""" - enforce(self.is_set("content_union_2"), "'content_union_2' content is not set.") - return cast( - Union[ - FrozenSet[bytes], - FrozenSet[int], - FrozenSet[str], - Tuple[float, ...], - Tuple[bool, ...], - Tuple[bytes, ...], - Dict[str, int], - Dict[int, float], - Dict[bool, bytes], - int, - ], - self.get("content_union_2"), - ) - - @property - def content_union_3(self) -> Union[CustomDataModel2, CustomDataModel3]: - """Get the 'content_union_3' content from the message.""" - enforce(self.is_set("content_union_3"), "'content_union_3' content is not set.") - return cast( - Union[CustomDataModel2, CustomDataModel3], self.get("content_union_3") - ) - - def _is_consistent(self) -> bool: - """Check that the message follows the t_protocol protocol.""" - try: - enforce( - isinstance(self.dialogue_reference, tuple), - "Invalid type for 'dialogue_reference'. Expected 'tuple'. Found '{}'.".format( - type(self.dialogue_reference) - ), - ) - enforce( - isinstance(self.dialogue_reference[0], str), - "Invalid type for 'dialogue_reference[0]'. Expected 'str'. Found '{}'.".format( - type(self.dialogue_reference[0]) - ), - ) - enforce( - isinstance(self.dialogue_reference[1], str), - "Invalid type for 'dialogue_reference[1]'. Expected 'str'. Found '{}'.".format( - type(self.dialogue_reference[1]) - ), - ) - enforce( - type(self.message_id) is int, - "Invalid type for 'message_id'. Expected 'int'. Found '{}'.".format( - type(self.message_id) - ), - ) - enforce( - type(self.target) is int, - "Invalid type for 'target'. Expected 'int'. Found '{}'.".format( - type(self.target) - ), - ) - - # Light Protocol Rule 2 - # Check correct performative - enforce( - isinstance(self.performative, TProtocolMessage.Performative), - "Invalid 'performative'. Expected either of '{}'. Found '{}'.".format( - self.valid_performatives, self.performative - ), - ) - - # Check correct contents - actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE - expected_nb_of_contents = 0 - if self.performative == TProtocolMessage.Performative.PERFORMATIVE_CT: - expected_nb_of_contents = 1 - enforce( - isinstance(self.content_ct, CustomDataModel), - "Invalid type for content 'content_ct'. Expected 'DataModel'. Found '{}'.".format( - type(self.content_ct) - ), - ) - elif self.performative == TProtocolMessage.Performative.PERFORMATIVE_PT: - expected_nb_of_contents = 5 - enforce( - isinstance(self.content_bytes, bytes), - "Invalid type for content 'content_bytes'. Expected 'bytes'. Found '{}'.".format( - type(self.content_bytes) - ), - ) - enforce( - type(self.content_int) is int, - "Invalid type for content 'content_int'. Expected 'int'. Found '{}'.".format( - type(self.content_int) - ), - ) - enforce( - isinstance(self.content_float, float), - "Invalid type for content 'content_float'. Expected 'float'. Found '{}'.".format( - type(self.content_float) - ), - ) - enforce( - isinstance(self.content_bool, bool), - "Invalid type for content 'content_bool'. Expected 'bool'. Found '{}'.".format( - type(self.content_bool) - ), - ) - enforce( - isinstance(self.content_str, str), - "Invalid type for content 'content_str'. Expected 'str'. Found '{}'.".format( - type(self.content_str) - ), - ) - elif self.performative == TProtocolMessage.Performative.PERFORMATIVE_PCT: - expected_nb_of_contents = 10 - enforce( - isinstance(self.content_set_bytes, frozenset), - "Invalid type for content 'content_set_bytes'. Expected 'frozenset'. Found '{}'.".format( - type(self.content_set_bytes) - ), - ) - enforce( - all( - isinstance(element, bytes) for element in self.content_set_bytes - ), - "Invalid type for frozenset elements in content 'content_set_bytes'. Expected 'bytes'.", - ) - enforce( - isinstance(self.content_set_int, frozenset), - "Invalid type for content 'content_set_int'. Expected 'frozenset'. Found '{}'.".format( - type(self.content_set_int) - ), - ) - enforce( - all(type(element) is int for element in self.content_set_int), - "Invalid type for frozenset elements in content 'content_set_int'. Expected 'int'.", - ) - enforce( - isinstance(self.content_set_float, frozenset), - "Invalid type for content 'content_set_float'. Expected 'frozenset'. Found '{}'.".format( - type(self.content_set_float) - ), - ) - enforce( - all( - isinstance(element, float) for element in self.content_set_float - ), - "Invalid type for frozenset elements in content 'content_set_float'. Expected 'float'.", - ) - enforce( - isinstance(self.content_set_bool, frozenset), - "Invalid type for content 'content_set_bool'. Expected 'frozenset'. Found '{}'.".format( - type(self.content_set_bool) - ), - ) - enforce( - all(isinstance(element, bool) for element in self.content_set_bool), - "Invalid type for frozenset elements in content 'content_set_bool'. Expected 'bool'.", - ) - enforce( - isinstance(self.content_set_str, frozenset), - "Invalid type for content 'content_set_str'. Expected 'frozenset'. Found '{}'.".format( - type(self.content_set_str) - ), - ) - enforce( - all(isinstance(element, str) for element in self.content_set_str), - "Invalid type for frozenset elements in content 'content_set_str'. Expected 'str'.", - ) - enforce( - isinstance(self.content_list_bytes, tuple), - "Invalid type for content 'content_list_bytes'. Expected 'tuple'. Found '{}'.".format( - type(self.content_list_bytes) - ), - ) - enforce( - all( - isinstance(element, bytes) - for element in self.content_list_bytes - ), - "Invalid type for tuple elements in content 'content_list_bytes'. Expected 'bytes'.", - ) - enforce( - isinstance(self.content_list_int, tuple), - "Invalid type for content 'content_list_int'. Expected 'tuple'. Found '{}'.".format( - type(self.content_list_int) - ), - ) - enforce( - all(type(element) is int for element in self.content_list_int), - "Invalid type for tuple elements in content 'content_list_int'. Expected 'int'.", - ) - enforce( - isinstance(self.content_list_float, tuple), - "Invalid type for content 'content_list_float'. Expected 'tuple'. Found '{}'.".format( - type(self.content_list_float) - ), - ) - enforce( - all( - isinstance(element, float) - for element in self.content_list_float - ), - "Invalid type for tuple elements in content 'content_list_float'. Expected 'float'.", - ) - enforce( - isinstance(self.content_list_bool, tuple), - "Invalid type for content 'content_list_bool'. Expected 'tuple'. Found '{}'.".format( - type(self.content_list_bool) - ), - ) - enforce( - all( - isinstance(element, bool) for element in self.content_list_bool - ), - "Invalid type for tuple elements in content 'content_list_bool'. Expected 'bool'.", - ) - enforce( - isinstance(self.content_list_str, tuple), - "Invalid type for content 'content_list_str'. Expected 'tuple'. Found '{}'.".format( - type(self.content_list_str) - ), - ) - enforce( - all(isinstance(element, str) for element in self.content_list_str), - "Invalid type for tuple elements in content 'content_list_str'. Expected 'str'.", - ) - elif self.performative == TProtocolMessage.Performative.PERFORMATIVE_PMT: - expected_nb_of_contents = 15 - enforce( - isinstance(self.content_dict_int_bytes, dict), - "Invalid type for content 'content_dict_int_bytes'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_int_bytes) - ), - ) - for ( - key_of_content_dict_int_bytes, - value_of_content_dict_int_bytes, - ) in self.content_dict_int_bytes.items(): - enforce( - type(key_of_content_dict_int_bytes) is int, - "Invalid type for dictionary keys in content 'content_dict_int_bytes'. Expected 'int'. Found '{}'.".format( - type(key_of_content_dict_int_bytes) - ), - ) - enforce( - isinstance(value_of_content_dict_int_bytes, bytes), - "Invalid type for dictionary values in content 'content_dict_int_bytes'. Expected 'bytes'. Found '{}'.".format( - type(value_of_content_dict_int_bytes) - ), - ) - enforce( - isinstance(self.content_dict_int_int, dict), - "Invalid type for content 'content_dict_int_int'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_int_int) - ), - ) - for ( - key_of_content_dict_int_int, - value_of_content_dict_int_int, - ) in self.content_dict_int_int.items(): - enforce( - type(key_of_content_dict_int_int) is int, - "Invalid type for dictionary keys in content 'content_dict_int_int'. Expected 'int'. Found '{}'.".format( - type(key_of_content_dict_int_int) - ), - ) - enforce( - type(value_of_content_dict_int_int) is int, - "Invalid type for dictionary values in content 'content_dict_int_int'. Expected 'int'. Found '{}'.".format( - type(value_of_content_dict_int_int) - ), - ) - enforce( - isinstance(self.content_dict_int_float, dict), - "Invalid type for content 'content_dict_int_float'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_int_float) - ), - ) - for ( - key_of_content_dict_int_float, - value_of_content_dict_int_float, - ) in self.content_dict_int_float.items(): - enforce( - type(key_of_content_dict_int_float) is int, - "Invalid type for dictionary keys in content 'content_dict_int_float'. Expected 'int'. Found '{}'.".format( - type(key_of_content_dict_int_float) - ), - ) - enforce( - isinstance(value_of_content_dict_int_float, float), - "Invalid type for dictionary values in content 'content_dict_int_float'. Expected 'float'. Found '{}'.".format( - type(value_of_content_dict_int_float) - ), - ) - enforce( - isinstance(self.content_dict_int_bool, dict), - "Invalid type for content 'content_dict_int_bool'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_int_bool) - ), - ) - for ( - key_of_content_dict_int_bool, - value_of_content_dict_int_bool, - ) in self.content_dict_int_bool.items(): - enforce( - type(key_of_content_dict_int_bool) is int, - "Invalid type for dictionary keys in content 'content_dict_int_bool'. Expected 'int'. Found '{}'.".format( - type(key_of_content_dict_int_bool) - ), - ) - enforce( - isinstance(value_of_content_dict_int_bool, bool), - "Invalid type for dictionary values in content 'content_dict_int_bool'. Expected 'bool'. Found '{}'.".format( - type(value_of_content_dict_int_bool) - ), - ) - enforce( - isinstance(self.content_dict_int_str, dict), - "Invalid type for content 'content_dict_int_str'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_int_str) - ), - ) - for ( - key_of_content_dict_int_str, - value_of_content_dict_int_str, - ) in self.content_dict_int_str.items(): - enforce( - type(key_of_content_dict_int_str) is int, - "Invalid type for dictionary keys in content 'content_dict_int_str'. Expected 'int'. Found '{}'.".format( - type(key_of_content_dict_int_str) - ), - ) - enforce( - isinstance(value_of_content_dict_int_str, str), - "Invalid type for dictionary values in content 'content_dict_int_str'. Expected 'str'. Found '{}'.".format( - type(value_of_content_dict_int_str) - ), - ) - enforce( - isinstance(self.content_dict_bool_bytes, dict), - "Invalid type for content 'content_dict_bool_bytes'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_bool_bytes) - ), - ) - for ( - key_of_content_dict_bool_bytes, - value_of_content_dict_bool_bytes, - ) in self.content_dict_bool_bytes.items(): - enforce( - isinstance(key_of_content_dict_bool_bytes, bool), - "Invalid type for dictionary keys in content 'content_dict_bool_bytes'. Expected 'bool'. Found '{}'.".format( - type(key_of_content_dict_bool_bytes) - ), - ) - enforce( - isinstance(value_of_content_dict_bool_bytes, bytes), - "Invalid type for dictionary values in content 'content_dict_bool_bytes'. Expected 'bytes'. Found '{}'.".format( - type(value_of_content_dict_bool_bytes) - ), - ) - enforce( - isinstance(self.content_dict_bool_int, dict), - "Invalid type for content 'content_dict_bool_int'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_bool_int) - ), - ) - for ( - key_of_content_dict_bool_int, - value_of_content_dict_bool_int, - ) in self.content_dict_bool_int.items(): - enforce( - isinstance(key_of_content_dict_bool_int, bool), - "Invalid type for dictionary keys in content 'content_dict_bool_int'. Expected 'bool'. Found '{}'.".format( - type(key_of_content_dict_bool_int) - ), - ) - enforce( - type(value_of_content_dict_bool_int) is int, - "Invalid type for dictionary values in content 'content_dict_bool_int'. Expected 'int'. Found '{}'.".format( - type(value_of_content_dict_bool_int) - ), - ) - enforce( - isinstance(self.content_dict_bool_float, dict), - "Invalid type for content 'content_dict_bool_float'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_bool_float) - ), - ) - for ( - key_of_content_dict_bool_float, - value_of_content_dict_bool_float, - ) in self.content_dict_bool_float.items(): - enforce( - isinstance(key_of_content_dict_bool_float, bool), - "Invalid type for dictionary keys in content 'content_dict_bool_float'. Expected 'bool'. Found '{}'.".format( - type(key_of_content_dict_bool_float) - ), - ) - enforce( - isinstance(value_of_content_dict_bool_float, float), - "Invalid type for dictionary values in content 'content_dict_bool_float'. Expected 'float'. Found '{}'.".format( - type(value_of_content_dict_bool_float) - ), - ) - enforce( - isinstance(self.content_dict_bool_bool, dict), - "Invalid type for content 'content_dict_bool_bool'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_bool_bool) - ), - ) - for ( - key_of_content_dict_bool_bool, - value_of_content_dict_bool_bool, - ) in self.content_dict_bool_bool.items(): - enforce( - isinstance(key_of_content_dict_bool_bool, bool), - "Invalid type for dictionary keys in content 'content_dict_bool_bool'. Expected 'bool'. Found '{}'.".format( - type(key_of_content_dict_bool_bool) - ), - ) - enforce( - isinstance(value_of_content_dict_bool_bool, bool), - "Invalid type for dictionary values in content 'content_dict_bool_bool'. Expected 'bool'. Found '{}'.".format( - type(value_of_content_dict_bool_bool) - ), - ) - enforce( - isinstance(self.content_dict_bool_str, dict), - "Invalid type for content 'content_dict_bool_str'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_bool_str) - ), - ) - for ( - key_of_content_dict_bool_str, - value_of_content_dict_bool_str, - ) in self.content_dict_bool_str.items(): - enforce( - isinstance(key_of_content_dict_bool_str, bool), - "Invalid type for dictionary keys in content 'content_dict_bool_str'. Expected 'bool'. Found '{}'.".format( - type(key_of_content_dict_bool_str) - ), - ) - enforce( - isinstance(value_of_content_dict_bool_str, str), - "Invalid type for dictionary values in content 'content_dict_bool_str'. Expected 'str'. Found '{}'.".format( - type(value_of_content_dict_bool_str) - ), - ) - enforce( - isinstance(self.content_dict_str_bytes, dict), - "Invalid type for content 'content_dict_str_bytes'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_str_bytes) - ), - ) - for ( - key_of_content_dict_str_bytes, - value_of_content_dict_str_bytes, - ) in self.content_dict_str_bytes.items(): - enforce( - isinstance(key_of_content_dict_str_bytes, str), - "Invalid type for dictionary keys in content 'content_dict_str_bytes'. Expected 'str'. Found '{}'.".format( - type(key_of_content_dict_str_bytes) - ), - ) - enforce( - isinstance(value_of_content_dict_str_bytes, bytes), - "Invalid type for dictionary values in content 'content_dict_str_bytes'. Expected 'bytes'. Found '{}'.".format( - type(value_of_content_dict_str_bytes) - ), - ) - enforce( - isinstance(self.content_dict_str_int, dict), - "Invalid type for content 'content_dict_str_int'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_str_int) - ), - ) - for ( - key_of_content_dict_str_int, - value_of_content_dict_str_int, - ) in self.content_dict_str_int.items(): - enforce( - isinstance(key_of_content_dict_str_int, str), - "Invalid type for dictionary keys in content 'content_dict_str_int'. Expected 'str'. Found '{}'.".format( - type(key_of_content_dict_str_int) - ), - ) - enforce( - type(value_of_content_dict_str_int) is int, - "Invalid type for dictionary values in content 'content_dict_str_int'. Expected 'int'. Found '{}'.".format( - type(value_of_content_dict_str_int) - ), - ) - enforce( - isinstance(self.content_dict_str_float, dict), - "Invalid type for content 'content_dict_str_float'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_str_float) - ), - ) - for ( - key_of_content_dict_str_float, - value_of_content_dict_str_float, - ) in self.content_dict_str_float.items(): - enforce( - isinstance(key_of_content_dict_str_float, str), - "Invalid type for dictionary keys in content 'content_dict_str_float'. Expected 'str'. Found '{}'.".format( - type(key_of_content_dict_str_float) - ), - ) - enforce( - isinstance(value_of_content_dict_str_float, float), - "Invalid type for dictionary values in content 'content_dict_str_float'. Expected 'float'. Found '{}'.".format( - type(value_of_content_dict_str_float) - ), - ) - enforce( - isinstance(self.content_dict_str_bool, dict), - "Invalid type for content 'content_dict_str_bool'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_str_bool) - ), - ) - for ( - key_of_content_dict_str_bool, - value_of_content_dict_str_bool, - ) in self.content_dict_str_bool.items(): - enforce( - isinstance(key_of_content_dict_str_bool, str), - "Invalid type for dictionary keys in content 'content_dict_str_bool'. Expected 'str'. Found '{}'.".format( - type(key_of_content_dict_str_bool) - ), - ) - enforce( - isinstance(value_of_content_dict_str_bool, bool), - "Invalid type for dictionary values in content 'content_dict_str_bool'. Expected 'bool'. Found '{}'.".format( - type(value_of_content_dict_str_bool) - ), - ) - enforce( - isinstance(self.content_dict_str_str, dict), - "Invalid type for content 'content_dict_str_str'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_str_str) - ), - ) - for ( - key_of_content_dict_str_str, - value_of_content_dict_str_str, - ) in self.content_dict_str_str.items(): - enforce( - isinstance(key_of_content_dict_str_str, str), - "Invalid type for dictionary keys in content 'content_dict_str_str'. Expected 'str'. Found '{}'.".format( - type(key_of_content_dict_str_str) - ), - ) - enforce( - isinstance(value_of_content_dict_str_str, str), - "Invalid type for dictionary values in content 'content_dict_str_str'. Expected 'str'. Found '{}'.".format( - type(value_of_content_dict_str_str) - ), - ) - elif self.performative == TProtocolMessage.Performative.PERFORMATIVE_MT: - expected_nb_of_contents = 3 - enforce( - isinstance(self.content_union_1, CustomDataModel1) - or isinstance(self.content_union_1, bool) - or isinstance(self.content_union_1, bytes) - or isinstance(self.content_union_1, dict) - or isinstance(self.content_union_1, float) - or isinstance(self.content_union_1, frozenset) - or type(self.content_union_1) is int - or isinstance(self.content_union_1, str) - or isinstance(self.content_union_1, tuple), - "Invalid type for content 'content_union_1'. Expected either of '['DataModel1', 'bool', 'bytes', 'dict', 'float', 'frozenset', 'int', 'str', 'tuple']'. Found '{}'.".format( - type(self.content_union_1) - ), - ) - if isinstance(self.content_union_1, frozenset): - enforce( - all(type(element) is int for element in self.content_union_1), - "Invalid type for elements of content 'content_union_1'. Expected 'int'.", - ) - if isinstance(self.content_union_1, tuple): - enforce( - all( - isinstance(element, bool) - for element in self.content_union_1 - ), - "Invalid type for tuple elements in content 'content_union_1'. Expected 'bool'.", - ) - if isinstance(self.content_union_1, dict): - for ( - key_of_content_union_1, - value_of_content_union_1, - ) in self.content_union_1.items(): - enforce( - ( - isinstance(key_of_content_union_1, str) - and type(value_of_content_union_1) is int - ), - "Invalid type for dictionary key, value in content 'content_union_1'. Expected 'str', 'int'.", - ) - enforce( - isinstance(self.content_union_2, dict) - or isinstance(self.content_union_2, frozenset) - or type(self.content_union_2) is int - or isinstance(self.content_union_2, tuple), - "Invalid type for content 'content_union_2'. Expected either of '['dict', 'frozenset', 'int', 'tuple']'. Found '{}'.".format( - type(self.content_union_2) - ), - ) - if isinstance(self.content_union_2, frozenset): - enforce( - all( - isinstance(element, bytes) - for element in self.content_union_2 - ) - or all(type(element) is int for element in self.content_union_2) - or all( - isinstance(element, str) for element in self.content_union_2 - ), - "Invalid type for frozenset elements in content 'content_union_2'. Expected either 'bytes' or 'int' or 'str'.", - ) - if isinstance(self.content_union_2, tuple): - enforce( - all( - isinstance(element, bool) - for element in self.content_union_2 - ) - or all( - isinstance(element, bytes) - for element in self.content_union_2 - ) - or all( - isinstance(element, float) - for element in self.content_union_2 - ), - "Invalid type for tuple elements in content 'content_union_2'. Expected either 'bool' or 'bytes' or 'float'.", - ) - if isinstance(self.content_union_2, dict): - for ( - key_of_content_union_2, - value_of_content_union_2, - ) in self.content_union_2.items(): - enforce( - ( - isinstance(key_of_content_union_2, bool) - and isinstance(value_of_content_union_2, bytes) - ) - or ( - type(key_of_content_union_2) is int - and isinstance(value_of_content_union_2, float) - ) - or ( - isinstance(key_of_content_union_2, str) - and type(value_of_content_union_2) is int - ), - "Invalid type for dictionary key, value in content 'content_union_2'. Expected 'bool','bytes' or 'int','float' or 'str','int'.", - ) - enforce( - isinstance(self.content_union_3, CustomDataModel2) - or isinstance(self.content_union_3, CustomDataModel3), - "Invalid type for content 'content_union_3'. Expected either of '['DataModel2', 'DataModel3']'. Found '{}'.".format( - type(self.content_union_3) - ), - ) - elif self.performative == TProtocolMessage.Performative.PERFORMATIVE_O: - expected_nb_of_contents = 0 - if self.is_set("content_o_ct"): - expected_nb_of_contents += 1 - content_o_ct = cast(CustomDataModel4, self.content_o_ct) - enforce( - isinstance(content_o_ct, CustomDataModel4), - "Invalid type for content 'content_o_ct'. Expected 'DataModel4'. Found '{}'.".format( - type(content_o_ct) - ), - ) - if self.is_set("content_o_bool"): - expected_nb_of_contents += 1 - content_o_bool = cast(bool, self.content_o_bool) - enforce( - isinstance(content_o_bool, bool), - "Invalid type for content 'content_o_bool'. Expected 'bool'. Found '{}'.".format( - type(content_o_bool) - ), - ) - if self.is_set("content_o_set_int"): - expected_nb_of_contents += 1 - content_o_set_int = cast(FrozenSet[int], self.content_o_set_int) - enforce( - isinstance(content_o_set_int, frozenset), - "Invalid type for content 'content_o_set_int'. Expected 'frozenset'. Found '{}'.".format( - type(content_o_set_int) - ), - ) - enforce( - all(type(element) is int for element in content_o_set_int), - "Invalid type for frozenset elements in content 'content_o_set_int'. Expected 'int'.", - ) - if self.is_set("content_o_list_bytes"): - expected_nb_of_contents += 1 - content_o_list_bytes = cast( - Tuple[bytes, ...], self.content_o_list_bytes - ) - enforce( - isinstance(content_o_list_bytes, tuple), - "Invalid type for content 'content_o_list_bytes'. Expected 'tuple'. Found '{}'.".format( - type(content_o_list_bytes) - ), - ) - enforce( - all( - isinstance(element, bytes) - for element in content_o_list_bytes - ), - "Invalid type for tuple elements in content 'content_o_list_bytes'. Expected 'bytes'.", - ) - if self.is_set("content_o_dict_str_int"): - expected_nb_of_contents += 1 - content_o_dict_str_int = cast( - Dict[str, int], self.content_o_dict_str_int - ) - enforce( - isinstance(content_o_dict_str_int, dict), - "Invalid type for content 'content_o_dict_str_int'. Expected 'dict'. Found '{}'.".format( - type(content_o_dict_str_int) - ), - ) - for ( - key_of_content_o_dict_str_int, - value_of_content_o_dict_str_int, - ) in content_o_dict_str_int.items(): - enforce( - isinstance(key_of_content_o_dict_str_int, str), - "Invalid type for dictionary keys in content 'content_o_dict_str_int'. Expected 'str'. Found '{}'.".format( - type(key_of_content_o_dict_str_int) - ), - ) - enforce( - type(value_of_content_o_dict_str_int) is int, - "Invalid type for dictionary values in content 'content_o_dict_str_int'. Expected 'int'. Found '{}'.".format( - type(value_of_content_o_dict_str_int) - ), - ) - elif ( - self.performative - == TProtocolMessage.Performative.PERFORMATIVE_EMPTY_CONTENTS - ): - expected_nb_of_contents = 0 - - # Check correct content count - enforce( - expected_nb_of_contents == actual_nb_of_contents, - "Incorrect number of contents. Expected {}. Found {}".format( - expected_nb_of_contents, actual_nb_of_contents - ), - ) - - # Light Protocol Rule 3 - if self.message_id == 1: - enforce( - self.target == 0, - "Invalid 'target'. Expected 0 (because 'message_id' is 1). Found {}.".format( - self.target - ), - ) - except (AEAEnforceError, ValueError, KeyError) as e: - _default_logger.error(str(e)) - return False - - return True diff --git a/tests/data/reference_protocols/t_protocol/protocol.yaml b/tests/data/reference_protocols/t_protocol/protocol.yaml deleted file mode 100644 index d964a4fae7..0000000000 --- a/tests/data/reference_protocols/t_protocol/protocol.yaml +++ /dev/null @@ -1,19 +0,0 @@ -name: t_protocol -author: fetchai -version: 0.1.0 -protocol_specification_id: some_author/some_protocol_name:1.0.0 -type: protocol -description: A protocol for testing purposes. -license: Apache-2.0 -aea_version: '>=1.0.0, <2.0.0' -fingerprint: - __init__.py: QmfZ2WWx9dYoZvFscNr3shLwweWi31SQcq659KL2yeBMC9 - custom_types.py: QmPTzGJCB3waK3aQbBjdDpm8JRe4ApERsFqJ1RP5b9M45Z - dialogues.py: Qmaaa73ZuSE85xwkXaiKHUFXjG7aMECvAGxAZQvmyWc55X - message.py: QmVUh2pW5ME3KVZvisqij6s1VV3Z1GgzLPbgo746byhr4Q - serialization.py: Qmb4Q4TfZxf3CsYcxjzKj5T4p8TFeZkUWxJkig6753cshF - t_protocol.proto: QmY6Gw3Y7iKY2zR4kK6cx8cR1jjJivhLsSnP6HDk8843si - t_protocol_pb2.py: QmWW1wUqN4X5VCQCmPP1TiHgpNpcNM1z59TnDPZuQ4L8aR -fingerprint_ignore_patterns: [] -dependencies: - protobuf: {} diff --git a/tests/data/reference_protocols/t_protocol/serialization.py b/tests/data/reference_protocols/t_protocol/serialization.py deleted file mode 100644 index 9f04de0cee..0000000000 --- a/tests/data/reference_protocols/t_protocol/serialization.py +++ /dev/null @@ -1,639 +0,0 @@ -# -*- coding: utf-8 -*- -# ------------------------------------------------------------------------------ -# -# Copyright 2018-2022 Fetch.AI Limited -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# ------------------------------------------------------------------------------ - -"""Serialization module for t_protocol protocol.""" - -# pylint: disable=too-many-statements,too-many-locals,no-member,too-few-public-methods,redefined-builtin -from typing import Any, Dict, cast - -from aea.mail.base_pb2 import DialogueMessage -from aea.mail.base_pb2 import Message as ProtobufMessage -from aea.protocols.base import Message, Serializer - -from tests.data.generator.t_protocol import t_protocol_pb2 -from tests.data.generator.t_protocol.custom_types import ( - DataModel, - DataModel1, - DataModel2, - DataModel3, - DataModel4, -) -from tests.data.generator.t_protocol.message import TProtocolMessage - - -class TProtocolSerializer(Serializer): - """Serialization for the 't_protocol' protocol.""" - - @staticmethod - def encode(msg: Message) -> bytes: - """ - Encode a 'TProtocol' message into bytes. - - :param msg: the message object. - :return: the bytes. - """ - msg = cast(TProtocolMessage, msg) - message_pb = ProtobufMessage() - dialogue_message_pb = DialogueMessage() - t_protocol_msg = t_protocol_pb2.TProtocolMessage() - - dialogue_message_pb.message_id = msg.message_id - dialogue_reference = msg.dialogue_reference - dialogue_message_pb.dialogue_starter_reference = dialogue_reference[0] - dialogue_message_pb.dialogue_responder_reference = dialogue_reference[1] - dialogue_message_pb.target = msg.target - - performative_id = msg.performative - if performative_id == TProtocolMessage.Performative.PERFORMATIVE_CT: - performative = t_protocol_pb2.TProtocolMessage.Performative_Ct_Performative() # type: ignore - content_ct = msg.content_ct - DataModel.encode(performative.content_ct, content_ct) - t_protocol_msg.performative_ct.CopyFrom(performative) - elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_PT: - performative = t_protocol_pb2.TProtocolMessage.Performative_Pt_Performative() # type: ignore - content_bytes = msg.content_bytes - performative.content_bytes = content_bytes - content_int = msg.content_int - performative.content_int = content_int - content_float = msg.content_float - performative.content_float = content_float - content_bool = msg.content_bool - performative.content_bool = content_bool - content_str = msg.content_str - performative.content_str = content_str - t_protocol_msg.performative_pt.CopyFrom(performative) - elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_PCT: - performative = t_protocol_pb2.TProtocolMessage.Performative_Pct_Performative() # type: ignore - content_set_bytes = msg.content_set_bytes - performative.content_set_bytes.extend(content_set_bytes) - content_set_int = msg.content_set_int - performative.content_set_int.extend(content_set_int) - content_set_float = msg.content_set_float - performative.content_set_float.extend(content_set_float) - content_set_bool = msg.content_set_bool - performative.content_set_bool.extend(content_set_bool) - content_set_str = msg.content_set_str - performative.content_set_str.extend(content_set_str) - content_list_bytes = msg.content_list_bytes - performative.content_list_bytes.extend(content_list_bytes) - content_list_int = msg.content_list_int - performative.content_list_int.extend(content_list_int) - content_list_float = msg.content_list_float - performative.content_list_float.extend(content_list_float) - content_list_bool = msg.content_list_bool - performative.content_list_bool.extend(content_list_bool) - content_list_str = msg.content_list_str - performative.content_list_str.extend(content_list_str) - t_protocol_msg.performative_pct.CopyFrom(performative) - elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_PMT: - performative = t_protocol_pb2.TProtocolMessage.Performative_Pmt_Performative() # type: ignore - content_dict_int_bytes = msg.content_dict_int_bytes - performative.content_dict_int_bytes.update(content_dict_int_bytes) - content_dict_int_int = msg.content_dict_int_int - performative.content_dict_int_int.update(content_dict_int_int) - content_dict_int_float = msg.content_dict_int_float - performative.content_dict_int_float.update(content_dict_int_float) - content_dict_int_bool = msg.content_dict_int_bool - performative.content_dict_int_bool.update(content_dict_int_bool) - content_dict_int_str = msg.content_dict_int_str - performative.content_dict_int_str.update(content_dict_int_str) - content_dict_bool_bytes = msg.content_dict_bool_bytes - performative.content_dict_bool_bytes.update(content_dict_bool_bytes) - content_dict_bool_int = msg.content_dict_bool_int - performative.content_dict_bool_int.update(content_dict_bool_int) - content_dict_bool_float = msg.content_dict_bool_float - performative.content_dict_bool_float.update(content_dict_bool_float) - content_dict_bool_bool = msg.content_dict_bool_bool - performative.content_dict_bool_bool.update(content_dict_bool_bool) - content_dict_bool_str = msg.content_dict_bool_str - performative.content_dict_bool_str.update(content_dict_bool_str) - content_dict_str_bytes = msg.content_dict_str_bytes - performative.content_dict_str_bytes.update(content_dict_str_bytes) - content_dict_str_int = msg.content_dict_str_int - performative.content_dict_str_int.update(content_dict_str_int) - content_dict_str_float = msg.content_dict_str_float - performative.content_dict_str_float.update(content_dict_str_float) - content_dict_str_bool = msg.content_dict_str_bool - performative.content_dict_str_bool.update(content_dict_str_bool) - content_dict_str_str = msg.content_dict_str_str - performative.content_dict_str_str.update(content_dict_str_str) - t_protocol_msg.performative_pmt.CopyFrom(performative) - elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_MT: - performative = t_protocol_pb2.TProtocolMessage.Performative_Mt_Performative() # type: ignore - if msg.is_set("content_union_1"): - if isinstance(msg.content_union_1, DataModel1): - performative.content_union_1_type_DataModel1_is_set = True - content_union_1_type_DataModel1 = msg.content_union_1 - DataModel1.encode( - performative.content_union_1_type_DataModel1, - content_union_1_type_DataModel1, - ) - elif isinstance(msg.content_union_1, bytes): - performative.content_union_1_type_bytes_is_set = True - content_union_1_type_bytes = msg.content_union_1 - performative.content_union_1_type_bytes = content_union_1_type_bytes - elif isinstance(msg.content_union_1, int): - performative.content_union_1_type_int_is_set = True - content_union_1_type_int = msg.content_union_1 - performative.content_union_1_type_int = content_union_1_type_int - elif isinstance(msg.content_union_1, float): - performative.content_union_1_type_float_is_set = True - content_union_1_type_float = msg.content_union_1 - performative.content_union_1_type_float = content_union_1_type_float - elif isinstance(msg.content_union_1, bool): - performative.content_union_1_type_bool_is_set = True - content_union_1_type_bool = msg.content_union_1 - performative.content_union_1_type_bool = content_union_1_type_bool - elif isinstance(msg.content_union_1, str): - performative.content_union_1_type_str_is_set = True - content_union_1_type_str = msg.content_union_1 - performative.content_union_1_type_str = content_union_1_type_str - elif isinstance(msg.content_union_1, (set, frozenset)) and all( - map(lambda x: isinstance(x, int), msg.content_union_1) - ): - performative.content_union_1_type_set_of_int_is_set = True - content_union_1 = msg.content_union_1 - performative.content_union_1_type_set_of_int.extend(content_union_1) - elif isinstance(msg.content_union_1, (list, tuple)) and all( - map(lambda x: isinstance(x, bool), msg.content_union_1) - ): - performative.content_union_1_type_list_of_bool_is_set = True - content_union_1 = msg.content_union_1 - performative.content_union_1_type_list_of_bool.extend( - content_union_1 - ) - elif isinstance(msg.content_union_1, dict) and all( - map( - lambda x: isinstance(x[0], str) and isinstance(x[1], int), - msg.content_union_1.items(), - ) - ): - performative.content_union_1_type_dict_of_str_int_is_set = True - content_union_1 = msg.content_union_1 - performative.content_union_1_type_dict_of_str_int.update( - content_union_1 - ) - elif msg.content_union_1 is None: - pass - else: - raise ValueError( - f"Bad value set to `content_union_1` {msg.content_union_1 }" - ) - if msg.is_set("content_union_2"): - if isinstance(msg.content_union_2, (set, frozenset)) and all( - map(lambda x: isinstance(x, bytes), msg.content_union_2) - ): - performative.content_union_2_type_set_of_bytes_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_set_of_bytes.extend( - content_union_2 - ) - elif isinstance(msg.content_union_2, (set, frozenset)) and all( - map(lambda x: isinstance(x, int), msg.content_union_2) - ): - performative.content_union_2_type_set_of_int_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_set_of_int.extend(content_union_2) - elif isinstance(msg.content_union_2, (set, frozenset)) and all( - map(lambda x: isinstance(x, str), msg.content_union_2) - ): - performative.content_union_2_type_set_of_str_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_set_of_str.extend(content_union_2) - elif isinstance(msg.content_union_2, (list, tuple)) and all( - map(lambda x: isinstance(x, float), msg.content_union_2) - ): - performative.content_union_2_type_list_of_float_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_list_of_float.extend( - content_union_2 - ) - elif isinstance(msg.content_union_2, (list, tuple)) and all( - map(lambda x: isinstance(x, bool), msg.content_union_2) - ): - performative.content_union_2_type_list_of_bool_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_list_of_bool.extend( - content_union_2 - ) - elif isinstance(msg.content_union_2, (list, tuple)) and all( - map(lambda x: isinstance(x, bytes), msg.content_union_2) - ): - performative.content_union_2_type_list_of_bytes_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_list_of_bytes.extend( - content_union_2 - ) - elif isinstance(msg.content_union_2, dict) and all( - map( - lambda x: isinstance(x[0], str) and isinstance(x[1], int), - msg.content_union_2.items(), - ) - ): - performative.content_union_2_type_dict_of_str_int_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_dict_of_str_int.update( - content_union_2 - ) - elif isinstance(msg.content_union_2, dict) and all( - map( - lambda x: isinstance(x[0], int) and isinstance(x[1], float), - msg.content_union_2.items(), - ) - ): - performative.content_union_2_type_dict_of_int_float_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_dict_of_int_float.update( - content_union_2 - ) - elif isinstance(msg.content_union_2, dict) and all( - map( - lambda x: isinstance(x[0], bool) and isinstance(x[1], bytes), - msg.content_union_2.items(), - ) - ): - performative.content_union_2_type_dict_of_bool_bytes_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_dict_of_bool_bytes.update( - content_union_2 - ) - elif isinstance(msg.content_union_2, int): - performative.content_union_2_type_int_is_set = True - content_union_2_type_int = msg.content_union_2 - performative.content_union_2_type_int = content_union_2_type_int - elif msg.content_union_2 is None: - pass - else: - raise ValueError( - f"Bad value set to `content_union_2` {msg.content_union_2 }" - ) - if msg.is_set("content_union_3"): - if isinstance(msg.content_union_3, DataModel2): - performative.content_union_3_type_DataModel2_is_set = True - content_union_3_type_DataModel2 = msg.content_union_3 - DataModel2.encode( - performative.content_union_3_type_DataModel2, - content_union_3_type_DataModel2, - ) - elif isinstance(msg.content_union_3, DataModel3): - performative.content_union_3_type_DataModel3_is_set = True - content_union_3_type_DataModel3 = msg.content_union_3 - DataModel3.encode( - performative.content_union_3_type_DataModel3, - content_union_3_type_DataModel3, - ) - elif msg.content_union_3 is None: - pass - else: - raise ValueError( - f"Bad value set to `content_union_3` {msg.content_union_3 }" - ) - t_protocol_msg.performative_mt.CopyFrom(performative) - elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_O: - performative = t_protocol_pb2.TProtocolMessage.Performative_O_Performative() # type: ignore - if msg.is_set("content_o_ct"): - performative.content_o_ct_is_set = True - content_o_ct = msg.content_o_ct - DataModel4.encode(performative.content_o_ct, content_o_ct) - if msg.is_set("content_o_bool"): - performative.content_o_bool_is_set = True - content_o_bool = msg.content_o_bool - performative.content_o_bool = content_o_bool - if msg.is_set("content_o_set_int"): - performative.content_o_set_int_is_set = True - content_o_set_int = msg.content_o_set_int - performative.content_o_set_int.extend(content_o_set_int) - if msg.is_set("content_o_list_bytes"): - performative.content_o_list_bytes_is_set = True - content_o_list_bytes = msg.content_o_list_bytes - performative.content_o_list_bytes.extend(content_o_list_bytes) - if msg.is_set("content_o_dict_str_int"): - performative.content_o_dict_str_int_is_set = True - content_o_dict_str_int = msg.content_o_dict_str_int - performative.content_o_dict_str_int.update(content_o_dict_str_int) - t_protocol_msg.performative_o.CopyFrom(performative) - elif ( - performative_id == TProtocolMessage.Performative.PERFORMATIVE_EMPTY_CONTENTS - ): - performative = t_protocol_pb2.TProtocolMessage.Performative_Empty_Contents_Performative() # type: ignore - t_protocol_msg.performative_empty_contents.CopyFrom(performative) - else: - raise ValueError("Performative not valid: {}".format(performative_id)) - - dialogue_message_pb.content = t_protocol_msg.SerializeToString() - - message_pb.dialogue_message.CopyFrom(dialogue_message_pb) - message_bytes = message_pb.SerializeToString() - return message_bytes - - @staticmethod - def decode(obj: bytes) -> Message: - """ - Decode bytes into a 'TProtocol' message. - - :param obj: the bytes object. - :return: the 'TProtocol' message. - """ - message_pb = ProtobufMessage() - t_protocol_pb = t_protocol_pb2.TProtocolMessage() - message_pb.ParseFromString(obj) - message_id = message_pb.dialogue_message.message_id - dialogue_reference = ( - message_pb.dialogue_message.dialogue_starter_reference, - message_pb.dialogue_message.dialogue_responder_reference, - ) - target = message_pb.dialogue_message.target - - t_protocol_pb.ParseFromString(message_pb.dialogue_message.content) - performative = t_protocol_pb.WhichOneof("performative") - performative_id = TProtocolMessage.Performative(str(performative)) - performative_content = {} # type: Dict[str, Any] - if performative_id == TProtocolMessage.Performative.PERFORMATIVE_CT: - pb2_content_ct = t_protocol_pb.performative_ct.content_ct - content_ct = DataModel.decode(pb2_content_ct) - performative_content["content_ct"] = content_ct - elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_PT: - content_bytes = t_protocol_pb.performative_pt.content_bytes - performative_content["content_bytes"] = content_bytes - content_int = t_protocol_pb.performative_pt.content_int - performative_content["content_int"] = content_int - content_float = t_protocol_pb.performative_pt.content_float - performative_content["content_float"] = content_float - content_bool = t_protocol_pb.performative_pt.content_bool - performative_content["content_bool"] = content_bool - content_str = t_protocol_pb.performative_pt.content_str - performative_content["content_str"] = content_str - elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_PCT: - content_set_bytes = t_protocol_pb.performative_pct.content_set_bytes - content_set_bytes_frozenset = frozenset(content_set_bytes) - performative_content["content_set_bytes"] = content_set_bytes_frozenset - content_set_int = t_protocol_pb.performative_pct.content_set_int - content_set_int_frozenset = frozenset(content_set_int) - performative_content["content_set_int"] = content_set_int_frozenset - content_set_float = t_protocol_pb.performative_pct.content_set_float - content_set_float_frozenset = frozenset(content_set_float) - performative_content["content_set_float"] = content_set_float_frozenset - content_set_bool = t_protocol_pb.performative_pct.content_set_bool - content_set_bool_frozenset = frozenset(content_set_bool) - performative_content["content_set_bool"] = content_set_bool_frozenset - content_set_str = t_protocol_pb.performative_pct.content_set_str - content_set_str_frozenset = frozenset(content_set_str) - performative_content["content_set_str"] = content_set_str_frozenset - content_list_bytes = t_protocol_pb.performative_pct.content_list_bytes - content_list_bytes_tuple = tuple(content_list_bytes) - performative_content["content_list_bytes"] = content_list_bytes_tuple - content_list_int = t_protocol_pb.performative_pct.content_list_int - content_list_int_tuple = tuple(content_list_int) - performative_content["content_list_int"] = content_list_int_tuple - content_list_float = t_protocol_pb.performative_pct.content_list_float - content_list_float_tuple = tuple(content_list_float) - performative_content["content_list_float"] = content_list_float_tuple - content_list_bool = t_protocol_pb.performative_pct.content_list_bool - content_list_bool_tuple = tuple(content_list_bool) - performative_content["content_list_bool"] = content_list_bool_tuple - content_list_str = t_protocol_pb.performative_pct.content_list_str - content_list_str_tuple = tuple(content_list_str) - performative_content["content_list_str"] = content_list_str_tuple - elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_PMT: - content_dict_int_bytes = ( - t_protocol_pb.performative_pmt.content_dict_int_bytes - ) - content_dict_int_bytes_dict = dict(content_dict_int_bytes) - performative_content["content_dict_int_bytes"] = content_dict_int_bytes_dict - content_dict_int_int = t_protocol_pb.performative_pmt.content_dict_int_int - content_dict_int_int_dict = dict(content_dict_int_int) - performative_content["content_dict_int_int"] = content_dict_int_int_dict - content_dict_int_float = ( - t_protocol_pb.performative_pmt.content_dict_int_float - ) - content_dict_int_float_dict = dict(content_dict_int_float) - performative_content["content_dict_int_float"] = content_dict_int_float_dict - content_dict_int_bool = t_protocol_pb.performative_pmt.content_dict_int_bool - content_dict_int_bool_dict = dict(content_dict_int_bool) - performative_content["content_dict_int_bool"] = content_dict_int_bool_dict - content_dict_int_str = t_protocol_pb.performative_pmt.content_dict_int_str - content_dict_int_str_dict = dict(content_dict_int_str) - performative_content["content_dict_int_str"] = content_dict_int_str_dict - content_dict_bool_bytes = ( - t_protocol_pb.performative_pmt.content_dict_bool_bytes - ) - content_dict_bool_bytes_dict = dict(content_dict_bool_bytes) - performative_content[ - "content_dict_bool_bytes" - ] = content_dict_bool_bytes_dict - content_dict_bool_int = t_protocol_pb.performative_pmt.content_dict_bool_int - content_dict_bool_int_dict = dict(content_dict_bool_int) - performative_content["content_dict_bool_int"] = content_dict_bool_int_dict - content_dict_bool_float = ( - t_protocol_pb.performative_pmt.content_dict_bool_float - ) - content_dict_bool_float_dict = dict(content_dict_bool_float) - performative_content[ - "content_dict_bool_float" - ] = content_dict_bool_float_dict - content_dict_bool_bool = ( - t_protocol_pb.performative_pmt.content_dict_bool_bool - ) - content_dict_bool_bool_dict = dict(content_dict_bool_bool) - performative_content["content_dict_bool_bool"] = content_dict_bool_bool_dict - content_dict_bool_str = t_protocol_pb.performative_pmt.content_dict_bool_str - content_dict_bool_str_dict = dict(content_dict_bool_str) - performative_content["content_dict_bool_str"] = content_dict_bool_str_dict - content_dict_str_bytes = ( - t_protocol_pb.performative_pmt.content_dict_str_bytes - ) - content_dict_str_bytes_dict = dict(content_dict_str_bytes) - performative_content["content_dict_str_bytes"] = content_dict_str_bytes_dict - content_dict_str_int = t_protocol_pb.performative_pmt.content_dict_str_int - content_dict_str_int_dict = dict(content_dict_str_int) - performative_content["content_dict_str_int"] = content_dict_str_int_dict - content_dict_str_float = ( - t_protocol_pb.performative_pmt.content_dict_str_float - ) - content_dict_str_float_dict = dict(content_dict_str_float) - performative_content["content_dict_str_float"] = content_dict_str_float_dict - content_dict_str_bool = t_protocol_pb.performative_pmt.content_dict_str_bool - content_dict_str_bool_dict = dict(content_dict_str_bool) - performative_content["content_dict_str_bool"] = content_dict_str_bool_dict - content_dict_str_str = t_protocol_pb.performative_pmt.content_dict_str_str - content_dict_str_str_dict = dict(content_dict_str_str) - performative_content["content_dict_str_str"] = content_dict_str_str_dict - elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_MT: - if t_protocol_pb.performative_mt.content_union_1_type_DataModel1_is_set: - pb2_content_union_1_type_DataModel1 = ( - t_protocol_pb.performative_mt.content_union_1_type_DataModel1 - ) - content_union_1 = DataModel1.decode(pb2_content_union_1_type_DataModel1) - performative_content["content_union_1"] = content_union_1 - if t_protocol_pb.performative_mt.content_union_1_type_bytes_is_set: - content_union_1 = ( - t_protocol_pb.performative_mt.content_union_1_type_bytes - ) - performative_content["content_union_1"] = content_union_1 - if t_protocol_pb.performative_mt.content_union_1_type_int_is_set: - content_union_1 = t_protocol_pb.performative_mt.content_union_1_type_int - performative_content["content_union_1"] = content_union_1 - if t_protocol_pb.performative_mt.content_union_1_type_float_is_set: - content_union_1 = ( - t_protocol_pb.performative_mt.content_union_1_type_float - ) - performative_content["content_union_1"] = content_union_1 - if t_protocol_pb.performative_mt.content_union_1_type_bool_is_set: - content_union_1 = ( - t_protocol_pb.performative_mt.content_union_1_type_bool - ) - performative_content["content_union_1"] = content_union_1 - if t_protocol_pb.performative_mt.content_union_1_type_str_is_set: - content_union_1 = t_protocol_pb.performative_mt.content_union_1_type_str - performative_content["content_union_1"] = content_union_1 - if t_protocol_pb.performative_mt.content_union_1_type_set_of_int_is_set: - content_union_1 = ( - t_protocol_pb.performative_mt.content_union_1_type_set_of_int - ) - content_union_1_frozenset = frozenset(content_union_1) - performative_content["content_union_1"] = content_union_1_frozenset - if t_protocol_pb.performative_mt.content_union_1_type_list_of_bool_is_set: - content_union_1 = ( - t_protocol_pb.performative_mt.content_union_1_type_list_of_bool - ) - content_union_1_tuple = tuple(content_union_1) - performative_content["content_union_1"] = content_union_1_tuple - if ( - t_protocol_pb.performative_mt.content_union_1_type_dict_of_str_int_is_set - ): - content_union_1 = ( - t_protocol_pb.performative_mt.content_union_1_type_dict_of_str_int - ) - content_union_1_dict = dict(content_union_1) - performative_content["content_union_1"] = content_union_1_dict - if t_protocol_pb.performative_mt.content_union_2_type_set_of_bytes_is_set: - content_union_2 = ( - t_protocol_pb.performative_mt.content_union_2_type_set_of_bytes - ) - content_union_2_frozenset = frozenset(content_union_2) - performative_content["content_union_2"] = content_union_2_frozenset - if t_protocol_pb.performative_mt.content_union_2_type_set_of_int_is_set: - content_union_2 = ( - t_protocol_pb.performative_mt.content_union_2_type_set_of_int - ) - content_union_2_frozenset = frozenset(content_union_2) - performative_content["content_union_2"] = content_union_2_frozenset - if t_protocol_pb.performative_mt.content_union_2_type_set_of_str_is_set: - content_union_2 = ( - t_protocol_pb.performative_mt.content_union_2_type_set_of_str - ) - content_union_2_frozenset = frozenset(content_union_2) - performative_content["content_union_2"] = content_union_2_frozenset - if t_protocol_pb.performative_mt.content_union_2_type_list_of_float_is_set: - content_union_2 = ( - t_protocol_pb.performative_mt.content_union_2_type_list_of_float - ) - content_union_2_tuple = tuple(content_union_2) - performative_content["content_union_2"] = content_union_2_tuple - if t_protocol_pb.performative_mt.content_union_2_type_list_of_bool_is_set: - content_union_2 = ( - t_protocol_pb.performative_mt.content_union_2_type_list_of_bool - ) - content_union_2_tuple = tuple(content_union_2) - performative_content["content_union_2"] = content_union_2_tuple - if t_protocol_pb.performative_mt.content_union_2_type_list_of_bytes_is_set: - content_union_2 = ( - t_protocol_pb.performative_mt.content_union_2_type_list_of_bytes - ) - content_union_2_tuple = tuple(content_union_2) - performative_content["content_union_2"] = content_union_2_tuple - if ( - t_protocol_pb.performative_mt.content_union_2_type_dict_of_str_int_is_set - ): - content_union_2 = ( - t_protocol_pb.performative_mt.content_union_2_type_dict_of_str_int - ) - content_union_2_dict = dict(content_union_2) - performative_content["content_union_2"] = content_union_2_dict - if ( - t_protocol_pb.performative_mt.content_union_2_type_dict_of_int_float_is_set - ): - content_union_2 = ( - t_protocol_pb.performative_mt.content_union_2_type_dict_of_int_float - ) - content_union_2_dict = dict(content_union_2) - performative_content["content_union_2"] = content_union_2_dict - if ( - t_protocol_pb.performative_mt.content_union_2_type_dict_of_bool_bytes_is_set - ): - content_union_2 = ( - t_protocol_pb.performative_mt.content_union_2_type_dict_of_bool_bytes - ) - content_union_2_dict = dict(content_union_2) - performative_content["content_union_2"] = content_union_2_dict - if t_protocol_pb.performative_mt.content_union_2_type_int_is_set: - content_union_2 = t_protocol_pb.performative_mt.content_union_2_type_int - performative_content["content_union_2"] = content_union_2 - if t_protocol_pb.performative_mt.content_union_3_type_DataModel2_is_set: - pb2_content_union_3_type_DataModel2 = ( - t_protocol_pb.performative_mt.content_union_3_type_DataModel2 - ) - content_union_3 = DataModel2.decode(pb2_content_union_3_type_DataModel2) - performative_content["content_union_3"] = content_union_3 - if t_protocol_pb.performative_mt.content_union_3_type_DataModel3_is_set: - pb2_content_union_3_type_DataModel3 = ( - t_protocol_pb.performative_mt.content_union_3_type_DataModel3 - ) - content_union_3 = DataModel3.decode(pb2_content_union_3_type_DataModel3) - performative_content["content_union_3"] = content_union_3 - elif performative_id == TProtocolMessage.Performative.PERFORMATIVE_O: - if t_protocol_pb.performative_o.content_o_ct_is_set: - pb2_content_o_ct = t_protocol_pb.performative_o.content_o_ct - content_o_ct = DataModel4.decode(pb2_content_o_ct) - performative_content["content_o_ct"] = content_o_ct - if t_protocol_pb.performative_o.content_o_bool_is_set: - content_o_bool = t_protocol_pb.performative_o.content_o_bool - performative_content["content_o_bool"] = content_o_bool - if t_protocol_pb.performative_o.content_o_set_int_is_set: - content_o_set_int = t_protocol_pb.performative_o.content_o_set_int - content_o_set_int_frozenset = frozenset(content_o_set_int) - performative_content["content_o_set_int"] = content_o_set_int_frozenset - if t_protocol_pb.performative_o.content_o_list_bytes_is_set: - content_o_list_bytes = t_protocol_pb.performative_o.content_o_list_bytes - content_o_list_bytes_tuple = tuple(content_o_list_bytes) - performative_content[ - "content_o_list_bytes" - ] = content_o_list_bytes_tuple - if t_protocol_pb.performative_o.content_o_dict_str_int_is_set: - content_o_dict_str_int = ( - t_protocol_pb.performative_o.content_o_dict_str_int - ) - content_o_dict_str_int_dict = dict(content_o_dict_str_int) - performative_content[ - "content_o_dict_str_int" - ] = content_o_dict_str_int_dict - elif ( - performative_id == TProtocolMessage.Performative.PERFORMATIVE_EMPTY_CONTENTS - ): - pass - else: - raise ValueError("Performative not valid: {}.".format(performative_id)) - - return TProtocolMessage( - message_id=message_id, - dialogue_reference=dialogue_reference, - target=target, - performative=performative, - **performative_content, - ) diff --git a/tests/data/reference_protocols/t_protocol/t_protocol.proto b/tests/data/reference_protocols/t_protocol/t_protocol.proto deleted file mode 100644 index efdeb1b627..0000000000 --- a/tests/data/reference_protocols/t_protocol/t_protocol.proto +++ /dev/null @@ -1,179 +0,0 @@ -syntax = "proto3"; - -package aea.some_author.some_protocol_name.v1_0_0; - -message TProtocolMessage{ - - // Custom Types - message DataModel{ - bytes bytes_field = 1; - int64 int_field = 2; - float float_field = 3; - bool bool_field = 4; - string str_field = 5; - repeated int64 set_field = 6; - repeated string list_field = 7; - map dict_field = 8; - } - - message DataModel1{ - bytes bytes_field = 1; - int64 int_field = 2; - float float_field = 3; - bool bool_field = 4; - string str_field = 5; - repeated int64 set_field = 6; - repeated string list_field = 7; - map dict_field = 8; - } - - message DataModel2{ - bytes bytes_field = 1; - int64 int_field = 2; - float float_field = 3; - bool bool_field = 4; - string str_field = 5; - repeated int64 set_field = 6; - repeated string list_field = 7; - map dict_field = 8; - } - - message DataModel3{ - bytes bytes_field = 1; - int64 int_field = 2; - float float_field = 3; - bool bool_field = 4; - string str_field = 5; - repeated int64 set_field = 6; - repeated string list_field = 7; - map dict_field = 8; - } - - message DataModel4{ - bytes bytes_field = 1; - int64 int_field = 2; - float float_field = 3; - bool bool_field = 4; - string str_field = 5; - repeated int64 set_field = 6; - repeated string list_field = 7; - map dict_field = 8; - } - - - // Performatives and contents - message Performative_Ct_Performative{ - DataModel content_ct = 1; - } - - message Performative_Pt_Performative{ - bytes content_bytes = 1; - int64 content_int = 2; - float content_float = 3; - bool content_bool = 4; - string content_str = 5; - } - - message Performative_Pct_Performative{ - repeated bytes content_set_bytes = 1; - repeated int64 content_set_int = 2; - repeated float content_set_float = 3; - repeated bool content_set_bool = 4; - repeated string content_set_str = 5; - repeated bytes content_list_bytes = 6; - repeated int64 content_list_int = 7; - repeated float content_list_float = 8; - repeated bool content_list_bool = 9; - repeated string content_list_str = 10; - } - - message Performative_Pmt_Performative{ - map content_dict_int_bytes = 1; - map content_dict_int_int = 2; - map content_dict_int_float = 3; - map content_dict_int_bool = 4; - map content_dict_int_str = 5; - map content_dict_bool_bytes = 6; - map content_dict_bool_int = 7; - map content_dict_bool_float = 8; - map content_dict_bool_bool = 9; - map content_dict_bool_str = 10; - map content_dict_str_bytes = 11; - map content_dict_str_int = 12; - map content_dict_str_float = 13; - map content_dict_str_bool = 14; - map content_dict_str_str = 15; - } - - message Performative_Mt_Performative{ - DataModel1 content_union_1_type_DataModel1 = 1; - bool content_union_1_type_DataModel1_is_set = 2; - bytes content_union_1_type_bytes = 3; - bool content_union_1_type_bytes_is_set = 4; - int64 content_union_1_type_int = 5; - bool content_union_1_type_int_is_set = 6; - float content_union_1_type_float = 7; - bool content_union_1_type_float_is_set = 8; - bool content_union_1_type_bool = 9; - bool content_union_1_type_bool_is_set = 10; - string content_union_1_type_str = 11; - bool content_union_1_type_str_is_set = 12; - repeated int64 content_union_1_type_set_of_int = 13; - bool content_union_1_type_set_of_int_is_set = 14; - repeated bool content_union_1_type_list_of_bool = 15; - bool content_union_1_type_list_of_bool_is_set = 16; - map content_union_1_type_dict_of_str_int = 17; - bool content_union_1_type_dict_of_str_int_is_set = 18; - repeated bytes content_union_2_type_set_of_bytes = 19; - bool content_union_2_type_set_of_bytes_is_set = 20; - repeated int64 content_union_2_type_set_of_int = 21; - bool content_union_2_type_set_of_int_is_set = 22; - repeated string content_union_2_type_set_of_str = 23; - bool content_union_2_type_set_of_str_is_set = 24; - repeated float content_union_2_type_list_of_float = 25; - bool content_union_2_type_list_of_float_is_set = 26; - repeated bool content_union_2_type_list_of_bool = 27; - bool content_union_2_type_list_of_bool_is_set = 28; - repeated bytes content_union_2_type_list_of_bytes = 29; - bool content_union_2_type_list_of_bytes_is_set = 30; - map content_union_2_type_dict_of_str_int = 31; - bool content_union_2_type_dict_of_str_int_is_set = 32; - map content_union_2_type_dict_of_int_float = 33; - bool content_union_2_type_dict_of_int_float_is_set = 34; - map content_union_2_type_dict_of_bool_bytes = 35; - bool content_union_2_type_dict_of_bool_bytes_is_set = 36; - int64 content_union_2_type_int = 37; - bool content_union_2_type_int_is_set = 38; - DataModel2 content_union_3_type_DataModel2 = 39; - bool content_union_3_type_DataModel2_is_set = 40; - DataModel3 content_union_3_type_DataModel3 = 41; - bool content_union_3_type_DataModel3_is_set = 42; - } - - message Performative_O_Performative{ - DataModel4 content_o_ct = 1; - bool content_o_ct_is_set = 2; - bool content_o_bool = 3; - bool content_o_bool_is_set = 4; - repeated int64 content_o_set_int = 5; - bool content_o_set_int_is_set = 6; - repeated bytes content_o_list_bytes = 7; - bool content_o_list_bytes_is_set = 8; - map content_o_dict_str_int = 9; - bool content_o_dict_str_int_is_set = 10; - } - - message Performative_Empty_Contents_Performative{ - } - - - oneof performative{ - Performative_Ct_Performative performative_ct = 5; - Performative_Empty_Contents_Performative performative_empty_contents = 6; - Performative_Mt_Performative performative_mt = 7; - Performative_O_Performative performative_o = 8; - Performative_Pct_Performative performative_pct = 9; - Performative_Pmt_Performative performative_pmt = 10; - Performative_Pt_Performative performative_pt = 11; - } -} diff --git a/tests/data/reference_protocols/t_protocol/t_protocol_pb2.py b/tests/data/reference_protocols/t_protocol/t_protocol_pb2.py deleted file mode 100644 index 7fe683b94b..0000000000 --- a/tests/data/reference_protocols/t_protocol/t_protocol_pb2.py +++ /dev/null @@ -1,873 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: t_protocol.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b"\n\x10t_protocol.proto\x12)aea.some_author.some_protocol_name.v1_0_0\"\xcbK\n\x10TProtocolMessage\x12s\n\x0fperformative_ct\x18\x05 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Ct_PerformativeH\x00\x12\x8b\x01\n\x1bperformative_empty_contents\x18\x06 \x01(\x0b\x32\x64.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Empty_Contents_PerformativeH\x00\x12s\n\x0fperformative_mt\x18\x07 \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_PerformativeH\x00\x12q\n\x0eperformative_o\x18\x08 \x01(\x0b\x32W.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_PerformativeH\x00\x12u\n\x10performative_pct\x18\t \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_PerformativeH\x00\x12u\n\x10performative_pmt\x18\n \x01(\x0b\x32Y.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_PerformativeH\x00\x12s\n\x0fperformative_pt\x18\x0b \x01(\x0b\x32X.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_PerformativeH\x00\x1a\xb2\x02\n\tDataModel\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12h\n\ndict_field\x18\x08 \x03(\x0b\x32T.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel1\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel2\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel3\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\xb4\x02\n\nDataModel4\x12\x13\n\x0b\x62ytes_field\x18\x01 \x01(\x0c\x12\x11\n\tint_field\x18\x02 \x01(\x03\x12\x13\n\x0b\x66loat_field\x18\x03 \x01(\x02\x12\x12\n\nbool_field\x18\x04 \x01(\x08\x12\x11\n\tstr_field\x18\x05 \x01(\t\x12\x11\n\tset_field\x18\x06 \x03(\x03\x12\x12\n\nlist_field\x18\x07 \x03(\t\x12i\n\ndict_field\x18\x08 \x03(\x0b\x32U.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4.DictFieldEntry\x1a\x30\n\x0e\x44ictFieldEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1ay\n\x1cPerformative_Ct_Performative\x12Y\n\ncontent_ct\x18\x01 \x01(\x0b\x32\x45.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xc0\x18\n\x1dPerformative_Pmt_Performative\x12\x92\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x92\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x94\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x92\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x90\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x92\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x92\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32r.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x90\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32q.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x8e\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32p.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xdd\x16\n\x1cPerformative_Mt_Performative\x12o\n\x1f\x63ontent_union_1_type_DataModel1\x18\x01 \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1\x12.\n&content_union_1_type_DataModel1_is_set\x18\x02 \x01(\x08\x12\"\n\x1a\x63ontent_union_1_type_bytes\x18\x03 \x01(\x0c\x12)\n!content_union_1_type_bytes_is_set\x18\x04 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_int\x18\x05 \x01(\x03\x12'\n\x1f\x63ontent_union_1_type_int_is_set\x18\x06 \x01(\x08\x12\"\n\x1a\x63ontent_union_1_type_float\x18\x07 \x01(\x02\x12)\n!content_union_1_type_float_is_set\x18\x08 \x01(\x08\x12!\n\x19\x63ontent_union_1_type_bool\x18\t \x01(\x08\x12(\n content_union_1_type_bool_is_set\x18\n \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\x0b \x01(\t\x12'\n\x1f\x63ontent_union_1_type_str_is_set\x18\x0c \x01(\x08\x12'\n\x1f\x63ontent_union_1_type_set_of_int\x18\r \x03(\x03\x12.\n&content_union_1_type_set_of_int_is_set\x18\x0e \x01(\x08\x12)\n!content_union_1_type_list_of_bool\x18\x0f \x03(\x08\x12\x30\n(content_union_1_type_list_of_bool_is_set\x18\x10 \x01(\x08\x12\xa9\x01\n$content_union_1_type_dict_of_str_int\x18\x11 \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12\x33\n+content_union_1_type_dict_of_str_int_is_set\x18\x12 \x01(\x08\x12)\n!content_union_2_type_set_of_bytes\x18\x13 \x03(\x0c\x12\x30\n(content_union_2_type_set_of_bytes_is_set\x18\x14 \x01(\x08\x12'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x15 \x03(\x03\x12.\n&content_union_2_type_set_of_int_is_set\x18\x16 \x01(\x08\x12'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x17 \x03(\t\x12.\n&content_union_2_type_set_of_str_is_set\x18\x18 \x01(\x08\x12*\n\"content_union_2_type_list_of_float\x18\x19 \x03(\x02\x12\x31\n)content_union_2_type_list_of_float_is_set\x18\x1a \x01(\x08\x12)\n!content_union_2_type_list_of_bool\x18\x1b \x03(\x08\x12\x30\n(content_union_2_type_list_of_bool_is_set\x18\x1c \x01(\x08\x12*\n\"content_union_2_type_list_of_bytes\x18\x1d \x03(\x0c\x12\x31\n)content_union_2_type_list_of_bytes_is_set\x18\x1e \x01(\x08\x12\xa9\x01\n$content_union_2_type_dict_of_str_int\x18\x1f \x03(\x0b\x32{.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x33\n+content_union_2_type_dict_of_str_int_is_set\x18 \x01(\x08\x12\xad\x01\n&content_union_2_type_dict_of_int_float\x18! \x03(\x0b\x32}.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\x35\n-content_union_2_type_dict_of_int_float_is_set\x18\" \x01(\x08\x12\xaf\x01\n'content_union_2_type_dict_of_bool_bytes\x18# \x03(\x0b\x32~.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x12\x36\n.content_union_2_type_dict_of_bool_bytes_is_set\x18$ \x01(\x08\x12 \n\x18\x63ontent_union_2_type_int\x18% \x01(\x03\x12'\n\x1f\x63ontent_union_2_type_int_is_set\x18& \x01(\x08\x12o\n\x1f\x63ontent_union_3_type_DataModel2\x18' \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2\x12.\n&content_union_3_type_DataModel2_is_set\x18( \x01(\x08\x12o\n\x1f\x63ontent_union_3_type_DataModel3\x18) \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3\x12.\n&content_union_3_type_DataModel3_is_set\x18* \x01(\x08\x1a\x44\n\"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n\"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xc3\x04\n\x1bPerformative_O_Performative\x12\\\n\x0c\x63ontent_o_ct\x18\x01 \x01(\x0b\x32\x46.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4\x12\x1b\n\x13\x63ontent_o_ct_is_set\x18\x02 \x01(\x08\x12\x16\n\x0e\x63ontent_o_bool\x18\x03 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x04 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x05 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x06 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x07 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x08 \x01(\x08\x12\x8f\x01\n\x16\x63ontent_o_dict_str_int\x18\t \x03(\x0b\x32o.aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\n \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3" -) - - -_TPROTOCOLMESSAGE = DESCRIPTOR.message_types_by_name["TProtocolMessage"] -_TPROTOCOLMESSAGE_DATAMODEL = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel"] -_TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY = ( - _TPROTOCOLMESSAGE_DATAMODEL.nested_types_by_name["DictFieldEntry"] -) -_TPROTOCOLMESSAGE_DATAMODEL1 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel1"] -_TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY = ( - _TPROTOCOLMESSAGE_DATAMODEL1.nested_types_by_name["DictFieldEntry"] -) -_TPROTOCOLMESSAGE_DATAMODEL2 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel2"] -_TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY = ( - _TPROTOCOLMESSAGE_DATAMODEL2.nested_types_by_name["DictFieldEntry"] -) -_TPROTOCOLMESSAGE_DATAMODEL3 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel3"] -_TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY = ( - _TPROTOCOLMESSAGE_DATAMODEL3.nested_types_by_name["DictFieldEntry"] -) -_TPROTOCOLMESSAGE_DATAMODEL4 = _TPROTOCOLMESSAGE.nested_types_by_name["DataModel4"] -_TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY = ( - _TPROTOCOLMESSAGE_DATAMODEL4.nested_types_by_name["DictFieldEntry"] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ - "Performative_Ct_Performative" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ - "Performative_Pt_Performative" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = ( - _TPROTOCOLMESSAGE.nested_types_by_name["Performative_Pct_Performative"] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = ( - _TPROTOCOLMESSAGE.nested_types_by_name["Performative_Pmt_Performative"] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntBytesEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntIntEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntFloatEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntBoolEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntStrEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolBytesEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolIntEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolFloatEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolBoolEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolStrEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrBytesEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrIntEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrFloatEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrBoolEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrStrEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ - "Performative_Mt_Performative" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion1TypeDictOfStrIntEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion2TypeDictOfStrIntEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion2TypeDictOfIntFloatEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion2TypeDictOfBoolBytesEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE = _TPROTOCOLMESSAGE.nested_types_by_name[ - "Performative_O_Performative" -] -_TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = ( - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE.nested_types_by_name[ - "ContentODictStrIntEntry" - ] -) -_TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = ( - _TPROTOCOLMESSAGE.nested_types_by_name["Performative_Empty_Contents_Performative"] -) -TProtocolMessage = _reflection.GeneratedProtocolMessageType( - "TProtocolMessage", - (_message.Message,), - { - "DataModel": _reflection.GeneratedProtocolMessageType( - "DataModel", - (_message.Message,), - { - "DictFieldEntry": _reflection.GeneratedProtocolMessageType( - "DictFieldEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel.DictFieldEntry) - }, - ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel) - }, - ), - "DataModel1": _reflection.GeneratedProtocolMessageType( - "DataModel1", - (_message.Message,), - { - "DictFieldEntry": _reflection.GeneratedProtocolMessageType( - "DictFieldEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1.DictFieldEntry) - }, - ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL1, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel1) - }, - ), - "DataModel2": _reflection.GeneratedProtocolMessageType( - "DataModel2", - (_message.Message,), - { - "DictFieldEntry": _reflection.GeneratedProtocolMessageType( - "DictFieldEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2.DictFieldEntry) - }, - ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL2, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel2) - }, - ), - "DataModel3": _reflection.GeneratedProtocolMessageType( - "DataModel3", - (_message.Message,), - { - "DictFieldEntry": _reflection.GeneratedProtocolMessageType( - "DictFieldEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3.DictFieldEntry) - }, - ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL3, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel3) - }, - ), - "DataModel4": _reflection.GeneratedProtocolMessageType( - "DataModel4", - (_message.Message,), - { - "DictFieldEntry": _reflection.GeneratedProtocolMessageType( - "DictFieldEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4.DictFieldEntry) - }, - ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_DATAMODEL4, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.DataModel4) - }, - ), - "Performative_Ct_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_Ct_Performative", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Ct_Performative) - }, - ), - "Performative_Pt_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_Pt_Performative", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pt_Performative) - }, - ), - "Performative_Pct_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_Pct_Performative", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pct_Performative) - }, - ), - "Performative_Pmt_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_Pmt_Performative", - (_message.Message,), - { - "ContentDictIntBytesEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictIntBytesEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) - }, - ), - "ContentDictIntIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictIntIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) - }, - ), - "ContentDictIntFloatEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictIntFloatEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) - }, - ), - "ContentDictIntBoolEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictIntBoolEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) - }, - ), - "ContentDictIntStrEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictIntStrEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) - }, - ), - "ContentDictBoolBytesEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictBoolBytesEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) - }, - ), - "ContentDictBoolIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictBoolIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) - }, - ), - "ContentDictBoolFloatEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictBoolFloatEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) - }, - ), - "ContentDictBoolBoolEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictBoolBoolEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) - }, - ), - "ContentDictBoolStrEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictBoolStrEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) - }, - ), - "ContentDictStrBytesEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictStrBytesEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) - }, - ), - "ContentDictStrIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictStrIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) - }, - ), - "ContentDictStrFloatEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictStrFloatEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) - }, - ), - "ContentDictStrBoolEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictStrBoolEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) - }, - ), - "ContentDictStrStrEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictStrStrEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) - }, - ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Pmt_Performative) - }, - ), - "Performative_Mt_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_Mt_Performative", - (_message.Message,), - { - "ContentUnion1TypeDictOfStrIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentUnion1TypeDictOfStrIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) - }, - ), - "ContentUnion2TypeDictOfStrIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentUnion2TypeDictOfStrIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) - }, - ), - "ContentUnion2TypeDictOfIntFloatEntry": _reflection.GeneratedProtocolMessageType( - "ContentUnion2TypeDictOfIntFloatEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) - }, - ), - "ContentUnion2TypeDictOfBoolBytesEntry": _reflection.GeneratedProtocolMessageType( - "ContentUnion2TypeDictOfBoolBytesEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) - }, - ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Mt_Performative) - }, - ), - "Performative_O_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_O_Performative", - (_message.Message,), - { - "ContentODictStrIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentODictStrIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry) - }, - ), - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_O_Performative) - }, - ), - "Performative_Empty_Contents_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_Empty_Contents_Performative", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage.Performative_Empty_Contents_Performative) - }, - ), - "DESCRIPTOR": _TPROTOCOLMESSAGE, - "__module__": "t_protocol_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolMessage) - }, -) -_sym_db.RegisterMessage(TProtocolMessage) -_sym_db.RegisterMessage(TProtocolMessage.DataModel) -_sym_db.RegisterMessage(TProtocolMessage.DataModel.DictFieldEntry) -_sym_db.RegisterMessage(TProtocolMessage.DataModel1) -_sym_db.RegisterMessage(TProtocolMessage.DataModel1.DictFieldEntry) -_sym_db.RegisterMessage(TProtocolMessage.DataModel2) -_sym_db.RegisterMessage(TProtocolMessage.DataModel2.DictFieldEntry) -_sym_db.RegisterMessage(TProtocolMessage.DataModel3) -_sym_db.RegisterMessage(TProtocolMessage.DataModel3.DictFieldEntry) -_sym_db.RegisterMessage(TProtocolMessage.DataModel4) -_sym_db.RegisterMessage(TProtocolMessage.DataModel4.DictFieldEntry) -_sym_db.RegisterMessage(TProtocolMessage.Performative_Ct_Performative) -_sym_db.RegisterMessage(TProtocolMessage.Performative_Pt_Performative) -_sym_db.RegisterMessage(TProtocolMessage.Performative_Pct_Performative) -_sym_db.RegisterMessage(TProtocolMessage.Performative_Pmt_Performative) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictIntIntEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictIntStrEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictStrIntEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Pmt_Performative.ContentDictStrStrEntry -) -_sym_db.RegisterMessage(TProtocolMessage.Performative_Mt_Performative) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry -) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry -) -_sym_db.RegisterMessage(TProtocolMessage.Performative_O_Performative) -_sym_db.RegisterMessage( - TProtocolMessage.Performative_O_Performative.ContentODictStrIntEntry -) -_sym_db.RegisterMessage(TProtocolMessage.Performative_Empty_Contents_Performative) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._options = None - _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_options = b"8\001" - _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._options = None - _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._serialized_options = b"8\001" - _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._options = None - _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._serialized_options = b"8\001" - _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._options = None - _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._serialized_options = b"8\001" - _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._options = None - _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._serialized_options = b"8\001" - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._options = ( - None - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLMESSAGE._serialized_start = 64 - _TPROTOCOLMESSAGE._serialized_end = 9739 - _TPROTOCOLMESSAGE_DATAMODEL._serialized_start = 931 - _TPROTOCOLMESSAGE_DATAMODEL._serialized_end = 1237 - _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_start = 1189 - _TPROTOCOLMESSAGE_DATAMODEL_DICTFIELDENTRY._serialized_end = 1237 - _TPROTOCOLMESSAGE_DATAMODEL1._serialized_start = 1240 - _TPROTOCOLMESSAGE_DATAMODEL1._serialized_end = 1548 - _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._serialized_start = 1189 - _TPROTOCOLMESSAGE_DATAMODEL1_DICTFIELDENTRY._serialized_end = 1237 - _TPROTOCOLMESSAGE_DATAMODEL2._serialized_start = 1551 - _TPROTOCOLMESSAGE_DATAMODEL2._serialized_end = 1859 - _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._serialized_start = 1189 - _TPROTOCOLMESSAGE_DATAMODEL2_DICTFIELDENTRY._serialized_end = 1237 - _TPROTOCOLMESSAGE_DATAMODEL3._serialized_start = 1862 - _TPROTOCOLMESSAGE_DATAMODEL3._serialized_end = 2170 - _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._serialized_start = 1189 - _TPROTOCOLMESSAGE_DATAMODEL3_DICTFIELDENTRY._serialized_end = 1237 - _TPROTOCOLMESSAGE_DATAMODEL4._serialized_start = 2173 - _TPROTOCOLMESSAGE_DATAMODEL4._serialized_end = 2481 - _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._serialized_start = 1189 - _TPROTOCOLMESSAGE_DATAMODEL4_DICTFIELDENTRY._serialized_end = 1237 - _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_start = 2483 - _TPROTOCOLMESSAGE_PERFORMATIVE_CT_PERFORMATIVE._serialized_end = 2604 - _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_start = 2607 - _TPROTOCOLMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_end = 2747 - _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_start = 2750 - _TPROTOCOLMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_end = 3046 - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_start = 3049 - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_end = 6185 - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_start = ( - 5297 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_end = ( - 5355 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_start = ( - 5357 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_end = ( - 5413 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_start = ( - 5415 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_end = ( - 5473 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_start = ( - 5475 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_end = ( - 5532 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_start = ( - 5534 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_end = ( - 5590 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_start = ( - 5592 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_end = ( - 5651 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_start = ( - 5653 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_end = ( - 5710 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_start = ( - 5712 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_end = ( - 5771 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_start = ( - 5773 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_end = ( - 5831 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_start = ( - 5833 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_end = ( - 5890 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_start = ( - 5892 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_end = ( - 5950 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_start = ( - 5952 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_end = ( - 6008 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_start = ( - 6010 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_end = ( - 6068 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_start = ( - 6070 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_end = ( - 6127 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_start = ( - 6129 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_end = ( - 6185 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_start = 6188 - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 9097 - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_start = ( - 8814 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_end = ( - 8882 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_start = ( - 8884 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_end = ( - 8952 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_start = ( - 8954 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_end = ( - 9024 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_start = ( - 9026 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_end = ( - 9097 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 9100 - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 9679 - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_start = ( - 9622 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_end = ( - 9679 - ) - _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_start = 9681 - _TPROTOCOLMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_end = 9723 -# @@protoc_insertion_point(module_scope) diff --git a/tests/data/reference_protocols/t_protocol_no_ct/__init__.py b/tests/data/reference_protocols/t_protocol_no_ct/__init__.py deleted file mode 100644 index 0310bf041a..0000000000 --- a/tests/data/reference_protocols/t_protocol_no_ct/__init__.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- -# ------------------------------------------------------------------------------ -# -# Copyright 2018-2022 Fetch.AI Limited -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# ------------------------------------------------------------------------------ - -""" -This module contains the support resources for the t_protocol_no_ct protocol. - -It was created with protocol buffer compiler version `libprotoc 3.19.4` and aea version `1.2.4`. -""" - -from tests.data.generator.t_protocol_no_ct.message import TProtocolNoCtMessage -from tests.data.generator.t_protocol_no_ct.serialization import TProtocolNoCtSerializer - - -TProtocolNoCtMessage.serializer = TProtocolNoCtSerializer diff --git a/tests/data/reference_protocols/t_protocol_no_ct/dialogues.py b/tests/data/reference_protocols/t_protocol_no_ct/dialogues.py deleted file mode 100644 index 0fad51899d..0000000000 --- a/tests/data/reference_protocols/t_protocol_no_ct/dialogues.py +++ /dev/null @@ -1,146 +0,0 @@ -# -*- coding: utf-8 -*- -# ------------------------------------------------------------------------------ -# -# Copyright 2018-2022 Fetch.AI Limited -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# ------------------------------------------------------------------------------ - -""" -This module contains the classes required for t_protocol_no_ct dialogue management. - -- TProtocolNoCtDialogue: The dialogue class maintains state of a dialogue and manages it. -- TProtocolNoCtDialogues: The dialogues class keeps track of all dialogues. -""" - -from abc import ABC -from typing import Callable, Dict, FrozenSet, Type, cast - -from aea.common import Address -from aea.protocols.base import Message -from aea.protocols.dialogue.base import Dialogue, DialogueLabel, Dialogues - -from tests.data.generator.t_protocol_no_ct.message import TProtocolNoCtMessage - - -class TProtocolNoCtDialogue(Dialogue): - """The t_protocol_no_ct dialogue class maintains state of a dialogue and manages it.""" - - INITIAL_PERFORMATIVES: FrozenSet[Message.Performative] = frozenset( - {TProtocolNoCtMessage.Performative.PERFORMATIVE_PT} - ) - TERMINAL_PERFORMATIVES: FrozenSet[Message.Performative] = frozenset( - { - TProtocolNoCtMessage.Performative.PERFORMATIVE_MT, - TProtocolNoCtMessage.Performative.PERFORMATIVE_O, - } - ) - VALID_REPLIES: Dict[Message.Performative, FrozenSet[Message.Performative]] = { - TProtocolNoCtMessage.Performative.PERFORMATIVE_EMPTY_CONTENTS: frozenset( - {TProtocolNoCtMessage.Performative.PERFORMATIVE_EMPTY_CONTENTS} - ), - TProtocolNoCtMessage.Performative.PERFORMATIVE_MT: frozenset(), - TProtocolNoCtMessage.Performative.PERFORMATIVE_O: frozenset(), - TProtocolNoCtMessage.Performative.PERFORMATIVE_PCT: frozenset( - { - TProtocolNoCtMessage.Performative.PERFORMATIVE_MT, - TProtocolNoCtMessage.Performative.PERFORMATIVE_O, - } - ), - TProtocolNoCtMessage.Performative.PERFORMATIVE_PMT: frozenset( - { - TProtocolNoCtMessage.Performative.PERFORMATIVE_MT, - TProtocolNoCtMessage.Performative.PERFORMATIVE_O, - } - ), - TProtocolNoCtMessage.Performative.PERFORMATIVE_PT: frozenset( - { - TProtocolNoCtMessage.Performative.PERFORMATIVE_PT, - TProtocolNoCtMessage.Performative.PERFORMATIVE_PCT, - TProtocolNoCtMessage.Performative.PERFORMATIVE_PMT, - } - ), - } - - class Role(Dialogue.Role): - """This class defines the agent's role in a t_protocol_no_ct dialogue.""" - - ROLE_1 = "role_1" - ROLE_2 = "role_2" - - class EndState(Dialogue.EndState): - """This class defines the end states of a t_protocol_no_ct dialogue.""" - - END_STATE_1 = 0 - END_STATE_2 = 1 - END_STATE_3 = 2 - - def __init__( - self, - dialogue_label: DialogueLabel, - self_address: Address, - role: Dialogue.Role, - message_class: Type[TProtocolNoCtMessage] = TProtocolNoCtMessage, - ) -> None: - """ - Initialize a dialogue. - - :param dialogue_label: the identifier of the dialogue - :param self_address: the address of the entity for whom this dialogue is maintained - :param role: the role of the agent this dialogue is maintained for - :param message_class: the message class used - """ - Dialogue.__init__( - self, - dialogue_label=dialogue_label, - message_class=message_class, - self_address=self_address, - role=role, - ) - - -class TProtocolNoCtDialogues(Dialogues, ABC): - """This class keeps track of all t_protocol_no_ct dialogues.""" - - END_STATES = frozenset( - { - TProtocolNoCtDialogue.EndState.END_STATE_1, - TProtocolNoCtDialogue.EndState.END_STATE_2, - TProtocolNoCtDialogue.EndState.END_STATE_3, - } - ) - - _keep_terminal_state_dialogues = True - - def __init__( - self, - self_address: Address, - role_from_first_message: Callable[[Message, Address], Dialogue.Role], - dialogue_class: Type[TProtocolNoCtDialogue] = TProtocolNoCtDialogue, - ) -> None: - """ - Initialize dialogues. - - :param self_address: the address of the entity for whom dialogues are maintained - :param dialogue_class: the dialogue class used - :param role_from_first_message: the callable determining role from first message - """ - Dialogues.__init__( - self, - self_address=self_address, - end_states=cast(FrozenSet[Dialogue.EndState], self.END_STATES), - message_class=TProtocolNoCtMessage, - dialogue_class=dialogue_class, - role_from_first_message=role_from_first_message, - ) diff --git a/tests/data/reference_protocols/t_protocol_no_ct/message.py b/tests/data/reference_protocols/t_protocol_no_ct/message.py deleted file mode 100644 index e152b16daa..0000000000 --- a/tests/data/reference_protocols/t_protocol_no_ct/message.py +++ /dev/null @@ -1,1203 +0,0 @@ -# -*- coding: utf-8 -*- -# ------------------------------------------------------------------------------ -# -# Copyright 2018-2022 Fetch.AI Limited -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# ------------------------------------------------------------------------------ - -"""This module contains t_protocol_no_ct's message definition.""" - -# pylint: disable=too-many-statements,too-many-locals,no-member,too-few-public-methods,too-many-branches,not-an-iterable,unidiomatic-typecheck,unsubscriptable-object -import logging -from typing import Any, Dict, FrozenSet, Optional, Set, Tuple, Union, cast - -from aea.configurations.base import PublicId -from aea.exceptions import AEAEnforceError, enforce -from aea.protocols.base import Message - - -_default_logger = logging.getLogger( - "aea.packages.fetchai.protocols.t_protocol_no_ct.message" -) - -DEFAULT_BODY_SIZE = 4 - - -class TProtocolNoCtMessage(Message): - """A protocol for testing purposes.""" - - protocol_id = PublicId.from_str("fetchai/t_protocol_no_ct:0.1.0") - protocol_specification_id = PublicId.from_str( - "some_author/some_protocol_name:1.0.0" - ) - - class Performative(Message.Performative): - """Performatives for the t_protocol_no_ct protocol.""" - - PERFORMATIVE_EMPTY_CONTENTS = "performative_empty_contents" - PERFORMATIVE_MT = "performative_mt" - PERFORMATIVE_O = "performative_o" - PERFORMATIVE_PCT = "performative_pct" - PERFORMATIVE_PMT = "performative_pmt" - PERFORMATIVE_PT = "performative_pt" - - def __str__(self) -> str: - """Get the string representation.""" - return str(self.value) - - _performatives = { - "performative_empty_contents", - "performative_mt", - "performative_o", - "performative_pct", - "performative_pmt", - "performative_pt", - } - __slots__: Tuple[str, ...] = tuple() - - class _SlotsCls: - __slots__ = ( - "content_bool", - "content_bytes", - "content_dict_bool_bool", - "content_dict_bool_bytes", - "content_dict_bool_float", - "content_dict_bool_int", - "content_dict_bool_str", - "content_dict_int_bool", - "content_dict_int_bytes", - "content_dict_int_float", - "content_dict_int_int", - "content_dict_int_str", - "content_dict_str_bool", - "content_dict_str_bytes", - "content_dict_str_float", - "content_dict_str_int", - "content_dict_str_str", - "content_float", - "content_int", - "content_list_bool", - "content_list_bytes", - "content_list_float", - "content_list_int", - "content_list_str", - "content_o_bool", - "content_o_dict_str_int", - "content_o_list_bytes", - "content_o_set_int", - "content_set_bool", - "content_set_bytes", - "content_set_float", - "content_set_int", - "content_set_str", - "content_str", - "content_union_1", - "content_union_2", - "dialogue_reference", - "message_id", - "performative", - "target", - ) - - def __init__( - self, - performative: Performative, - dialogue_reference: Tuple[str, str] = ("", ""), - message_id: int = 1, - target: int = 0, - **kwargs: Any, - ): - """ - Initialise an instance of TProtocolNoCtMessage. - - :param message_id: the message id. - :param dialogue_reference: the dialogue reference. - :param target: the message target. - :param performative: the message performative. - :param **kwargs: extra options. - """ - super().__init__( - dialogue_reference=dialogue_reference, - message_id=message_id, - target=target, - performative=TProtocolNoCtMessage.Performative(performative), - **kwargs, - ) - - @property - def valid_performatives(self) -> Set[str]: - """Get valid performatives.""" - return self._performatives - - @property - def dialogue_reference(self) -> Tuple[str, str]: - """Get the dialogue_reference of the message.""" - enforce(self.is_set("dialogue_reference"), "dialogue_reference is not set.") - return cast(Tuple[str, str], self.get("dialogue_reference")) - - @property - def message_id(self) -> int: - """Get the message_id of the message.""" - enforce(self.is_set("message_id"), "message_id is not set.") - return cast(int, self.get("message_id")) - - @property - def performative(self) -> Performative: # type: ignore # noqa: F821 - """Get the performative of the message.""" - enforce(self.is_set("performative"), "performative is not set.") - return cast(TProtocolNoCtMessage.Performative, self.get("performative")) - - @property - def target(self) -> int: - """Get the target of the message.""" - enforce(self.is_set("target"), "target is not set.") - return cast(int, self.get("target")) - - @property - def content_bool(self) -> bool: - """Get the 'content_bool' content from the message.""" - enforce(self.is_set("content_bool"), "'content_bool' content is not set.") - return cast(bool, self.get("content_bool")) - - @property - def content_bytes(self) -> bytes: - """Get the 'content_bytes' content from the message.""" - enforce(self.is_set("content_bytes"), "'content_bytes' content is not set.") - return cast(bytes, self.get("content_bytes")) - - @property - def content_dict_bool_bool(self) -> Dict[bool, bool]: - """Get the 'content_dict_bool_bool' content from the message.""" - enforce( - self.is_set("content_dict_bool_bool"), - "'content_dict_bool_bool' content is not set.", - ) - return cast(Dict[bool, bool], self.get("content_dict_bool_bool")) - - @property - def content_dict_bool_bytes(self) -> Dict[bool, bytes]: - """Get the 'content_dict_bool_bytes' content from the message.""" - enforce( - self.is_set("content_dict_bool_bytes"), - "'content_dict_bool_bytes' content is not set.", - ) - return cast(Dict[bool, bytes], self.get("content_dict_bool_bytes")) - - @property - def content_dict_bool_float(self) -> Dict[bool, float]: - """Get the 'content_dict_bool_float' content from the message.""" - enforce( - self.is_set("content_dict_bool_float"), - "'content_dict_bool_float' content is not set.", - ) - return cast(Dict[bool, float], self.get("content_dict_bool_float")) - - @property - def content_dict_bool_int(self) -> Dict[bool, int]: - """Get the 'content_dict_bool_int' content from the message.""" - enforce( - self.is_set("content_dict_bool_int"), - "'content_dict_bool_int' content is not set.", - ) - return cast(Dict[bool, int], self.get("content_dict_bool_int")) - - @property - def content_dict_bool_str(self) -> Dict[bool, str]: - """Get the 'content_dict_bool_str' content from the message.""" - enforce( - self.is_set("content_dict_bool_str"), - "'content_dict_bool_str' content is not set.", - ) - return cast(Dict[bool, str], self.get("content_dict_bool_str")) - - @property - def content_dict_int_bool(self) -> Dict[int, bool]: - """Get the 'content_dict_int_bool' content from the message.""" - enforce( - self.is_set("content_dict_int_bool"), - "'content_dict_int_bool' content is not set.", - ) - return cast(Dict[int, bool], self.get("content_dict_int_bool")) - - @property - def content_dict_int_bytes(self) -> Dict[int, bytes]: - """Get the 'content_dict_int_bytes' content from the message.""" - enforce( - self.is_set("content_dict_int_bytes"), - "'content_dict_int_bytes' content is not set.", - ) - return cast(Dict[int, bytes], self.get("content_dict_int_bytes")) - - @property - def content_dict_int_float(self) -> Dict[int, float]: - """Get the 'content_dict_int_float' content from the message.""" - enforce( - self.is_set("content_dict_int_float"), - "'content_dict_int_float' content is not set.", - ) - return cast(Dict[int, float], self.get("content_dict_int_float")) - - @property - def content_dict_int_int(self) -> Dict[int, int]: - """Get the 'content_dict_int_int' content from the message.""" - enforce( - self.is_set("content_dict_int_int"), - "'content_dict_int_int' content is not set.", - ) - return cast(Dict[int, int], self.get("content_dict_int_int")) - - @property - def content_dict_int_str(self) -> Dict[int, str]: - """Get the 'content_dict_int_str' content from the message.""" - enforce( - self.is_set("content_dict_int_str"), - "'content_dict_int_str' content is not set.", - ) - return cast(Dict[int, str], self.get("content_dict_int_str")) - - @property - def content_dict_str_bool(self) -> Dict[str, bool]: - """Get the 'content_dict_str_bool' content from the message.""" - enforce( - self.is_set("content_dict_str_bool"), - "'content_dict_str_bool' content is not set.", - ) - return cast(Dict[str, bool], self.get("content_dict_str_bool")) - - @property - def content_dict_str_bytes(self) -> Dict[str, bytes]: - """Get the 'content_dict_str_bytes' content from the message.""" - enforce( - self.is_set("content_dict_str_bytes"), - "'content_dict_str_bytes' content is not set.", - ) - return cast(Dict[str, bytes], self.get("content_dict_str_bytes")) - - @property - def content_dict_str_float(self) -> Dict[str, float]: - """Get the 'content_dict_str_float' content from the message.""" - enforce( - self.is_set("content_dict_str_float"), - "'content_dict_str_float' content is not set.", - ) - return cast(Dict[str, float], self.get("content_dict_str_float")) - - @property - def content_dict_str_int(self) -> Dict[str, int]: - """Get the 'content_dict_str_int' content from the message.""" - enforce( - self.is_set("content_dict_str_int"), - "'content_dict_str_int' content is not set.", - ) - return cast(Dict[str, int], self.get("content_dict_str_int")) - - @property - def content_dict_str_str(self) -> Dict[str, str]: - """Get the 'content_dict_str_str' content from the message.""" - enforce( - self.is_set("content_dict_str_str"), - "'content_dict_str_str' content is not set.", - ) - return cast(Dict[str, str], self.get("content_dict_str_str")) - - @property - def content_float(self) -> float: - """Get the 'content_float' content from the message.""" - enforce(self.is_set("content_float"), "'content_float' content is not set.") - return cast(float, self.get("content_float")) - - @property - def content_int(self) -> int: - """Get the 'content_int' content from the message.""" - enforce(self.is_set("content_int"), "'content_int' content is not set.") - return cast(int, self.get("content_int")) - - @property - def content_list_bool(self) -> Tuple[bool, ...]: - """Get the 'content_list_bool' content from the message.""" - enforce( - self.is_set("content_list_bool"), "'content_list_bool' content is not set." - ) - return cast(Tuple[bool, ...], self.get("content_list_bool")) - - @property - def content_list_bytes(self) -> Tuple[bytes, ...]: - """Get the 'content_list_bytes' content from the message.""" - enforce( - self.is_set("content_list_bytes"), - "'content_list_bytes' content is not set.", - ) - return cast(Tuple[bytes, ...], self.get("content_list_bytes")) - - @property - def content_list_float(self) -> Tuple[float, ...]: - """Get the 'content_list_float' content from the message.""" - enforce( - self.is_set("content_list_float"), - "'content_list_float' content is not set.", - ) - return cast(Tuple[float, ...], self.get("content_list_float")) - - @property - def content_list_int(self) -> Tuple[int, ...]: - """Get the 'content_list_int' content from the message.""" - enforce( - self.is_set("content_list_int"), "'content_list_int' content is not set." - ) - return cast(Tuple[int, ...], self.get("content_list_int")) - - @property - def content_list_str(self) -> Tuple[str, ...]: - """Get the 'content_list_str' content from the message.""" - enforce( - self.is_set("content_list_str"), "'content_list_str' content is not set." - ) - return cast(Tuple[str, ...], self.get("content_list_str")) - - @property - def content_o_bool(self) -> Optional[bool]: - """Get the 'content_o_bool' content from the message.""" - return cast(Optional[bool], self.get("content_o_bool")) - - @property - def content_o_dict_str_int(self) -> Optional[Dict[str, int]]: - """Get the 'content_o_dict_str_int' content from the message.""" - return cast(Optional[Dict[str, int]], self.get("content_o_dict_str_int")) - - @property - def content_o_list_bytes(self) -> Optional[Tuple[bytes, ...]]: - """Get the 'content_o_list_bytes' content from the message.""" - return cast(Optional[Tuple[bytes, ...]], self.get("content_o_list_bytes")) - - @property - def content_o_set_int(self) -> Optional[FrozenSet[int]]: - """Get the 'content_o_set_int' content from the message.""" - return cast(Optional[FrozenSet[int]], self.get("content_o_set_int")) - - @property - def content_set_bool(self) -> FrozenSet[bool]: - """Get the 'content_set_bool' content from the message.""" - enforce( - self.is_set("content_set_bool"), "'content_set_bool' content is not set." - ) - return cast(FrozenSet[bool], self.get("content_set_bool")) - - @property - def content_set_bytes(self) -> FrozenSet[bytes]: - """Get the 'content_set_bytes' content from the message.""" - enforce( - self.is_set("content_set_bytes"), "'content_set_bytes' content is not set." - ) - return cast(FrozenSet[bytes], self.get("content_set_bytes")) - - @property - def content_set_float(self) -> FrozenSet[float]: - """Get the 'content_set_float' content from the message.""" - enforce( - self.is_set("content_set_float"), "'content_set_float' content is not set." - ) - return cast(FrozenSet[float], self.get("content_set_float")) - - @property - def content_set_int(self) -> FrozenSet[int]: - """Get the 'content_set_int' content from the message.""" - enforce(self.is_set("content_set_int"), "'content_set_int' content is not set.") - return cast(FrozenSet[int], self.get("content_set_int")) - - @property - def content_set_str(self) -> FrozenSet[str]: - """Get the 'content_set_str' content from the message.""" - enforce(self.is_set("content_set_str"), "'content_set_str' content is not set.") - return cast(FrozenSet[str], self.get("content_set_str")) - - @property - def content_str(self) -> str: - """Get the 'content_str' content from the message.""" - enforce(self.is_set("content_str"), "'content_str' content is not set.") - return cast(str, self.get("content_str")) - - @property - def content_union_1( - self, - ) -> Union[ - bytes, int, float, bool, str, FrozenSet[int], Tuple[bool, ...], Dict[str, int] - ]: - """Get the 'content_union_1' content from the message.""" - enforce(self.is_set("content_union_1"), "'content_union_1' content is not set.") - return cast( - Union[ - bytes, - int, - float, - bool, - str, - FrozenSet[int], - Tuple[bool, ...], - Dict[str, int], - ], - self.get("content_union_1"), - ) - - @property - def content_union_2( - self, - ) -> Union[ - FrozenSet[bytes], - FrozenSet[int], - FrozenSet[str], - Tuple[float, ...], - Tuple[bool, ...], - Tuple[bytes, ...], - Dict[str, int], - Dict[int, float], - Dict[bool, bytes], - ]: - """Get the 'content_union_2' content from the message.""" - enforce(self.is_set("content_union_2"), "'content_union_2' content is not set.") - return cast( - Union[ - FrozenSet[bytes], - FrozenSet[int], - FrozenSet[str], - Tuple[float, ...], - Tuple[bool, ...], - Tuple[bytes, ...], - Dict[str, int], - Dict[int, float], - Dict[bool, bytes], - ], - self.get("content_union_2"), - ) - - def _is_consistent(self) -> bool: - """Check that the message follows the t_protocol_no_ct protocol.""" - try: - enforce( - isinstance(self.dialogue_reference, tuple), - "Invalid type for 'dialogue_reference'. Expected 'tuple'. Found '{}'.".format( - type(self.dialogue_reference) - ), - ) - enforce( - isinstance(self.dialogue_reference[0], str), - "Invalid type for 'dialogue_reference[0]'. Expected 'str'. Found '{}'.".format( - type(self.dialogue_reference[0]) - ), - ) - enforce( - isinstance(self.dialogue_reference[1], str), - "Invalid type for 'dialogue_reference[1]'. Expected 'str'. Found '{}'.".format( - type(self.dialogue_reference[1]) - ), - ) - enforce( - type(self.message_id) is int, - "Invalid type for 'message_id'. Expected 'int'. Found '{}'.".format( - type(self.message_id) - ), - ) - enforce( - type(self.target) is int, - "Invalid type for 'target'. Expected 'int'. Found '{}'.".format( - type(self.target) - ), - ) - - # Light Protocol Rule 2 - # Check correct performative - enforce( - isinstance(self.performative, TProtocolNoCtMessage.Performative), - "Invalid 'performative'. Expected either of '{}'. Found '{}'.".format( - self.valid_performatives, self.performative - ), - ) - - # Check correct contents - actual_nb_of_contents = len(self._body) - DEFAULT_BODY_SIZE - expected_nb_of_contents = 0 - if self.performative == TProtocolNoCtMessage.Performative.PERFORMATIVE_PT: - expected_nb_of_contents = 5 - enforce( - isinstance(self.content_bytes, bytes), - "Invalid type for content 'content_bytes'. Expected 'bytes'. Found '{}'.".format( - type(self.content_bytes) - ), - ) - enforce( - type(self.content_int) is int, - "Invalid type for content 'content_int'. Expected 'int'. Found '{}'.".format( - type(self.content_int) - ), - ) - enforce( - isinstance(self.content_float, float), - "Invalid type for content 'content_float'. Expected 'float'. Found '{}'.".format( - type(self.content_float) - ), - ) - enforce( - isinstance(self.content_bool, bool), - "Invalid type for content 'content_bool'. Expected 'bool'. Found '{}'.".format( - type(self.content_bool) - ), - ) - enforce( - isinstance(self.content_str, str), - "Invalid type for content 'content_str'. Expected 'str'. Found '{}'.".format( - type(self.content_str) - ), - ) - elif ( - self.performative == TProtocolNoCtMessage.Performative.PERFORMATIVE_PCT - ): - expected_nb_of_contents = 10 - enforce( - isinstance(self.content_set_bytes, frozenset), - "Invalid type for content 'content_set_bytes'. Expected 'frozenset'. Found '{}'.".format( - type(self.content_set_bytes) - ), - ) - enforce( - all( - isinstance(element, bytes) for element in self.content_set_bytes - ), - "Invalid type for frozenset elements in content 'content_set_bytes'. Expected 'bytes'.", - ) - enforce( - isinstance(self.content_set_int, frozenset), - "Invalid type for content 'content_set_int'. Expected 'frozenset'. Found '{}'.".format( - type(self.content_set_int) - ), - ) - enforce( - all(type(element) is int for element in self.content_set_int), - "Invalid type for frozenset elements in content 'content_set_int'. Expected 'int'.", - ) - enforce( - isinstance(self.content_set_float, frozenset), - "Invalid type for content 'content_set_float'. Expected 'frozenset'. Found '{}'.".format( - type(self.content_set_float) - ), - ) - enforce( - all( - isinstance(element, float) for element in self.content_set_float - ), - "Invalid type for frozenset elements in content 'content_set_float'. Expected 'float'.", - ) - enforce( - isinstance(self.content_set_bool, frozenset), - "Invalid type for content 'content_set_bool'. Expected 'frozenset'. Found '{}'.".format( - type(self.content_set_bool) - ), - ) - enforce( - all(isinstance(element, bool) for element in self.content_set_bool), - "Invalid type for frozenset elements in content 'content_set_bool'. Expected 'bool'.", - ) - enforce( - isinstance(self.content_set_str, frozenset), - "Invalid type for content 'content_set_str'. Expected 'frozenset'. Found '{}'.".format( - type(self.content_set_str) - ), - ) - enforce( - all(isinstance(element, str) for element in self.content_set_str), - "Invalid type for frozenset elements in content 'content_set_str'. Expected 'str'.", - ) - enforce( - isinstance(self.content_list_bytes, tuple), - "Invalid type for content 'content_list_bytes'. Expected 'tuple'. Found '{}'.".format( - type(self.content_list_bytes) - ), - ) - enforce( - all( - isinstance(element, bytes) - for element in self.content_list_bytes - ), - "Invalid type for tuple elements in content 'content_list_bytes'. Expected 'bytes'.", - ) - enforce( - isinstance(self.content_list_int, tuple), - "Invalid type for content 'content_list_int'. Expected 'tuple'. Found '{}'.".format( - type(self.content_list_int) - ), - ) - enforce( - all(type(element) is int for element in self.content_list_int), - "Invalid type for tuple elements in content 'content_list_int'. Expected 'int'.", - ) - enforce( - isinstance(self.content_list_float, tuple), - "Invalid type for content 'content_list_float'. Expected 'tuple'. Found '{}'.".format( - type(self.content_list_float) - ), - ) - enforce( - all( - isinstance(element, float) - for element in self.content_list_float - ), - "Invalid type for tuple elements in content 'content_list_float'. Expected 'float'.", - ) - enforce( - isinstance(self.content_list_bool, tuple), - "Invalid type for content 'content_list_bool'. Expected 'tuple'. Found '{}'.".format( - type(self.content_list_bool) - ), - ) - enforce( - all( - isinstance(element, bool) for element in self.content_list_bool - ), - "Invalid type for tuple elements in content 'content_list_bool'. Expected 'bool'.", - ) - enforce( - isinstance(self.content_list_str, tuple), - "Invalid type for content 'content_list_str'. Expected 'tuple'. Found '{}'.".format( - type(self.content_list_str) - ), - ) - enforce( - all(isinstance(element, str) for element in self.content_list_str), - "Invalid type for tuple elements in content 'content_list_str'. Expected 'str'.", - ) - elif ( - self.performative == TProtocolNoCtMessage.Performative.PERFORMATIVE_PMT - ): - expected_nb_of_contents = 15 - enforce( - isinstance(self.content_dict_int_bytes, dict), - "Invalid type for content 'content_dict_int_bytes'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_int_bytes) - ), - ) - for ( - key_of_content_dict_int_bytes, - value_of_content_dict_int_bytes, - ) in self.content_dict_int_bytes.items(): - enforce( - type(key_of_content_dict_int_bytes) is int, - "Invalid type for dictionary keys in content 'content_dict_int_bytes'. Expected 'int'. Found '{}'.".format( - type(key_of_content_dict_int_bytes) - ), - ) - enforce( - isinstance(value_of_content_dict_int_bytes, bytes), - "Invalid type for dictionary values in content 'content_dict_int_bytes'. Expected 'bytes'. Found '{}'.".format( - type(value_of_content_dict_int_bytes) - ), - ) - enforce( - isinstance(self.content_dict_int_int, dict), - "Invalid type for content 'content_dict_int_int'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_int_int) - ), - ) - for ( - key_of_content_dict_int_int, - value_of_content_dict_int_int, - ) in self.content_dict_int_int.items(): - enforce( - type(key_of_content_dict_int_int) is int, - "Invalid type for dictionary keys in content 'content_dict_int_int'. Expected 'int'. Found '{}'.".format( - type(key_of_content_dict_int_int) - ), - ) - enforce( - type(value_of_content_dict_int_int) is int, - "Invalid type for dictionary values in content 'content_dict_int_int'. Expected 'int'. Found '{}'.".format( - type(value_of_content_dict_int_int) - ), - ) - enforce( - isinstance(self.content_dict_int_float, dict), - "Invalid type for content 'content_dict_int_float'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_int_float) - ), - ) - for ( - key_of_content_dict_int_float, - value_of_content_dict_int_float, - ) in self.content_dict_int_float.items(): - enforce( - type(key_of_content_dict_int_float) is int, - "Invalid type for dictionary keys in content 'content_dict_int_float'. Expected 'int'. Found '{}'.".format( - type(key_of_content_dict_int_float) - ), - ) - enforce( - isinstance(value_of_content_dict_int_float, float), - "Invalid type for dictionary values in content 'content_dict_int_float'. Expected 'float'. Found '{}'.".format( - type(value_of_content_dict_int_float) - ), - ) - enforce( - isinstance(self.content_dict_int_bool, dict), - "Invalid type for content 'content_dict_int_bool'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_int_bool) - ), - ) - for ( - key_of_content_dict_int_bool, - value_of_content_dict_int_bool, - ) in self.content_dict_int_bool.items(): - enforce( - type(key_of_content_dict_int_bool) is int, - "Invalid type for dictionary keys in content 'content_dict_int_bool'. Expected 'int'. Found '{}'.".format( - type(key_of_content_dict_int_bool) - ), - ) - enforce( - isinstance(value_of_content_dict_int_bool, bool), - "Invalid type for dictionary values in content 'content_dict_int_bool'. Expected 'bool'. Found '{}'.".format( - type(value_of_content_dict_int_bool) - ), - ) - enforce( - isinstance(self.content_dict_int_str, dict), - "Invalid type for content 'content_dict_int_str'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_int_str) - ), - ) - for ( - key_of_content_dict_int_str, - value_of_content_dict_int_str, - ) in self.content_dict_int_str.items(): - enforce( - type(key_of_content_dict_int_str) is int, - "Invalid type for dictionary keys in content 'content_dict_int_str'. Expected 'int'. Found '{}'.".format( - type(key_of_content_dict_int_str) - ), - ) - enforce( - isinstance(value_of_content_dict_int_str, str), - "Invalid type for dictionary values in content 'content_dict_int_str'. Expected 'str'. Found '{}'.".format( - type(value_of_content_dict_int_str) - ), - ) - enforce( - isinstance(self.content_dict_bool_bytes, dict), - "Invalid type for content 'content_dict_bool_bytes'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_bool_bytes) - ), - ) - for ( - key_of_content_dict_bool_bytes, - value_of_content_dict_bool_bytes, - ) in self.content_dict_bool_bytes.items(): - enforce( - isinstance(key_of_content_dict_bool_bytes, bool), - "Invalid type for dictionary keys in content 'content_dict_bool_bytes'. Expected 'bool'. Found '{}'.".format( - type(key_of_content_dict_bool_bytes) - ), - ) - enforce( - isinstance(value_of_content_dict_bool_bytes, bytes), - "Invalid type for dictionary values in content 'content_dict_bool_bytes'. Expected 'bytes'. Found '{}'.".format( - type(value_of_content_dict_bool_bytes) - ), - ) - enforce( - isinstance(self.content_dict_bool_int, dict), - "Invalid type for content 'content_dict_bool_int'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_bool_int) - ), - ) - for ( - key_of_content_dict_bool_int, - value_of_content_dict_bool_int, - ) in self.content_dict_bool_int.items(): - enforce( - isinstance(key_of_content_dict_bool_int, bool), - "Invalid type for dictionary keys in content 'content_dict_bool_int'. Expected 'bool'. Found '{}'.".format( - type(key_of_content_dict_bool_int) - ), - ) - enforce( - type(value_of_content_dict_bool_int) is int, - "Invalid type for dictionary values in content 'content_dict_bool_int'. Expected 'int'. Found '{}'.".format( - type(value_of_content_dict_bool_int) - ), - ) - enforce( - isinstance(self.content_dict_bool_float, dict), - "Invalid type for content 'content_dict_bool_float'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_bool_float) - ), - ) - for ( - key_of_content_dict_bool_float, - value_of_content_dict_bool_float, - ) in self.content_dict_bool_float.items(): - enforce( - isinstance(key_of_content_dict_bool_float, bool), - "Invalid type for dictionary keys in content 'content_dict_bool_float'. Expected 'bool'. Found '{}'.".format( - type(key_of_content_dict_bool_float) - ), - ) - enforce( - isinstance(value_of_content_dict_bool_float, float), - "Invalid type for dictionary values in content 'content_dict_bool_float'. Expected 'float'. Found '{}'.".format( - type(value_of_content_dict_bool_float) - ), - ) - enforce( - isinstance(self.content_dict_bool_bool, dict), - "Invalid type for content 'content_dict_bool_bool'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_bool_bool) - ), - ) - for ( - key_of_content_dict_bool_bool, - value_of_content_dict_bool_bool, - ) in self.content_dict_bool_bool.items(): - enforce( - isinstance(key_of_content_dict_bool_bool, bool), - "Invalid type for dictionary keys in content 'content_dict_bool_bool'. Expected 'bool'. Found '{}'.".format( - type(key_of_content_dict_bool_bool) - ), - ) - enforce( - isinstance(value_of_content_dict_bool_bool, bool), - "Invalid type for dictionary values in content 'content_dict_bool_bool'. Expected 'bool'. Found '{}'.".format( - type(value_of_content_dict_bool_bool) - ), - ) - enforce( - isinstance(self.content_dict_bool_str, dict), - "Invalid type for content 'content_dict_bool_str'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_bool_str) - ), - ) - for ( - key_of_content_dict_bool_str, - value_of_content_dict_bool_str, - ) in self.content_dict_bool_str.items(): - enforce( - isinstance(key_of_content_dict_bool_str, bool), - "Invalid type for dictionary keys in content 'content_dict_bool_str'. Expected 'bool'. Found '{}'.".format( - type(key_of_content_dict_bool_str) - ), - ) - enforce( - isinstance(value_of_content_dict_bool_str, str), - "Invalid type for dictionary values in content 'content_dict_bool_str'. Expected 'str'. Found '{}'.".format( - type(value_of_content_dict_bool_str) - ), - ) - enforce( - isinstance(self.content_dict_str_bytes, dict), - "Invalid type for content 'content_dict_str_bytes'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_str_bytes) - ), - ) - for ( - key_of_content_dict_str_bytes, - value_of_content_dict_str_bytes, - ) in self.content_dict_str_bytes.items(): - enforce( - isinstance(key_of_content_dict_str_bytes, str), - "Invalid type for dictionary keys in content 'content_dict_str_bytes'. Expected 'str'. Found '{}'.".format( - type(key_of_content_dict_str_bytes) - ), - ) - enforce( - isinstance(value_of_content_dict_str_bytes, bytes), - "Invalid type for dictionary values in content 'content_dict_str_bytes'. Expected 'bytes'. Found '{}'.".format( - type(value_of_content_dict_str_bytes) - ), - ) - enforce( - isinstance(self.content_dict_str_int, dict), - "Invalid type for content 'content_dict_str_int'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_str_int) - ), - ) - for ( - key_of_content_dict_str_int, - value_of_content_dict_str_int, - ) in self.content_dict_str_int.items(): - enforce( - isinstance(key_of_content_dict_str_int, str), - "Invalid type for dictionary keys in content 'content_dict_str_int'. Expected 'str'. Found '{}'.".format( - type(key_of_content_dict_str_int) - ), - ) - enforce( - type(value_of_content_dict_str_int) is int, - "Invalid type for dictionary values in content 'content_dict_str_int'. Expected 'int'. Found '{}'.".format( - type(value_of_content_dict_str_int) - ), - ) - enforce( - isinstance(self.content_dict_str_float, dict), - "Invalid type for content 'content_dict_str_float'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_str_float) - ), - ) - for ( - key_of_content_dict_str_float, - value_of_content_dict_str_float, - ) in self.content_dict_str_float.items(): - enforce( - isinstance(key_of_content_dict_str_float, str), - "Invalid type for dictionary keys in content 'content_dict_str_float'. Expected 'str'. Found '{}'.".format( - type(key_of_content_dict_str_float) - ), - ) - enforce( - isinstance(value_of_content_dict_str_float, float), - "Invalid type for dictionary values in content 'content_dict_str_float'. Expected 'float'. Found '{}'.".format( - type(value_of_content_dict_str_float) - ), - ) - enforce( - isinstance(self.content_dict_str_bool, dict), - "Invalid type for content 'content_dict_str_bool'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_str_bool) - ), - ) - for ( - key_of_content_dict_str_bool, - value_of_content_dict_str_bool, - ) in self.content_dict_str_bool.items(): - enforce( - isinstance(key_of_content_dict_str_bool, str), - "Invalid type for dictionary keys in content 'content_dict_str_bool'. Expected 'str'. Found '{}'.".format( - type(key_of_content_dict_str_bool) - ), - ) - enforce( - isinstance(value_of_content_dict_str_bool, bool), - "Invalid type for dictionary values in content 'content_dict_str_bool'. Expected 'bool'. Found '{}'.".format( - type(value_of_content_dict_str_bool) - ), - ) - enforce( - isinstance(self.content_dict_str_str, dict), - "Invalid type for content 'content_dict_str_str'. Expected 'dict'. Found '{}'.".format( - type(self.content_dict_str_str) - ), - ) - for ( - key_of_content_dict_str_str, - value_of_content_dict_str_str, - ) in self.content_dict_str_str.items(): - enforce( - isinstance(key_of_content_dict_str_str, str), - "Invalid type for dictionary keys in content 'content_dict_str_str'. Expected 'str'. Found '{}'.".format( - type(key_of_content_dict_str_str) - ), - ) - enforce( - isinstance(value_of_content_dict_str_str, str), - "Invalid type for dictionary values in content 'content_dict_str_str'. Expected 'str'. Found '{}'.".format( - type(value_of_content_dict_str_str) - ), - ) - elif self.performative == TProtocolNoCtMessage.Performative.PERFORMATIVE_MT: - expected_nb_of_contents = 2 - enforce( - isinstance(self.content_union_1, bool) - or isinstance(self.content_union_1, bytes) - or isinstance(self.content_union_1, dict) - or isinstance(self.content_union_1, float) - or isinstance(self.content_union_1, frozenset) - or type(self.content_union_1) is int - or isinstance(self.content_union_1, str) - or isinstance(self.content_union_1, tuple), - "Invalid type for content 'content_union_1'. Expected either of '['bool', 'bytes', 'dict', 'float', 'frozenset', 'int', 'str', 'tuple']'. Found '{}'.".format( - type(self.content_union_1) - ), - ) - if isinstance(self.content_union_1, frozenset): - enforce( - all(type(element) is int for element in self.content_union_1), - "Invalid type for elements of content 'content_union_1'. Expected 'int'.", - ) - if isinstance(self.content_union_1, tuple): - enforce( - all( - isinstance(element, bool) - for element in self.content_union_1 - ), - "Invalid type for tuple elements in content 'content_union_1'. Expected 'bool'.", - ) - if isinstance(self.content_union_1, dict): - for ( - key_of_content_union_1, - value_of_content_union_1, - ) in self.content_union_1.items(): - enforce( - ( - isinstance(key_of_content_union_1, str) - and type(value_of_content_union_1) is int - ), - "Invalid type for dictionary key, value in content 'content_union_1'. Expected 'str', 'int'.", - ) - enforce( - isinstance(self.content_union_2, dict) - or isinstance(self.content_union_2, frozenset) - or isinstance(self.content_union_2, tuple), - "Invalid type for content 'content_union_2'. Expected either of '['dict', 'frozenset', 'tuple']'. Found '{}'.".format( - type(self.content_union_2) - ), - ) - if isinstance(self.content_union_2, frozenset): - enforce( - all( - isinstance(element, bytes) - for element in self.content_union_2 - ) - or all(type(element) is int for element in self.content_union_2) - or all( - isinstance(element, str) for element in self.content_union_2 - ), - "Invalid type for frozenset elements in content 'content_union_2'. Expected either 'bytes' or 'int' or 'str'.", - ) - if isinstance(self.content_union_2, tuple): - enforce( - all( - isinstance(element, bool) - for element in self.content_union_2 - ) - or all( - isinstance(element, bytes) - for element in self.content_union_2 - ) - or all( - isinstance(element, float) - for element in self.content_union_2 - ), - "Invalid type for tuple elements in content 'content_union_2'. Expected either 'bool' or 'bytes' or 'float'.", - ) - if isinstance(self.content_union_2, dict): - for ( - key_of_content_union_2, - value_of_content_union_2, - ) in self.content_union_2.items(): - enforce( - ( - isinstance(key_of_content_union_2, bool) - and isinstance(value_of_content_union_2, bytes) - ) - or ( - type(key_of_content_union_2) is int - and isinstance(value_of_content_union_2, float) - ) - or ( - isinstance(key_of_content_union_2, str) - and type(value_of_content_union_2) is int - ), - "Invalid type for dictionary key, value in content 'content_union_2'. Expected 'bool','bytes' or 'int','float' or 'str','int'.", - ) - elif self.performative == TProtocolNoCtMessage.Performative.PERFORMATIVE_O: - expected_nb_of_contents = 0 - if self.is_set("content_o_bool"): - expected_nb_of_contents += 1 - content_o_bool = cast(bool, self.content_o_bool) - enforce( - isinstance(content_o_bool, bool), - "Invalid type for content 'content_o_bool'. Expected 'bool'. Found '{}'.".format( - type(content_o_bool) - ), - ) - if self.is_set("content_o_set_int"): - expected_nb_of_contents += 1 - content_o_set_int = cast(FrozenSet[int], self.content_o_set_int) - enforce( - isinstance(content_o_set_int, frozenset), - "Invalid type for content 'content_o_set_int'. Expected 'frozenset'. Found '{}'.".format( - type(content_o_set_int) - ), - ) - enforce( - all(type(element) is int for element in content_o_set_int), - "Invalid type for frozenset elements in content 'content_o_set_int'. Expected 'int'.", - ) - if self.is_set("content_o_list_bytes"): - expected_nb_of_contents += 1 - content_o_list_bytes = cast( - Tuple[bytes, ...], self.content_o_list_bytes - ) - enforce( - isinstance(content_o_list_bytes, tuple), - "Invalid type for content 'content_o_list_bytes'. Expected 'tuple'. Found '{}'.".format( - type(content_o_list_bytes) - ), - ) - enforce( - all( - isinstance(element, bytes) - for element in content_o_list_bytes - ), - "Invalid type for tuple elements in content 'content_o_list_bytes'. Expected 'bytes'.", - ) - if self.is_set("content_o_dict_str_int"): - expected_nb_of_contents += 1 - content_o_dict_str_int = cast( - Dict[str, int], self.content_o_dict_str_int - ) - enforce( - isinstance(content_o_dict_str_int, dict), - "Invalid type for content 'content_o_dict_str_int'. Expected 'dict'. Found '{}'.".format( - type(content_o_dict_str_int) - ), - ) - for ( - key_of_content_o_dict_str_int, - value_of_content_o_dict_str_int, - ) in content_o_dict_str_int.items(): - enforce( - isinstance(key_of_content_o_dict_str_int, str), - "Invalid type for dictionary keys in content 'content_o_dict_str_int'. Expected 'str'. Found '{}'.".format( - type(key_of_content_o_dict_str_int) - ), - ) - enforce( - type(value_of_content_o_dict_str_int) is int, - "Invalid type for dictionary values in content 'content_o_dict_str_int'. Expected 'int'. Found '{}'.".format( - type(value_of_content_o_dict_str_int) - ), - ) - elif ( - self.performative - == TProtocolNoCtMessage.Performative.PERFORMATIVE_EMPTY_CONTENTS - ): - expected_nb_of_contents = 0 - - # Check correct content count - enforce( - expected_nb_of_contents == actual_nb_of_contents, - "Incorrect number of contents. Expected {}. Found {}".format( - expected_nb_of_contents, actual_nb_of_contents - ), - ) - - # Light Protocol Rule 3 - if self.message_id == 1: - enforce( - self.target == 0, - "Invalid 'target'. Expected 0 (because 'message_id' is 1). Found {}.".format( - self.target - ), - ) - except (AEAEnforceError, ValueError, KeyError) as e: - _default_logger.error(str(e)) - return False - - return True diff --git a/tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml b/tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml deleted file mode 100644 index 58ef8d239a..0000000000 --- a/tests/data/reference_protocols/t_protocol_no_ct/protocol.yaml +++ /dev/null @@ -1,18 +0,0 @@ -name: t_protocol_no_ct -author: fetchai -version: 0.1.0 -protocol_specification_id: some_author/some_protocol_name:1.0.0 -type: protocol -description: A protocol for testing purposes. -license: Apache-2.0 -aea_version: '>=1.0.0, <2.0.0' -fingerprint: - __init__.py: QmUoUykEakeMMAgCAaXYfagbY8Gp2PGYgk5W4i1DtaE5Hs - dialogues.py: QmQw2uWqsbwNma5yKnb6cRhaCHuU5nRa5F7eZoxRgUVekm - message.py: QmVuM5P73nhZfTRW6yM4Ehz8tpegDGs38Vig3sYbHLMEKy - serialization.py: QmQNpaTtPDZ2jpAEYTJM6Y5poyJFEYSbAGj8GcvRLQc3xo - t_protocol_no_ct.proto: QmapyiDZBjF3K8yLZvCBYhjm3dFVwaLBKL8PLWUoYpTLez - t_protocol_no_ct_pb2.py: QmUeCxpxg2SYZfB26rjFentsmpFtJLgwU1ueMvPNQA4YbP -fingerprint_ignore_patterns: [] -dependencies: - protobuf: {} diff --git a/tests/data/reference_protocols/t_protocol_no_ct/serialization.py b/tests/data/reference_protocols/t_protocol_no_ct/serialization.py deleted file mode 100644 index af92794552..0000000000 --- a/tests/data/reference_protocols/t_protocol_no_ct/serialization.py +++ /dev/null @@ -1,602 +0,0 @@ -# -*- coding: utf-8 -*- -# ------------------------------------------------------------------------------ -# -# Copyright 2018-2022 Fetch.AI Limited -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# ------------------------------------------------------------------------------ - -"""Serialization module for t_protocol_no_ct protocol.""" - -# pylint: disable=too-many-statements,too-many-locals,no-member,too-few-public-methods,redefined-builtin -from typing import Any, Dict, cast - -from aea.mail.base_pb2 import DialogueMessage -from aea.mail.base_pb2 import Message as ProtobufMessage -from aea.protocols.base import Message, Serializer - -from tests.data.generator.t_protocol_no_ct import t_protocol_no_ct_pb2 -from tests.data.generator.t_protocol_no_ct.message import TProtocolNoCtMessage - - -class TProtocolNoCtSerializer(Serializer): - """Serialization for the 't_protocol_no_ct' protocol.""" - - @staticmethod - def encode(msg: Message) -> bytes: - """ - Encode a 'TProtocolNoCt' message into bytes. - - :param msg: the message object. - :return: the bytes. - """ - msg = cast(TProtocolNoCtMessage, msg) - message_pb = ProtobufMessage() - dialogue_message_pb = DialogueMessage() - t_protocol_no_ct_msg = t_protocol_no_ct_pb2.TProtocolNoCtMessage() - - dialogue_message_pb.message_id = msg.message_id - dialogue_reference = msg.dialogue_reference - dialogue_message_pb.dialogue_starter_reference = dialogue_reference[0] - dialogue_message_pb.dialogue_responder_reference = dialogue_reference[1] - dialogue_message_pb.target = msg.target - - performative_id = msg.performative - if performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_PT: - performative = t_protocol_no_ct_pb2.TProtocolNoCtMessage.Performative_Pt_Performative() # type: ignore - content_bytes = msg.content_bytes - performative.content_bytes = content_bytes - content_int = msg.content_int - performative.content_int = content_int - content_float = msg.content_float - performative.content_float = content_float - content_bool = msg.content_bool - performative.content_bool = content_bool - content_str = msg.content_str - performative.content_str = content_str - t_protocol_no_ct_msg.performative_pt.CopyFrom(performative) - elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_PCT: - performative = t_protocol_no_ct_pb2.TProtocolNoCtMessage.Performative_Pct_Performative() # type: ignore - content_set_bytes = msg.content_set_bytes - performative.content_set_bytes.extend(content_set_bytes) - content_set_int = msg.content_set_int - performative.content_set_int.extend(content_set_int) - content_set_float = msg.content_set_float - performative.content_set_float.extend(content_set_float) - content_set_bool = msg.content_set_bool - performative.content_set_bool.extend(content_set_bool) - content_set_str = msg.content_set_str - performative.content_set_str.extend(content_set_str) - content_list_bytes = msg.content_list_bytes - performative.content_list_bytes.extend(content_list_bytes) - content_list_int = msg.content_list_int - performative.content_list_int.extend(content_list_int) - content_list_float = msg.content_list_float - performative.content_list_float.extend(content_list_float) - content_list_bool = msg.content_list_bool - performative.content_list_bool.extend(content_list_bool) - content_list_str = msg.content_list_str - performative.content_list_str.extend(content_list_str) - t_protocol_no_ct_msg.performative_pct.CopyFrom(performative) - elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_PMT: - performative = t_protocol_no_ct_pb2.TProtocolNoCtMessage.Performative_Pmt_Performative() # type: ignore - content_dict_int_bytes = msg.content_dict_int_bytes - performative.content_dict_int_bytes.update(content_dict_int_bytes) - content_dict_int_int = msg.content_dict_int_int - performative.content_dict_int_int.update(content_dict_int_int) - content_dict_int_float = msg.content_dict_int_float - performative.content_dict_int_float.update(content_dict_int_float) - content_dict_int_bool = msg.content_dict_int_bool - performative.content_dict_int_bool.update(content_dict_int_bool) - content_dict_int_str = msg.content_dict_int_str - performative.content_dict_int_str.update(content_dict_int_str) - content_dict_bool_bytes = msg.content_dict_bool_bytes - performative.content_dict_bool_bytes.update(content_dict_bool_bytes) - content_dict_bool_int = msg.content_dict_bool_int - performative.content_dict_bool_int.update(content_dict_bool_int) - content_dict_bool_float = msg.content_dict_bool_float - performative.content_dict_bool_float.update(content_dict_bool_float) - content_dict_bool_bool = msg.content_dict_bool_bool - performative.content_dict_bool_bool.update(content_dict_bool_bool) - content_dict_bool_str = msg.content_dict_bool_str - performative.content_dict_bool_str.update(content_dict_bool_str) - content_dict_str_bytes = msg.content_dict_str_bytes - performative.content_dict_str_bytes.update(content_dict_str_bytes) - content_dict_str_int = msg.content_dict_str_int - performative.content_dict_str_int.update(content_dict_str_int) - content_dict_str_float = msg.content_dict_str_float - performative.content_dict_str_float.update(content_dict_str_float) - content_dict_str_bool = msg.content_dict_str_bool - performative.content_dict_str_bool.update(content_dict_str_bool) - content_dict_str_str = msg.content_dict_str_str - performative.content_dict_str_str.update(content_dict_str_str) - t_protocol_no_ct_msg.performative_pmt.CopyFrom(performative) - elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_MT: - performative = t_protocol_no_ct_pb2.TProtocolNoCtMessage.Performative_Mt_Performative() # type: ignore - if msg.is_set("content_union_1"): - if isinstance(msg.content_union_1, bytes): - performative.content_union_1_type_bytes_is_set = True - content_union_1_type_bytes = msg.content_union_1 - performative.content_union_1_type_bytes = content_union_1_type_bytes - elif isinstance(msg.content_union_1, int): - performative.content_union_1_type_int_is_set = True - content_union_1_type_int = msg.content_union_1 - performative.content_union_1_type_int = content_union_1_type_int - elif isinstance(msg.content_union_1, float): - performative.content_union_1_type_float_is_set = True - content_union_1_type_float = msg.content_union_1 - performative.content_union_1_type_float = content_union_1_type_float - elif isinstance(msg.content_union_1, bool): - performative.content_union_1_type_bool_is_set = True - content_union_1_type_bool = msg.content_union_1 - performative.content_union_1_type_bool = content_union_1_type_bool - elif isinstance(msg.content_union_1, str): - performative.content_union_1_type_str_is_set = True - content_union_1_type_str = msg.content_union_1 - performative.content_union_1_type_str = content_union_1_type_str - elif isinstance(msg.content_union_1, (set, frozenset)) and all( - map(lambda x: isinstance(x, int), msg.content_union_1) - ): - performative.content_union_1_type_set_of_int_is_set = True - content_union_1 = msg.content_union_1 - performative.content_union_1_type_set_of_int.extend(content_union_1) - elif isinstance(msg.content_union_1, (list, tuple)) and all( - map(lambda x: isinstance(x, bool), msg.content_union_1) - ): - performative.content_union_1_type_list_of_bool_is_set = True - content_union_1 = msg.content_union_1 - performative.content_union_1_type_list_of_bool.extend( - content_union_1 - ) - elif isinstance(msg.content_union_1, dict) and all( - map( - lambda x: isinstance(x[0], str) and isinstance(x[1], int), - msg.content_union_1.items(), - ) - ): - performative.content_union_1_type_dict_of_str_int_is_set = True - content_union_1 = msg.content_union_1 - performative.content_union_1_type_dict_of_str_int.update( - content_union_1 - ) - elif msg.content_union_1 is None: - pass - else: - raise ValueError( - f"Bad value set to `content_union_1` {msg.content_union_1 }" - ) - if msg.is_set("content_union_2"): - if isinstance(msg.content_union_2, (set, frozenset)) and all( - map(lambda x: isinstance(x, bytes), msg.content_union_2) - ): - performative.content_union_2_type_set_of_bytes_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_set_of_bytes.extend( - content_union_2 - ) - elif isinstance(msg.content_union_2, (set, frozenset)) and all( - map(lambda x: isinstance(x, int), msg.content_union_2) - ): - performative.content_union_2_type_set_of_int_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_set_of_int.extend(content_union_2) - elif isinstance(msg.content_union_2, (set, frozenset)) and all( - map(lambda x: isinstance(x, str), msg.content_union_2) - ): - performative.content_union_2_type_set_of_str_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_set_of_str.extend(content_union_2) - elif isinstance(msg.content_union_2, (list, tuple)) and all( - map(lambda x: isinstance(x, float), msg.content_union_2) - ): - performative.content_union_2_type_list_of_float_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_list_of_float.extend( - content_union_2 - ) - elif isinstance(msg.content_union_2, (list, tuple)) and all( - map(lambda x: isinstance(x, bool), msg.content_union_2) - ): - performative.content_union_2_type_list_of_bool_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_list_of_bool.extend( - content_union_2 - ) - elif isinstance(msg.content_union_2, (list, tuple)) and all( - map(lambda x: isinstance(x, bytes), msg.content_union_2) - ): - performative.content_union_2_type_list_of_bytes_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_list_of_bytes.extend( - content_union_2 - ) - elif isinstance(msg.content_union_2, dict) and all( - map( - lambda x: isinstance(x[0], str) and isinstance(x[1], int), - msg.content_union_2.items(), - ) - ): - performative.content_union_2_type_dict_of_str_int_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_dict_of_str_int.update( - content_union_2 - ) - elif isinstance(msg.content_union_2, dict) and all( - map( - lambda x: isinstance(x[0], int) and isinstance(x[1], float), - msg.content_union_2.items(), - ) - ): - performative.content_union_2_type_dict_of_int_float_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_dict_of_int_float.update( - content_union_2 - ) - elif isinstance(msg.content_union_2, dict) and all( - map( - lambda x: isinstance(x[0], bool) and isinstance(x[1], bytes), - msg.content_union_2.items(), - ) - ): - performative.content_union_2_type_dict_of_bool_bytes_is_set = True - content_union_2 = msg.content_union_2 - performative.content_union_2_type_dict_of_bool_bytes.update( - content_union_2 - ) - elif msg.content_union_2 is None: - pass - else: - raise ValueError( - f"Bad value set to `content_union_2` {msg.content_union_2 }" - ) - t_protocol_no_ct_msg.performative_mt.CopyFrom(performative) - elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_O: - performative = t_protocol_no_ct_pb2.TProtocolNoCtMessage.Performative_O_Performative() # type: ignore - if msg.is_set("content_o_bool"): - performative.content_o_bool_is_set = True - content_o_bool = msg.content_o_bool - performative.content_o_bool = content_o_bool - if msg.is_set("content_o_set_int"): - performative.content_o_set_int_is_set = True - content_o_set_int = msg.content_o_set_int - performative.content_o_set_int.extend(content_o_set_int) - if msg.is_set("content_o_list_bytes"): - performative.content_o_list_bytes_is_set = True - content_o_list_bytes = msg.content_o_list_bytes - performative.content_o_list_bytes.extend(content_o_list_bytes) - if msg.is_set("content_o_dict_str_int"): - performative.content_o_dict_str_int_is_set = True - content_o_dict_str_int = msg.content_o_dict_str_int - performative.content_o_dict_str_int.update(content_o_dict_str_int) - t_protocol_no_ct_msg.performative_o.CopyFrom(performative) - elif ( - performative_id - == TProtocolNoCtMessage.Performative.PERFORMATIVE_EMPTY_CONTENTS - ): - performative = t_protocol_no_ct_pb2.TProtocolNoCtMessage.Performative_Empty_Contents_Performative() # type: ignore - t_protocol_no_ct_msg.performative_empty_contents.CopyFrom(performative) - else: - raise ValueError("Performative not valid: {}".format(performative_id)) - - dialogue_message_pb.content = t_protocol_no_ct_msg.SerializeToString() - - message_pb.dialogue_message.CopyFrom(dialogue_message_pb) - message_bytes = message_pb.SerializeToString() - return message_bytes - - @staticmethod - def decode(obj: bytes) -> Message: - """ - Decode bytes into a 'TProtocolNoCt' message. - - :param obj: the bytes object. - :return: the 'TProtocolNoCt' message. - """ - message_pb = ProtobufMessage() - t_protocol_no_ct_pb = t_protocol_no_ct_pb2.TProtocolNoCtMessage() - message_pb.ParseFromString(obj) - message_id = message_pb.dialogue_message.message_id - dialogue_reference = ( - message_pb.dialogue_message.dialogue_starter_reference, - message_pb.dialogue_message.dialogue_responder_reference, - ) - target = message_pb.dialogue_message.target - - t_protocol_no_ct_pb.ParseFromString(message_pb.dialogue_message.content) - performative = t_protocol_no_ct_pb.WhichOneof("performative") - performative_id = TProtocolNoCtMessage.Performative(str(performative)) - performative_content = {} # type: Dict[str, Any] - if performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_PT: - content_bytes = t_protocol_no_ct_pb.performative_pt.content_bytes - performative_content["content_bytes"] = content_bytes - content_int = t_protocol_no_ct_pb.performative_pt.content_int - performative_content["content_int"] = content_int - content_float = t_protocol_no_ct_pb.performative_pt.content_float - performative_content["content_float"] = content_float - content_bool = t_protocol_no_ct_pb.performative_pt.content_bool - performative_content["content_bool"] = content_bool - content_str = t_protocol_no_ct_pb.performative_pt.content_str - performative_content["content_str"] = content_str - elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_PCT: - content_set_bytes = t_protocol_no_ct_pb.performative_pct.content_set_bytes - content_set_bytes_frozenset = frozenset(content_set_bytes) - performative_content["content_set_bytes"] = content_set_bytes_frozenset - content_set_int = t_protocol_no_ct_pb.performative_pct.content_set_int - content_set_int_frozenset = frozenset(content_set_int) - performative_content["content_set_int"] = content_set_int_frozenset - content_set_float = t_protocol_no_ct_pb.performative_pct.content_set_float - content_set_float_frozenset = frozenset(content_set_float) - performative_content["content_set_float"] = content_set_float_frozenset - content_set_bool = t_protocol_no_ct_pb.performative_pct.content_set_bool - content_set_bool_frozenset = frozenset(content_set_bool) - performative_content["content_set_bool"] = content_set_bool_frozenset - content_set_str = t_protocol_no_ct_pb.performative_pct.content_set_str - content_set_str_frozenset = frozenset(content_set_str) - performative_content["content_set_str"] = content_set_str_frozenset - content_list_bytes = t_protocol_no_ct_pb.performative_pct.content_list_bytes - content_list_bytes_tuple = tuple(content_list_bytes) - performative_content["content_list_bytes"] = content_list_bytes_tuple - content_list_int = t_protocol_no_ct_pb.performative_pct.content_list_int - content_list_int_tuple = tuple(content_list_int) - performative_content["content_list_int"] = content_list_int_tuple - content_list_float = t_protocol_no_ct_pb.performative_pct.content_list_float - content_list_float_tuple = tuple(content_list_float) - performative_content["content_list_float"] = content_list_float_tuple - content_list_bool = t_protocol_no_ct_pb.performative_pct.content_list_bool - content_list_bool_tuple = tuple(content_list_bool) - performative_content["content_list_bool"] = content_list_bool_tuple - content_list_str = t_protocol_no_ct_pb.performative_pct.content_list_str - content_list_str_tuple = tuple(content_list_str) - performative_content["content_list_str"] = content_list_str_tuple - elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_PMT: - content_dict_int_bytes = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_int_bytes - ) - content_dict_int_bytes_dict = dict(content_dict_int_bytes) - performative_content["content_dict_int_bytes"] = content_dict_int_bytes_dict - content_dict_int_int = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_int_int - ) - content_dict_int_int_dict = dict(content_dict_int_int) - performative_content["content_dict_int_int"] = content_dict_int_int_dict - content_dict_int_float = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_int_float - ) - content_dict_int_float_dict = dict(content_dict_int_float) - performative_content["content_dict_int_float"] = content_dict_int_float_dict - content_dict_int_bool = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_int_bool - ) - content_dict_int_bool_dict = dict(content_dict_int_bool) - performative_content["content_dict_int_bool"] = content_dict_int_bool_dict - content_dict_int_str = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_int_str - ) - content_dict_int_str_dict = dict(content_dict_int_str) - performative_content["content_dict_int_str"] = content_dict_int_str_dict - content_dict_bool_bytes = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_bool_bytes - ) - content_dict_bool_bytes_dict = dict(content_dict_bool_bytes) - performative_content[ - "content_dict_bool_bytes" - ] = content_dict_bool_bytes_dict - content_dict_bool_int = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_bool_int - ) - content_dict_bool_int_dict = dict(content_dict_bool_int) - performative_content["content_dict_bool_int"] = content_dict_bool_int_dict - content_dict_bool_float = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_bool_float - ) - content_dict_bool_float_dict = dict(content_dict_bool_float) - performative_content[ - "content_dict_bool_float" - ] = content_dict_bool_float_dict - content_dict_bool_bool = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_bool_bool - ) - content_dict_bool_bool_dict = dict(content_dict_bool_bool) - performative_content["content_dict_bool_bool"] = content_dict_bool_bool_dict - content_dict_bool_str = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_bool_str - ) - content_dict_bool_str_dict = dict(content_dict_bool_str) - performative_content["content_dict_bool_str"] = content_dict_bool_str_dict - content_dict_str_bytes = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_str_bytes - ) - content_dict_str_bytes_dict = dict(content_dict_str_bytes) - performative_content["content_dict_str_bytes"] = content_dict_str_bytes_dict - content_dict_str_int = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_str_int - ) - content_dict_str_int_dict = dict(content_dict_str_int) - performative_content["content_dict_str_int"] = content_dict_str_int_dict - content_dict_str_float = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_str_float - ) - content_dict_str_float_dict = dict(content_dict_str_float) - performative_content["content_dict_str_float"] = content_dict_str_float_dict - content_dict_str_bool = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_str_bool - ) - content_dict_str_bool_dict = dict(content_dict_str_bool) - performative_content["content_dict_str_bool"] = content_dict_str_bool_dict - content_dict_str_str = ( - t_protocol_no_ct_pb.performative_pmt.content_dict_str_str - ) - content_dict_str_str_dict = dict(content_dict_str_str) - performative_content["content_dict_str_str"] = content_dict_str_str_dict - elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_MT: - if t_protocol_no_ct_pb.performative_mt.content_union_1_type_bytes_is_set: - content_union_1 = ( - t_protocol_no_ct_pb.performative_mt.content_union_1_type_bytes - ) - performative_content["content_union_1"] = content_union_1 - if t_protocol_no_ct_pb.performative_mt.content_union_1_type_int_is_set: - content_union_1 = ( - t_protocol_no_ct_pb.performative_mt.content_union_1_type_int - ) - performative_content["content_union_1"] = content_union_1 - if t_protocol_no_ct_pb.performative_mt.content_union_1_type_float_is_set: - content_union_1 = ( - t_protocol_no_ct_pb.performative_mt.content_union_1_type_float - ) - performative_content["content_union_1"] = content_union_1 - if t_protocol_no_ct_pb.performative_mt.content_union_1_type_bool_is_set: - content_union_1 = ( - t_protocol_no_ct_pb.performative_mt.content_union_1_type_bool - ) - performative_content["content_union_1"] = content_union_1 - if t_protocol_no_ct_pb.performative_mt.content_union_1_type_str_is_set: - content_union_1 = ( - t_protocol_no_ct_pb.performative_mt.content_union_1_type_str - ) - performative_content["content_union_1"] = content_union_1 - if ( - t_protocol_no_ct_pb.performative_mt.content_union_1_type_set_of_int_is_set - ): - content_union_1 = ( - t_protocol_no_ct_pb.performative_mt.content_union_1_type_set_of_int - ) - content_union_1_frozenset = frozenset(content_union_1) - performative_content["content_union_1"] = content_union_1_frozenset - if ( - t_protocol_no_ct_pb.performative_mt.content_union_1_type_list_of_bool_is_set - ): - content_union_1 = ( - t_protocol_no_ct_pb.performative_mt.content_union_1_type_list_of_bool - ) - content_union_1_tuple = tuple(content_union_1) - performative_content["content_union_1"] = content_union_1_tuple - if ( - t_protocol_no_ct_pb.performative_mt.content_union_1_type_dict_of_str_int_is_set - ): - content_union_1 = ( - t_protocol_no_ct_pb.performative_mt.content_union_1_type_dict_of_str_int - ) - content_union_1_dict = dict(content_union_1) - performative_content["content_union_1"] = content_union_1_dict - if ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_bytes_is_set - ): - content_union_2 = ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_bytes - ) - content_union_2_frozenset = frozenset(content_union_2) - performative_content["content_union_2"] = content_union_2_frozenset - if ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_int_is_set - ): - content_union_2 = ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_int - ) - content_union_2_frozenset = frozenset(content_union_2) - performative_content["content_union_2"] = content_union_2_frozenset - if ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_str_is_set - ): - content_union_2 = ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_set_of_str - ) - content_union_2_frozenset = frozenset(content_union_2) - performative_content["content_union_2"] = content_union_2_frozenset - if ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_float_is_set - ): - content_union_2 = ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_float - ) - content_union_2_tuple = tuple(content_union_2) - performative_content["content_union_2"] = content_union_2_tuple - if ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bool_is_set - ): - content_union_2 = ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bool - ) - content_union_2_tuple = tuple(content_union_2) - performative_content["content_union_2"] = content_union_2_tuple - if ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bytes_is_set - ): - content_union_2 = ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_list_of_bytes - ) - content_union_2_tuple = tuple(content_union_2) - performative_content["content_union_2"] = content_union_2_tuple - if ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_str_int_is_set - ): - content_union_2 = ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_str_int - ) - content_union_2_dict = dict(content_union_2) - performative_content["content_union_2"] = content_union_2_dict - if ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_int_float_is_set - ): - content_union_2 = ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_int_float - ) - content_union_2_dict = dict(content_union_2) - performative_content["content_union_2"] = content_union_2_dict - if ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_bool_bytes_is_set - ): - content_union_2 = ( - t_protocol_no_ct_pb.performative_mt.content_union_2_type_dict_of_bool_bytes - ) - content_union_2_dict = dict(content_union_2) - performative_content["content_union_2"] = content_union_2_dict - elif performative_id == TProtocolNoCtMessage.Performative.PERFORMATIVE_O: - if t_protocol_no_ct_pb.performative_o.content_o_bool_is_set: - content_o_bool = t_protocol_no_ct_pb.performative_o.content_o_bool - performative_content["content_o_bool"] = content_o_bool - if t_protocol_no_ct_pb.performative_o.content_o_set_int_is_set: - content_o_set_int = t_protocol_no_ct_pb.performative_o.content_o_set_int - content_o_set_int_frozenset = frozenset(content_o_set_int) - performative_content["content_o_set_int"] = content_o_set_int_frozenset - if t_protocol_no_ct_pb.performative_o.content_o_list_bytes_is_set: - content_o_list_bytes = ( - t_protocol_no_ct_pb.performative_o.content_o_list_bytes - ) - content_o_list_bytes_tuple = tuple(content_o_list_bytes) - performative_content[ - "content_o_list_bytes" - ] = content_o_list_bytes_tuple - if t_protocol_no_ct_pb.performative_o.content_o_dict_str_int_is_set: - content_o_dict_str_int = ( - t_protocol_no_ct_pb.performative_o.content_o_dict_str_int - ) - content_o_dict_str_int_dict = dict(content_o_dict_str_int) - performative_content[ - "content_o_dict_str_int" - ] = content_o_dict_str_int_dict - elif ( - performative_id - == TProtocolNoCtMessage.Performative.PERFORMATIVE_EMPTY_CONTENTS - ): - pass - else: - raise ValueError("Performative not valid: {}.".format(performative_id)) - - return TProtocolNoCtMessage( - message_id=message_id, - dialogue_reference=dialogue_reference, - target=target, - performative=performative, - **performative_content, - ) diff --git a/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct.proto b/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct.proto deleted file mode 100644 index b3c5d3c3c9..0000000000 --- a/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct.proto +++ /dev/null @@ -1,107 +0,0 @@ -syntax = "proto3"; - -package aea.some_author.some_protocol_name.v1_0_0; - -message TProtocolNoCtMessage{ - - // Performatives and contents - message Performative_Pt_Performative{ - bytes content_bytes = 1; - int64 content_int = 2; - float content_float = 3; - bool content_bool = 4; - string content_str = 5; - } - - message Performative_Pct_Performative{ - repeated bytes content_set_bytes = 1; - repeated int64 content_set_int = 2; - repeated float content_set_float = 3; - repeated bool content_set_bool = 4; - repeated string content_set_str = 5; - repeated bytes content_list_bytes = 6; - repeated int64 content_list_int = 7; - repeated float content_list_float = 8; - repeated bool content_list_bool = 9; - repeated string content_list_str = 10; - } - - message Performative_Pmt_Performative{ - map content_dict_int_bytes = 1; - map content_dict_int_int = 2; - map content_dict_int_float = 3; - map content_dict_int_bool = 4; - map content_dict_int_str = 5; - map content_dict_bool_bytes = 6; - map content_dict_bool_int = 7; - map content_dict_bool_float = 8; - map content_dict_bool_bool = 9; - map content_dict_bool_str = 10; - map content_dict_str_bytes = 11; - map content_dict_str_int = 12; - map content_dict_str_float = 13; - map content_dict_str_bool = 14; - map content_dict_str_str = 15; - } - - message Performative_Mt_Performative{ - bytes content_union_1_type_bytes = 1; - bool content_union_1_type_bytes_is_set = 2; - int64 content_union_1_type_int = 3; - bool content_union_1_type_int_is_set = 4; - float content_union_1_type_float = 5; - bool content_union_1_type_float_is_set = 6; - bool content_union_1_type_bool = 7; - bool content_union_1_type_bool_is_set = 8; - string content_union_1_type_str = 9; - bool content_union_1_type_str_is_set = 10; - repeated int64 content_union_1_type_set_of_int = 11; - bool content_union_1_type_set_of_int_is_set = 12; - repeated bool content_union_1_type_list_of_bool = 13; - bool content_union_1_type_list_of_bool_is_set = 14; - map content_union_1_type_dict_of_str_int = 15; - bool content_union_1_type_dict_of_str_int_is_set = 16; - repeated bytes content_union_2_type_set_of_bytes = 17; - bool content_union_2_type_set_of_bytes_is_set = 18; - repeated int64 content_union_2_type_set_of_int = 19; - bool content_union_2_type_set_of_int_is_set = 20; - repeated string content_union_2_type_set_of_str = 21; - bool content_union_2_type_set_of_str_is_set = 22; - repeated float content_union_2_type_list_of_float = 23; - bool content_union_2_type_list_of_float_is_set = 24; - repeated bool content_union_2_type_list_of_bool = 25; - bool content_union_2_type_list_of_bool_is_set = 26; - repeated bytes content_union_2_type_list_of_bytes = 27; - bool content_union_2_type_list_of_bytes_is_set = 28; - map content_union_2_type_dict_of_str_int = 29; - bool content_union_2_type_dict_of_str_int_is_set = 30; - map content_union_2_type_dict_of_int_float = 31; - bool content_union_2_type_dict_of_int_float_is_set = 32; - map content_union_2_type_dict_of_bool_bytes = 33; - bool content_union_2_type_dict_of_bool_bytes_is_set = 34; - } - - message Performative_O_Performative{ - bool content_o_bool = 1; - bool content_o_bool_is_set = 2; - repeated int64 content_o_set_int = 3; - bool content_o_set_int_is_set = 4; - repeated bytes content_o_list_bytes = 5; - bool content_o_list_bytes_is_set = 6; - map content_o_dict_str_int = 7; - bool content_o_dict_str_int_is_set = 8; - } - - message Performative_Empty_Contents_Performative{ - } - - - oneof performative{ - Performative_Empty_Contents_Performative performative_empty_contents = 5; - Performative_Mt_Performative performative_mt = 6; - Performative_O_Performative performative_o = 7; - Performative_Pct_Performative performative_pct = 8; - Performative_Pmt_Performative performative_pmt = 9; - Performative_Pt_Performative performative_pt = 10; - } -} diff --git a/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py b/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py deleted file mode 100644 index ccd2ad0afc..0000000000 --- a/tests/data/reference_protocols/t_protocol_no_ct/t_protocol_no_ct_pb2.py +++ /dev/null @@ -1,706 +0,0 @@ -# -*- coding: utf-8 -*- -# Generated by the protocol buffer compiler. DO NOT EDIT! -# source: t_protocol_no_ct.proto -"""Generated protocol buffer code.""" -from google.protobuf import descriptor as _descriptor -from google.protobuf import descriptor_pool as _descriptor_pool -from google.protobuf import message as _message -from google.protobuf import reflection as _reflection -from google.protobuf import symbol_database as _symbol_database - -# @@protoc_insertion_point(imports) - -_sym_db = _symbol_database.Default() - - -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile( - b'\n\x16t_protocol_no_ct.proto\x12)aea.some_author.some_protocol_name.v1_0_0"\x8f\x39\n\x14TProtocolNoCtMessage\x12\x8f\x01\n\x1bperformative_empty_contents\x18\x05 \x01(\x0b\x32h.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Empty_Contents_PerformativeH\x00\x12w\n\x0fperformative_mt\x18\x06 \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_PerformativeH\x00\x12u\n\x0eperformative_o\x18\x07 \x01(\x0b\x32[.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_PerformativeH\x00\x12y\n\x10performative_pct\x18\x08 \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_PerformativeH\x00\x12y\n\x10performative_pmt\x18\t \x01(\x0b\x32].aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_PerformativeH\x00\x12w\n\x0fperformative_pt\x18\n \x01(\x0b\x32\\.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_PerformativeH\x00\x1a\x8c\x01\n\x1cPerformative_Pt_Performative\x12\x15\n\rcontent_bytes\x18\x01 \x01(\x0c\x12\x13\n\x0b\x63ontent_int\x18\x02 \x01(\x03\x12\x15\n\rcontent_float\x18\x03 \x01(\x02\x12\x14\n\x0c\x63ontent_bool\x18\x04 \x01(\x08\x12\x13\n\x0b\x63ontent_str\x18\x05 \x01(\t\x1a\xa8\x02\n\x1dPerformative_Pct_Performative\x12\x19\n\x11\x63ontent_set_bytes\x18\x01 \x03(\x0c\x12\x17\n\x0f\x63ontent_set_int\x18\x02 \x03(\x03\x12\x19\n\x11\x63ontent_set_float\x18\x03 \x03(\x02\x12\x18\n\x10\x63ontent_set_bool\x18\x04 \x03(\x08\x12\x17\n\x0f\x63ontent_set_str\x18\x05 \x03(\t\x12\x1a\n\x12\x63ontent_list_bytes\x18\x06 \x03(\x0c\x12\x18\n\x10\x63ontent_list_int\x18\x07 \x03(\x03\x12\x1a\n\x12\x63ontent_list_float\x18\x08 \x03(\x02\x12\x19\n\x11\x63ontent_list_bool\x18\t \x03(\x08\x12\x18\n\x10\x63ontent_list_str\x18\n \x03(\t\x1a\xfc\x18\n\x1dPerformative_Pmt_Performative\x12\x96\x01\n\x16\x63ontent_dict_int_bytes\x18\x01 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_int_int\x18\x02 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry\x12\x96\x01\n\x16\x63ontent_dict_int_float\x18\x03 \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_int_bool\x18\x04 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_int_str\x18\x05 \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_bytes\x18\x06 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_int\x18\x07 \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry\x12\x98\x01\n\x17\x63ontent_dict_bool_float\x18\x08 \x03(\x0b\x32w.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry\x12\x96\x01\n\x16\x63ontent_dict_bool_bool\x18\t \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry\x12\x94\x01\n\x15\x63ontent_dict_bool_str\x18\n \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry\x12\x96\x01\n\x16\x63ontent_dict_str_bytes\x18\x0b \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry\x12\x92\x01\n\x14\x63ontent_dict_str_int\x18\x0c \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry\x12\x96\x01\n\x16\x63ontent_dict_str_float\x18\r \x03(\x0b\x32v.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry\x12\x94\x01\n\x15\x63ontent_dict_str_bool\x18\x0e \x03(\x0b\x32u.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry\x12\x92\x01\n\x14\x63ontent_dict_str_str\x18\x0f \x03(\x0b\x32t.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry\x1a:\n\x18\x43ontentDictIntBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictIntBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictIntStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a;\n\x19\x43ontentDictBoolFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a:\n\x18\x43ontentDictBoolBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictBoolStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a:\n\x18\x43ontentDictStrFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1a\x39\n\x17\x43ontentDictStrBoolEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x08:\x02\x38\x01\x1a\x38\n\x16\x43ontentDictStrStrEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\x1a\xc1\x12\n\x1cPerformative_Mt_Performative\x12"\n\x1a\x63ontent_union_1_type_bytes\x18\x01 \x01(\x0c\x12)\n!content_union_1_type_bytes_is_set\x18\x02 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_int\x18\x03 \x01(\x03\x12\'\n\x1f\x63ontent_union_1_type_int_is_set\x18\x04 \x01(\x08\x12"\n\x1a\x63ontent_union_1_type_float\x18\x05 \x01(\x02\x12)\n!content_union_1_type_float_is_set\x18\x06 \x01(\x08\x12!\n\x19\x63ontent_union_1_type_bool\x18\x07 \x01(\x08\x12(\n content_union_1_type_bool_is_set\x18\x08 \x01(\x08\x12 \n\x18\x63ontent_union_1_type_str\x18\t \x01(\t\x12\'\n\x1f\x63ontent_union_1_type_str_is_set\x18\n \x01(\x08\x12\'\n\x1f\x63ontent_union_1_type_set_of_int\x18\x0b \x03(\x03\x12.\n&content_union_1_type_set_of_int_is_set\x18\x0c \x01(\x08\x12)\n!content_union_1_type_list_of_bool\x18\r \x03(\x08\x12\x30\n(content_union_1_type_list_of_bool_is_set\x18\x0e \x01(\x08\x12\xad\x01\n$content_union_1_type_dict_of_str_int\x18\x0f \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry\x12\x33\n+content_union_1_type_dict_of_str_int_is_set\x18\x10 \x01(\x08\x12)\n!content_union_2_type_set_of_bytes\x18\x11 \x03(\x0c\x12\x30\n(content_union_2_type_set_of_bytes_is_set\x18\x12 \x01(\x08\x12\'\n\x1f\x63ontent_union_2_type_set_of_int\x18\x13 \x03(\x03\x12.\n&content_union_2_type_set_of_int_is_set\x18\x14 \x01(\x08\x12\'\n\x1f\x63ontent_union_2_type_set_of_str\x18\x15 \x03(\t\x12.\n&content_union_2_type_set_of_str_is_set\x18\x16 \x01(\x08\x12*\n"content_union_2_type_list_of_float\x18\x17 \x03(\x02\x12\x31\n)content_union_2_type_list_of_float_is_set\x18\x18 \x01(\x08\x12)\n!content_union_2_type_list_of_bool\x18\x19 \x03(\x08\x12\x30\n(content_union_2_type_list_of_bool_is_set\x18\x1a \x01(\x08\x12*\n"content_union_2_type_list_of_bytes\x18\x1b \x03(\x0c\x12\x31\n)content_union_2_type_list_of_bytes_is_set\x18\x1c \x01(\x08\x12\xad\x01\n$content_union_2_type_dict_of_str_int\x18\x1d \x03(\x0b\x32\x7f.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry\x12\x33\n+content_union_2_type_dict_of_str_int_is_set\x18\x1e \x01(\x08\x12\xb2\x01\n&content_union_2_type_dict_of_int_float\x18\x1f \x03(\x0b\x32\x81\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry\x12\x35\n-content_union_2_type_dict_of_int_float_is_set\x18 \x01(\x08\x12\xb4\x01\n\'content_union_2_type_dict_of_bool_bytes\x18! \x03(\x0b\x32\x82\x01.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry\x12\x36\n.content_union_2_type_dict_of_bool_bytes_is_set\x18" \x01(\x08\x1a\x44\n"ContentUnion1TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x44\n"ContentUnion2TypeDictOfStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a\x46\n$ContentUnion2TypeDictOfIntFloatEntry\x12\x0b\n\x03key\x18\x01 \x01(\x03\x12\r\n\x05value\x18\x02 \x01(\x02:\x02\x38\x01\x1aG\n%ContentUnion2TypeDictOfBoolBytesEntry\x12\x0b\n\x03key\x18\x01 \x01(\x08\x12\r\n\x05value\x18\x02 \x01(\x0c:\x02\x38\x01\x1a\xcc\x03\n\x1bPerformative_O_Performative\x12\x16\n\x0e\x63ontent_o_bool\x18\x01 \x01(\x08\x12\x1d\n\x15\x63ontent_o_bool_is_set\x18\x02 \x01(\x08\x12\x19\n\x11\x63ontent_o_set_int\x18\x03 \x03(\x03\x12 \n\x18\x63ontent_o_set_int_is_set\x18\x04 \x01(\x08\x12\x1c\n\x14\x63ontent_o_list_bytes\x18\x05 \x03(\x0c\x12#\n\x1b\x63ontent_o_list_bytes_is_set\x18\x06 \x01(\x08\x12\x93\x01\n\x16\x63ontent_o_dict_str_int\x18\x07 \x03(\x0b\x32s.aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry\x12%\n\x1d\x63ontent_o_dict_str_int_is_set\x18\x08 \x01(\x08\x1a\x39\n\x17\x43ontentODictStrIntEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\x1a*\n(Performative_Empty_Contents_PerformativeB\x0e\n\x0cperformativeb\x06proto3' -) - - -_TPROTOCOLNOCTMESSAGE = DESCRIPTOR.message_types_by_name["TProtocolNoCtMessage"] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE = ( - _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Pt_Performative"] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE = ( - _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Pct_Performative"] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE = ( - _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Pmt_Performative"] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntBytesEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntIntEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntFloatEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntBoolEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictIntStrEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolBytesEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolIntEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolFloatEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolBoolEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictBoolStrEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrBytesEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrIntEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrFloatEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrBoolEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE.nested_types_by_name[ - "ContentDictStrStrEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE = ( - _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_Mt_Performative"] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion1TypeDictOfStrIntEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion2TypeDictOfStrIntEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion2TypeDictOfIntFloatEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY = _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE.nested_types_by_name[ - "ContentUnion2TypeDictOfBoolBytesEntry" -] -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE = ( - _TPROTOCOLNOCTMESSAGE.nested_types_by_name["Performative_O_Performative"] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY = ( - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE.nested_types_by_name[ - "ContentODictStrIntEntry" - ] -) -_TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE = ( - _TPROTOCOLNOCTMESSAGE.nested_types_by_name[ - "Performative_Empty_Contents_Performative" - ] -) -TProtocolNoCtMessage = _reflection.GeneratedProtocolMessageType( - "TProtocolNoCtMessage", - (_message.Message,), - { - "Performative_Pt_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_Pt_Performative", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pt_Performative) - }, - ), - "Performative_Pct_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_Pct_Performative", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pct_Performative) - }, - ), - "Performative_Pmt_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_Pmt_Performative", - (_message.Message,), - { - "ContentDictIntBytesEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictIntBytesEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry) - }, - ), - "ContentDictIntIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictIntIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry) - }, - ), - "ContentDictIntFloatEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictIntFloatEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry) - }, - ), - "ContentDictIntBoolEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictIntBoolEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry) - }, - ), - "ContentDictIntStrEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictIntStrEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry) - }, - ), - "ContentDictBoolBytesEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictBoolBytesEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry) - }, - ), - "ContentDictBoolIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictBoolIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry) - }, - ), - "ContentDictBoolFloatEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictBoolFloatEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry) - }, - ), - "ContentDictBoolBoolEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictBoolBoolEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry) - }, - ), - "ContentDictBoolStrEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictBoolStrEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry) - }, - ), - "ContentDictStrBytesEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictStrBytesEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry) - }, - ), - "ContentDictStrIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictStrIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry) - }, - ), - "ContentDictStrFloatEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictStrFloatEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry) - }, - ), - "ContentDictStrBoolEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictStrBoolEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry) - }, - ), - "ContentDictStrStrEntry": _reflection.GeneratedProtocolMessageType( - "ContentDictStrStrEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry) - }, - ), - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Pmt_Performative) - }, - ), - "Performative_Mt_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_Mt_Performative", - (_message.Message,), - { - "ContentUnion1TypeDictOfStrIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentUnion1TypeDictOfStrIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry) - }, - ), - "ContentUnion2TypeDictOfStrIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentUnion2TypeDictOfStrIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry) - }, - ), - "ContentUnion2TypeDictOfIntFloatEntry": _reflection.GeneratedProtocolMessageType( - "ContentUnion2TypeDictOfIntFloatEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry) - }, - ), - "ContentUnion2TypeDictOfBoolBytesEntry": _reflection.GeneratedProtocolMessageType( - "ContentUnion2TypeDictOfBoolBytesEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry) - }, - ), - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Mt_Performative) - }, - ), - "Performative_O_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_O_Performative", - (_message.Message,), - { - "ContentODictStrIntEntry": _reflection.GeneratedProtocolMessageType( - "ContentODictStrIntEntry", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry) - }, - ), - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_O_Performative) - }, - ), - "Performative_Empty_Contents_Performative": _reflection.GeneratedProtocolMessageType( - "Performative_Empty_Contents_Performative", - (_message.Message,), - { - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage.Performative_Empty_Contents_Performative) - }, - ), - "DESCRIPTOR": _TPROTOCOLNOCTMESSAGE, - "__module__": "t_protocol_no_ct_pb2" - # @@protoc_insertion_point(class_scope:aea.some_author.some_protocol_name.v1_0_0.TProtocolNoCtMessage) - }, -) -_sym_db.RegisterMessage(TProtocolNoCtMessage) -_sym_db.RegisterMessage(TProtocolNoCtMessage.Performative_Pt_Performative) -_sym_db.RegisterMessage(TProtocolNoCtMessage.Performative_Pct_Performative) -_sym_db.RegisterMessage(TProtocolNoCtMessage.Performative_Pmt_Performative) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBytesEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntIntEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntFloatEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntBoolEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictIntStrEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBytesEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolIntEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolFloatEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolBoolEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictBoolStrEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBytesEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrIntEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrFloatEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrBoolEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Pmt_Performative.ContentDictStrStrEntry -) -_sym_db.RegisterMessage(TProtocolNoCtMessage.Performative_Mt_Performative) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion1TypeDictOfStrIntEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfStrIntEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfIntFloatEntry -) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_Mt_Performative.ContentUnion2TypeDictOfBoolBytesEntry -) -_sym_db.RegisterMessage(TProtocolNoCtMessage.Performative_O_Performative) -_sym_db.RegisterMessage( - TProtocolNoCtMessage.Performative_O_Performative.ContentODictStrIntEntry -) -_sym_db.RegisterMessage(TProtocolNoCtMessage.Performative_Empty_Contents_Performative) - -if _descriptor._USE_C_DESCRIPTORS == False: - - DESCRIPTOR._options = None - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._options = ( - None - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_options = ( - b"8\001" - ) - _TPROTOCOLNOCTMESSAGE._serialized_start = 70 - _TPROTOCOLNOCTMESSAGE._serialized_end = 7381 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_start = 848 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PT_PERFORMATIVE._serialized_end = 988 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_start = 991 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PCT_PERFORMATIVE._serialized_end = 1287 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_start = 1290 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE._serialized_end = 4486 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_start = ( - 3598 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBYTESENTRY._serialized_end = ( - 3656 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_start = ( - 3658 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTINTENTRY._serialized_end = ( - 3714 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_start = ( - 3716 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTFLOATENTRY._serialized_end = ( - 3774 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_start = ( - 3776 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTBOOLENTRY._serialized_end = ( - 3833 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_start = ( - 3835 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTINTSTRENTRY._serialized_end = ( - 3891 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_start = ( - 3893 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBYTESENTRY._serialized_end = ( - 3952 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_start = ( - 3954 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLINTENTRY._serialized_end = ( - 4011 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_start = ( - 4013 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLFLOATENTRY._serialized_end = ( - 4072 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_start = ( - 4074 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLBOOLENTRY._serialized_end = ( - 4132 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_start = ( - 4134 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTBOOLSTRENTRY._serialized_end = ( - 4191 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_start = ( - 4193 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBYTESENTRY._serialized_end = ( - 4251 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_start = ( - 4253 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRINTENTRY._serialized_end = ( - 4309 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_start = ( - 4311 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRFLOATENTRY._serialized_end = ( - 4369 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_start = ( - 4371 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRBOOLENTRY._serialized_end = ( - 4428 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_start = ( - 4430 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_PMT_PERFORMATIVE_CONTENTDICTSTRSTRENTRY._serialized_end = ( - 4486 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_start = 4489 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE._serialized_end = 6858 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_start = ( - 6575 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION1TYPEDICTOFSTRINTENTRY._serialized_end = ( - 6643 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_start = ( - 6645 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFSTRINTENTRY._serialized_end = ( - 6713 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_start = ( - 6715 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFINTFLOATENTRY._serialized_end = ( - 6785 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_start = ( - 6787 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_MT_PERFORMATIVE_CONTENTUNION2TYPEDICTOFBOOLBYTESENTRY._serialized_end = ( - 6858 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_start = 6861 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE._serialized_end = 7321 - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_start = ( - 7264 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_O_PERFORMATIVE_CONTENTODICTSTRINTENTRY._serialized_end = ( - 7321 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_start = ( - 7323 - ) - _TPROTOCOLNOCTMESSAGE_PERFORMATIVE_EMPTY_CONTENTS_PERFORMATIVE._serialized_end = ( - 7365 - ) -# @@protoc_insertion_point(module_scope) diff --git a/tests/test_aea/__init__.py b/tests/test_aea/__init__.py index 9b03f5e132..2f4cc8fbc5 100644 --- a/tests/test_aea/__init__.py +++ b/tests/test_aea/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_act_storage.py b/tests/test_aea/test_act_storage.py index 2aa38da23a..dabb96168f 100644 --- a/tests/test_aea/test_act_storage.py +++ b/tests/test_aea/test_act_storage.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_aea.py b/tests/test_aea/test_aea.py index c18a5cf3f9..1a2864bdc3 100644 --- a/tests/test_aea/test_aea.py +++ b/tests/test_aea/test_aea.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_aea_builder.py b/tests/test_aea/test_aea_builder.py index 491d49802f..c448ee43fc 100644 --- a/tests/test_aea/test_aea_builder.py +++ b/tests/test_aea/test_aea_builder.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -111,7 +111,7 @@ def test_add_package_already_existing(): builder.add_component(ComponentType.PROTOCOL, fipa_package_path) expected_message = re.escape( - "Component 'fetchai/fipa:1.1.6' of type 'protocol' already added." + "Component 'fetchai/fipa:1.1.7' of type 'protocol' already added." ) with pytest.raises(AEAException, match=expected_message): builder.add_component(ComponentType.PROTOCOL, fipa_package_path) @@ -710,7 +710,7 @@ def _add_stub_connection_config(self): def test_from_project(self): """Test builder set from project dir.""" - self.add_item("connection", "fetchai/stub:0.21.2") + self.add_item("connection", "fetchai/stub:0.21.3") self.expected_input_file = "custom_input_file" self.expected_output_file = "custom_output_file" self._add_stub_connection_config() diff --git a/tests/test_aea/test_agent.py b/tests/test_aea/test_agent.py index a761c505a6..1a1378e6ed 100644 --- a/tests/test_aea/test_agent.py +++ b/tests/test_aea/test_agent.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_agent_loop.py b/tests/test_aea/test_agent_loop.py index d9ed6a2390..8a8d43024f 100644 --- a/tests/test_aea/test_agent_loop.py +++ b/tests/test_aea/test_agent_loop.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/__init__.py b/tests/test_aea/test_cli/__init__.py index 331af35233..2f640975ad 100644 --- a/tests/test_aea/test_cli/__init__.py +++ b/tests/test_aea/test_cli/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/constants.py b/tests/test_aea/test_cli/constants.py index 84cece161e..edf6f654ff 100644 --- a/tests/test_aea/test_cli/constants.py +++ b/tests/test_aea/test_cli/constants.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_add/__init__.py b/tests/test_aea/test_cli/test_add/__init__.py index be129dc1f4..ff9879f080 100644 --- a/tests/test_aea/test_cli/test_add/__init__.py +++ b/tests/test_aea/test_cli/test_add/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_add/test_connection.py b/tests/test_aea/test_cli/test_add/test_connection.py index de79235663..c386274f4f 100644 --- a/tests/test_aea/test_cli/test_add/test_connection.py +++ b/tests/test_aea/test_cli/test_add/test_connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_add/test_contract.py b/tests/test_aea/test_cli/test_add/test_contract.py index dee7f740a4..ec19f63df0 100644 --- a/tests/test_aea/test_cli/test_add/test_contract.py +++ b/tests/test_aea/test_cli/test_add/test_contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_add/test_generic.py b/tests/test_aea/test_cli/test_add/test_generic.py index bb1f2c7b80..3e30a79656 100644 --- a/tests/test_aea/test_cli/test_add/test_generic.py +++ b/tests/test_aea/test_cli/test_add/test_generic.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_add/test_protocol.py b/tests/test_aea/test_cli/test_add/test_protocol.py index ce02297728..58b79c22b8 100644 --- a/tests/test_aea/test_cli/test_add/test_protocol.py +++ b/tests/test_aea/test_cli/test_add/test_protocol.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_add/test_skill.py b/tests/test_aea/test_cli/test_add/test_skill.py index f99dcfd051..420f48186e 100644 --- a/tests/test_aea/test_cli/test_add/test_skill.py +++ b/tests/test_aea/test_cli/test_add/test_skill.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_add_key.py b/tests/test_aea/test_cli/test_add_key.py index 0b60980099..2e2d04019a 100644 --- a/tests/test_aea/test_cli/test_add_key.py +++ b/tests/test_aea/test_cli/test_add_key.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_build.py b/tests/test_aea/test_cli/test_build.py index 66dda63c8c..d8c998727d 100644 --- a/tests/test_aea/test_cli/test_build.py +++ b/tests/test_aea/test_cli/test_build.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_config.py b/tests/test_aea/test_cli/test_config.py index ce204385be..6cf1cf9d58 100644 --- a/tests/test_aea/test_cli/test_config.py +++ b/tests/test_aea/test_cli/test_config.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_create.py b/tests/test_aea/test_cli/test_create.py index 04d9c261fd..0d2356c697 100644 --- a/tests/test_aea/test_cli/test_create.py +++ b/tests/test_aea/test_cli/test_create.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_delete.py b/tests/test_aea/test_cli/test_delete.py index 80a366dce1..d70977ac1c 100644 --- a/tests/test_aea/test_cli/test_delete.py +++ b/tests/test_aea/test_cli/test_delete.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_eject.py b/tests/test_aea/test_cli/test_eject.py index 607bf8b680..8f927233b3 100644 --- a/tests/test_aea/test_cli/test_eject.py +++ b/tests/test_aea/test_cli/test_eject.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_fetch.py b/tests/test_aea/test_cli/test_fetch.py index caeaecc4d4..1b29e6b243 100644 --- a/tests/test_aea/test_cli/test_fetch.py +++ b/tests/test_aea/test_cli/test_fetch.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_fingerprint.py b/tests/test_aea/test_cli/test_fingerprint.py index d3db2ad4e6..58ea7d3e01 100644 --- a/tests/test_aea/test_cli/test_fingerprint.py +++ b/tests/test_aea/test_cli/test_fingerprint.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_freeze.py b/tests/test_aea/test_cli/test_freeze.py index a00ea8b2b4..e8231ca1be 100644 --- a/tests/test_aea/test_cli/test_freeze.py +++ b/tests/test_aea/test_cli/test_freeze.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_generate/__init__.py b/tests/test_aea/test_cli/test_generate/__init__.py index df0d62aee1..0991a4238d 100644 --- a/tests/test_aea/test_cli/test_generate/__init__.py +++ b/tests/test_aea/test_cli/test_generate/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_generate/test_generate.py b/tests/test_aea/test_cli/test_generate/test_generate.py index 233a5c887b..1b370c7b3f 100644 --- a/tests/test_aea/test_cli/test_generate/test_generate.py +++ b/tests/test_aea/test_cli/test_generate/test_generate.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_generate/test_protocols.py b/tests/test_aea/test_cli/test_generate/test_protocols.py index cb339c703d..a970f37a63 100644 --- a/tests/test_aea/test_cli/test_generate/test_protocols.py +++ b/tests/test_aea/test_cli/test_generate/test_protocols.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_generate_key.py b/tests/test_aea/test_cli/test_generate_key.py index 24caf265c7..982f5ee592 100644 --- a/tests/test_aea/test_cli/test_generate_key.py +++ b/tests/test_aea/test_cli/test_generate_key.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_generate_wealth.py b/tests/test_aea/test_cli/test_generate_wealth.py index 2302951bc8..b255711b3e 100644 --- a/tests/test_aea/test_cli/test_generate_wealth.py +++ b/tests/test_aea/test_cli/test_generate_wealth.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_get_address.py b/tests/test_aea/test_cli/test_get_address.py index 2a38f4df33..d52a767ad1 100644 --- a/tests/test_aea/test_cli/test_get_address.py +++ b/tests/test_aea/test_cli/test_get_address.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_get_multiaddress.py b/tests/test_aea/test_cli/test_get_multiaddress.py index 21d4589b10..8d300c11d7 100644 --- a/tests/test_aea/test_cli/test_get_multiaddress.py +++ b/tests/test_aea/test_cli/test_get_multiaddress.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -291,7 +291,7 @@ def test_run(self, password_or_none): password_options = _get_password_option_args(password_or_none) with pytest.raises( Exception, - match="Host field 'some_host' not present in connection configuration fetchai/stub:0.21.2", + match="Host field 'some_host' not present in connection configuration fetchai/stub:0.21.3", ): self.run_cli_command( "get-multiaddress", @@ -328,7 +328,7 @@ def test_run(self, password_or_none): password_options = _get_password_option_args(password_or_none) with pytest.raises( Exception, - match="Port field 'some_port' not present in connection configuration fetchai/stub:0.21.2", + match="Port field 'some_port' not present in connection configuration fetchai/stub:0.21.3", ): self.run_cli_command( "get-multiaddress", @@ -463,7 +463,7 @@ def test_run(self, password_or_none): password_options = _get_password_option_args(password_or_none) with pytest.raises( Exception, - match="URI field 'some_uri' not present in connection configuration fetchai/stub:0.21.2", + match="URI field 'some_uri' not present in connection configuration fetchai/stub:0.21.3", ): self.run_cli_command( "get-multiaddress", diff --git a/tests/test_aea/test_cli/test_get_public_key.py b/tests/test_aea/test_cli/test_get_public_key.py index 6633ca4d5c..90bbbf4f8a 100644 --- a/tests/test_aea/test_cli/test_get_public_key.py +++ b/tests/test_aea/test_cli/test_get_public_key.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_get_wealth.py b/tests/test_aea/test_cli/test_get_wealth.py index 6c94c1a2b7..ed24716ae0 100644 --- a/tests/test_aea/test_cli/test_get_wealth.py +++ b/tests/test_aea/test_cli/test_get_wealth.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_init.py b/tests/test_aea/test_cli/test_init.py index 8572cf281f..80e224de4d 100644 --- a/tests/test_aea/test_cli/test_init.py +++ b/tests/test_aea/test_cli/test_init.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_install.py b/tests/test_aea/test_cli/test_install.py index 6a08decb7f..479e6231dc 100644 --- a/tests/test_aea/test_cli/test_install.py +++ b/tests/test_aea/test_cli/test_install.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_interact.py b/tests/test_aea/test_cli/test_interact.py index b3a2abdf29..bf311907d6 100644 --- a/tests/test_aea/test_cli/test_interact.py +++ b/tests/test_aea/test_cli/test_interact.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_issue_certificates.py b/tests/test_aea/test_cli/test_issue_certificates.py index 6af634a8c4..4dd31e77ff 100644 --- a/tests/test_aea/test_cli/test_issue_certificates.py +++ b/tests/test_aea/test_cli/test_issue_certificates.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_launch.py b/tests/test_aea/test_cli/test_launch.py index bd15c2b3b4..0003221ee7 100644 --- a/tests/test_aea/test_cli/test_launch.py +++ b/tests/test_aea/test_cli/test_launch.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_launch_end_to_end.py b/tests/test_aea/test_cli/test_launch_end_to_end.py index c377ea88af..9070c227f4 100644 --- a/tests/test_aea/test_cli/test_launch_end_to_end.py +++ b/tests/test_aea/test_cli/test_launch_end_to_end.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_list.py b/tests/test_aea/test_cli/test_list.py index b6f338172f..bd48672f3f 100644 --- a/tests/test_aea/test_cli/test_list.py +++ b/tests/test_aea/test_cli/test_list.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_local_registry_update.py b/tests/test_aea/test_cli/test_local_registry_update.py index 0733c011b5..334790325a 100644 --- a/tests/test_aea/test_cli/test_local_registry_update.py +++ b/tests/test_aea/test_cli/test_local_registry_update.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_loggers.py b/tests/test_aea/test_cli/test_loggers.py index cf2c50b0fc..1d9e46c15e 100644 --- a/tests/test_aea/test_cli/test_loggers.py +++ b/tests/test_aea/test_cli/test_loggers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_login.py b/tests/test_aea/test_cli/test_login.py index 46dace1f82..fad9846ea5 100644 --- a/tests/test_aea/test_cli/test_login.py +++ b/tests/test_aea/test_cli/test_login.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_logout.py b/tests/test_aea/test_cli/test_logout.py index 35c70231d8..f6d1c798ed 100644 --- a/tests/test_aea/test_cli/test_logout.py +++ b/tests/test_aea/test_cli/test_logout.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_misc.py b/tests/test_aea/test_cli/test_misc.py index 7dd06c2581..1295a49e41 100644 --- a/tests/test_aea/test_cli/test_misc.py +++ b/tests/test_aea/test_cli/test_misc.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_plugin.py b/tests/test_aea/test_cli/test_plugin.py index 181bf23009..c9be8733e1 100644 --- a/tests/test_aea/test_cli/test_plugin.py +++ b/tests/test_aea/test_cli/test_plugin.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_publish.py b/tests/test_aea/test_cli/test_publish.py index 9db3eff364..446e8a1a16 100644 --- a/tests/test_aea/test_cli/test_publish.py +++ b/tests/test_aea/test_cli/test_publish.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_push.py b/tests/test_aea/test_cli/test_push.py index 358ee0e3ed..b022d08e45 100644 --- a/tests/test_aea/test_cli/test_push.py +++ b/tests/test_aea/test_cli/test_push.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_register.py b/tests/test_aea/test_cli/test_register.py index d941798915..a7f712c0d0 100644 --- a/tests/test_aea/test_cli/test_register.py +++ b/tests/test_aea/test_cli/test_register.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_registry/__init__.py b/tests/test_aea/test_cli/test_registry/__init__.py index f8480ade47..062a9d170e 100644 --- a/tests/test_aea/test_cli/test_registry/__init__.py +++ b/tests/test_aea/test_cli/test_registry/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_registry/test_add.py b/tests/test_aea/test_cli/test_registry/test_add.py index 53a43fb11d..140247ac94 100644 --- a/tests/test_aea/test_cli/test_registry/test_add.py +++ b/tests/test_aea/test_cli/test_registry/test_add.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_registry/test_fetch.py b/tests/test_aea/test_cli/test_registry/test_fetch.py index a9a15587f5..48162b67c1 100644 --- a/tests/test_aea/test_cli/test_registry/test_fetch.py +++ b/tests/test_aea/test_cli/test_registry/test_fetch.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_registry/test_login.py b/tests/test_aea/test_cli/test_registry/test_login.py index 7dd629422c..ef03761197 100644 --- a/tests/test_aea/test_cli/test_registry/test_login.py +++ b/tests/test_aea/test_cli/test_registry/test_login.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_registry/test_logout.py b/tests/test_aea/test_cli/test_registry/test_logout.py index 4223d670ca..c8d5257b30 100644 --- a/tests/test_aea/test_cli/test_registry/test_logout.py +++ b/tests/test_aea/test_cli/test_registry/test_logout.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_registry/test_publish.py b/tests/test_aea/test_cli/test_registry/test_publish.py index accdffb1fa..7ab58737cc 100644 --- a/tests/test_aea/test_cli/test_registry/test_publish.py +++ b/tests/test_aea/test_cli/test_registry/test_publish.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_registry/test_push.py b/tests/test_aea/test_cli/test_registry/test_push.py index 976f3af5b3..be66ec6c94 100644 --- a/tests/test_aea/test_cli/test_registry/test_push.py +++ b/tests/test_aea/test_cli/test_registry/test_push.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_registry/test_registration.py b/tests/test_aea/test_cli/test_registry/test_registration.py index 86ae7ea68f..a1301d7458 100644 --- a/tests/test_aea/test_cli/test_registry/test_registration.py +++ b/tests/test_aea/test_cli/test_registry/test_registration.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_registry/test_utils.py b/tests/test_aea/test_cli/test_registry/test_utils.py index 059cdc0fc5..e9e0dbbdd4 100644 --- a/tests/test_aea/test_cli/test_registry/test_utils.py +++ b/tests/test_aea/test_cli/test_registry/test_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_remove/__init__.py b/tests/test_aea/test_cli/test_remove/__init__.py index 5d2613ad49..1ab16152fd 100644 --- a/tests/test_aea/test_cli/test_remove/__init__.py +++ b/tests/test_aea/test_cli/test_remove/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_remove/test_base.py b/tests/test_aea/test_cli/test_remove/test_base.py index 11fec269c6..76034b9022 100644 --- a/tests/test_aea/test_cli/test_remove/test_base.py +++ b/tests/test_aea/test_cli/test_remove/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_remove/test_connection.py b/tests/test_aea/test_cli/test_remove/test_connection.py index 0505c1df95..e673c8872b 100644 --- a/tests/test_aea/test_cli/test_remove/test_connection.py +++ b/tests/test_aea/test_cli/test_remove/test_connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_remove/test_contract.py b/tests/test_aea/test_cli/test_remove/test_contract.py index ec226cf002..f71ddfa524 100644 --- a/tests/test_aea/test_cli/test_remove/test_contract.py +++ b/tests/test_aea/test_cli/test_remove/test_contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_remove/test_dependencies.py b/tests/test_aea/test_cli/test_remove/test_dependencies.py index 5260efbdc3..7926772bb4 100644 --- a/tests/test_aea/test_cli/test_remove/test_dependencies.py +++ b/tests/test_aea/test_cli/test_remove/test_dependencies.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_remove/test_protocol.py b/tests/test_aea/test_cli/test_remove/test_protocol.py index 3af567acd7..6430e19361 100644 --- a/tests/test_aea/test_cli/test_remove/test_protocol.py +++ b/tests/test_aea/test_cli/test_remove/test_protocol.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_remove/test_skill.py b/tests/test_aea/test_cli/test_remove/test_skill.py index 1a19075072..be7318d531 100644 --- a/tests/test_aea/test_cli/test_remove/test_skill.py +++ b/tests/test_aea/test_cli/test_remove/test_skill.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_remove_key.py b/tests/test_aea/test_cli/test_remove_key.py index 32ca5d0a63..dfefa78996 100644 --- a/tests/test_aea/test_cli/test_remove_key.py +++ b/tests/test_aea/test_cli/test_remove_key.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_reset_password.py b/tests/test_aea/test_cli/test_reset_password.py index 1dd5f0d84a..2183008c1b 100644 --- a/tests/test_aea/test_cli/test_reset_password.py +++ b/tests/test_aea/test_cli/test_reset_password.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_run.py b/tests/test_aea/test_cli/test_run.py index 5597ef0faf..1d54658bb6 100644 --- a/tests/test_aea/test_cli/test_run.py +++ b/tests/test_aea/test_cli/test_run.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_scaffold/__init__.py b/tests/test_aea/test_cli/test_scaffold/__init__.py index da977622af..7e046a6878 100644 --- a/tests/test_aea/test_cli/test_scaffold/__init__.py +++ b/tests/test_aea/test_cli/test_scaffold/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_scaffold/test_connection.py b/tests/test_aea/test_cli/test_scaffold/test_connection.py index 9b495837e0..77e4867111 100644 --- a/tests/test_aea/test_cli/test_scaffold/test_connection.py +++ b/tests/test_aea/test_cli/test_scaffold/test_connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_scaffold/test_decision_maker_handler.py b/tests/test_aea/test_cli/test_scaffold/test_decision_maker_handler.py index a6306baa8b..84129a0aca 100644 --- a/tests/test_aea/test_cli/test_scaffold/test_decision_maker_handler.py +++ b/tests/test_aea/test_cli/test_scaffold/test_decision_maker_handler.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_scaffold/test_error_handler.py b/tests/test_aea/test_cli/test_scaffold/test_error_handler.py index 13a82dde58..2d6415084f 100644 --- a/tests/test_aea/test_cli/test_scaffold/test_error_handler.py +++ b/tests/test_aea/test_cli/test_scaffold/test_error_handler.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_scaffold/test_generic.py b/tests/test_aea/test_cli/test_scaffold/test_generic.py index 8313530b74..4650972549 100644 --- a/tests/test_aea/test_cli/test_scaffold/test_generic.py +++ b/tests/test_aea/test_cli/test_scaffold/test_generic.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_scaffold/test_protocols.py b/tests/test_aea/test_cli/test_scaffold/test_protocols.py index 1c29ee3741..12e80bc08c 100644 --- a/tests/test_aea/test_cli/test_scaffold/test_protocols.py +++ b/tests/test_aea/test_cli/test_scaffold/test_protocols.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_scaffold/test_skills.py b/tests/test_aea/test_cli/test_scaffold/test_skills.py index 9c14f357d4..e77dc3d03c 100644 --- a/tests/test_aea/test_cli/test_scaffold/test_skills.py +++ b/tests/test_aea/test_cli/test_scaffold/test_skills.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_search.py b/tests/test_aea/test_cli/test_search.py index 035faada3b..06c59238fe 100644 --- a/tests/test_aea/test_cli/test_search.py +++ b/tests/test_aea/test_cli/test_search.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_transfer.py b/tests/test_aea/test_cli/test_transfer.py index 29990af6ce..ba3c5e4407 100644 --- a/tests/test_aea/test_cli/test_transfer.py +++ b/tests/test_aea/test_cli/test_transfer.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_upgrade.py b/tests/test_aea/test_cli/test_upgrade.py index 4a33844838..07edcbfffa 100644 --- a/tests/test_aea/test_cli/test_upgrade.py +++ b/tests/test_aea/test_cli/test_upgrade.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -48,7 +48,7 @@ PackageType, PublicId, ) -from aea.configurations.constants import DEFAULT_VERSION +from aea.configurations.constants import DEFAULT_README_FILE, DEFAULT_VERSION from aea.configurations.loader import ConfigLoader, load_component_configuration from aea.helpers.base import cd, compute_specifier_from_version from aea.test_tools.test_cases import AEATestCaseEmpty, BaseAEATestCase @@ -354,7 +354,7 @@ def setup(cls): cls.run_cli_command( "--skip-consistency-check", "fetch", - "fetchai/generic_buyer:0.30.4", + "fetchai/generic_buyer:0.30.5", "--alias", cls.agent_name, ) @@ -436,7 +436,7 @@ def setup(cls): cls.change_directory(Path("..")) cls.agent_name = "generic_buyer" cls.run_cli_command( - "fetch", "fetchai/generic_buyer:0.30.4", "--alias", cls.agent_name + "fetch", "fetchai/generic_buyer:0.30.5", "--alias", cls.agent_name ) cls.agents.add(cls.agent_name) cls.set_agent_context(cls.agent_name) @@ -935,7 +935,7 @@ def test_default_connection_updated_correctly(self): "agent.default_connection", cwd=self._get_cwd(), ) - assert result.stdout == "fetchai/stub:0.21.2\n" + assert result.stdout == "fetchai/stub:0.21.3\n" def test_custom_configuration_updated_correctly(self): """Test default routing has been updated correctly.""" @@ -1038,7 +1038,7 @@ class BaseTestUpgradeWithEject(AEATestCaseEmpty): IS_EMPTY = True GENERIC_SELLER = ComponentId( - ComponentType.SKILL, PublicId.from_str("fetchai/generic_seller:0.28.5") + ComponentType.SKILL, PublicId.from_str("fetchai/generic_seller:0.28.6") ) unmocked = get_latest_version_available_in_registry @@ -1189,7 +1189,10 @@ def test_upgrade(self, mock_confirm, confirm): ) # compare with latest fetched agent. - ignore = [DEFAULT_AEA_CONFIG_FILE] + filecmp.DEFAULT_IGNORES + ignore = [ + DEFAULT_AEA_CONFIG_FILE, + DEFAULT_README_FILE, + ] + filecmp.DEFAULT_IGNORES dircmp = filecmp.dircmp( self.current_agent_context, self.EXPECTED, ignore=ignore ) @@ -1215,7 +1218,10 @@ def test_run(self, mock_click_echo, mock_get_latest_version): ) # compare with latest fetched agent. - ignore = [DEFAULT_AEA_CONFIG_FILE] + filecmp.DEFAULT_IGNORES + ignore = [ + DEFAULT_AEA_CONFIG_FILE, + DEFAULT_README_FILE, + ] + filecmp.DEFAULT_IGNORES dircmp = filecmp.dircmp( self.current_agent_context, self.EXPECTED, ignore=ignore ) @@ -1232,7 +1238,7 @@ class TestUpgradeAEACompatibility(BaseTestUpgradeProject): The test works as follows: """ - OLD_AGENT_PUBLIC_ID = PublicId.from_str("fetchai/weather_station:0.32.4") + OLD_AGENT_PUBLIC_ID = PublicId.from_str("fetchai/weather_station:0.32.5") EXPECTED_NEW_AGENT_PUBLIC_ID = PublicId.from_str("fetchai/weather_station:latest") def test_upgrade(self): diff --git a/tests/test_aea/test_cli/test_utils/__init__.py b/tests/test_aea/test_cli/test_utils/__init__.py index 7702f322b4..8d868c5a0e 100644 --- a/tests/test_aea/test_cli/test_utils/__init__.py +++ b/tests/test_aea/test_cli/test_utils/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_utils/test_config.py b/tests/test_aea/test_cli/test_utils/test_config.py index 680ab69df0..2cbf818fc7 100644 --- a/tests/test_aea/test_cli/test_utils/test_config.py +++ b/tests/test_aea/test_cli/test_utils/test_config.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_cli/test_utils/test_utils.py b/tests/test_aea/test_cli/test_utils/test_utils.py index 466affc5a9..35871a7dae 100644 --- a/tests/test_aea/test_cli/test_utils/test_utils.py +++ b/tests/test_aea/test_cli/test_utils/test_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -307,7 +307,7 @@ class FindItemLocallyTestCase(TestCase): ) def test_find_item_locally_bad_config(self, *mocks): """Test find_item_locally for bad config result.""" - public_id = PublicIdMock.from_str("fetchai/echo:0.20.5") + public_id = PublicIdMock.from_str("fetchai/echo:0.20.6") with self.assertRaises(ClickException) as cm: find_item_locally(ContextMock(), "skill", public_id) @@ -321,7 +321,7 @@ def test_find_item_locally_bad_config(self, *mocks): ) def test_find_item_locally_cant_find(self, from_conftype_mock, *mocks): """Test find_item_locally for can't find result.""" - public_id = PublicIdMock.from_str("fetchai/echo:0.20.5") + public_id = PublicIdMock.from_str("fetchai/echo:0.20.6") with self.assertRaises(ClickException) as cm: find_item_locally(ContextMock(), "skill", public_id) @@ -340,7 +340,7 @@ class FindItemInDistributionTestCase(TestCase): ) def testfind_item_in_distribution_bad_config(self, *mocks): """Test find_item_in_distribution for bad config result.""" - public_id = PublicIdMock.from_str("fetchai/echo:0.20.5") + public_id = PublicIdMock.from_str("fetchai/echo:0.20.6") with self.assertRaises(ClickException) as cm: find_item_in_distribution(ContextMock(), "skill", public_id) @@ -349,7 +349,7 @@ def testfind_item_in_distribution_bad_config(self, *mocks): @mock.patch("aea.cli.utils.package_utils.Path.exists", return_value=False) def testfind_item_in_distribution_not_found(self, *mocks): """Test find_item_in_distribution for not found result.""" - public_id = PublicIdMock.from_str("fetchai/echo:0.20.5") + public_id = PublicIdMock.from_str("fetchai/echo:0.20.6") with self.assertRaises(ClickException) as cm: find_item_in_distribution(ContextMock(), "skill", public_id) @@ -363,7 +363,7 @@ def testfind_item_in_distribution_not_found(self, *mocks): ) def testfind_item_in_distribution_cant_find(self, from_conftype_mock, *mocks): """Test find_item_locally for can't find result.""" - public_id = PublicIdMock.from_str("fetchai/echo:0.20.5") + public_id = PublicIdMock.from_str("fetchai/echo:0.20.6") with self.assertRaises(ClickException) as cm: find_item_in_distribution(ContextMock(), "skill", public_id) diff --git a/tests/test_aea/test_cli/tools_for_testing.py b/tests/test_aea/test_cli/tools_for_testing.py index 1b0aa5d6e3..5dd86d5a7a 100644 --- a/tests/test_aea/test_cli/tools_for_testing.py +++ b/tests/test_aea/test_cli/tools_for_testing.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_components/__init__.py b/tests/test_aea/test_components/__init__.py index b37cf865dc..6bbb84fb92 100644 --- a/tests/test_aea/test_components/__init__.py +++ b/tests/test_aea/test_components/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_components/test_base.py b/tests/test_aea/test_components/test_base.py index a6dd834feb..c375929c5b 100644 --- a/tests/test_aea/test_components/test_base.py +++ b/tests/test_aea/test_components/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_components/test_loader.py b/tests/test_aea/test_components/test_loader.py index bfff33aa54..2f69699698 100644 --- a/tests/test_aea/test_components/test_loader.py +++ b/tests/test_aea/test_components/test_loader.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -229,7 +229,7 @@ def test_load_component_failed_cause_package_not_found(self): ) handlers_file.write_text(file_data) with cd("./vendor/fetchai"): - self.run_cli_command("fingerprint", "skill", "fetchai/echo:0.20.5") + self.run_cli_command("fingerprint", "skill", "fetchai/echo:0.20.6") proc = PexpectWrapper.aea_cli(["run"], cwd=self._get_cwd()) proc.expect_all( diff --git a/tests/test_aea/test_components/test_utils.py b/tests/test_aea/test_components/test_utils.py index 42f1cc5095..4cd364b904 100644 --- a/tests/test_aea/test_components/test_utils.py +++ b/tests/test_aea/test_components/test_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_configurations/__init__.py b/tests/test_aea/test_configurations/__init__.py index d9a1219fff..629543969e 100644 --- a/tests/test_aea/test_configurations/__init__.py +++ b/tests/test_aea/test_configurations/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_configurations/test_aea_config.py b/tests/test_aea/test_configurations/test_aea_config.py index 6cfb1da661..67d2c20544 100644 --- a/tests/test_aea/test_configurations/test_aea_config.py +++ b/tests/test_aea/test_configurations/test_aea_config.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_configurations/test_base.py b/tests/test_aea/test_configurations/test_base.py index b20d2fd3f6..6b3864b331 100644 --- a/tests/test_aea/test_configurations/test_base.py +++ b/tests/test_aea/test_configurations/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_configurations/test_loader.py b/tests/test_aea/test_configurations/test_loader.py index 77cd8c4e28..518aae3fd5 100644 --- a/tests/test_aea/test_configurations/test_loader.py +++ b/tests/test_aea/test_configurations/test_loader.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_configurations/test_manager.py b/tests/test_aea/test_configurations/test_manager.py index fabdf2c449..1b16c2ab1f 100644 --- a/tests/test_aea/test_configurations/test_manager.py +++ b/tests/test_aea/test_configurations/test_manager.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -51,14 +51,14 @@ fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/local:0.21.5 +- fetchai/local:0.21.6 contracts: [] protocols: -- fetchai/default:1.1.6 +- fetchai/default:1.1.7 skills: - dummy_author/dummy:0.1.0 -- fetchai/error:0.18.5 -default_connection: fetchai/local:0.21.5 +- fetchai/error:0.18.6 +default_connection: fetchai/local:0.21.6 default_ledger: cosmos logging_config: disable_existing_loggers: ${DISABLE_LOGS:bool} diff --git a/tests/test_aea/test_configurations/test_pypi.py b/tests/test_aea/test_configurations/test_pypi.py index a982c4d3dc..ad4da17277 100644 --- a/tests/test_aea/test_configurations/test_pypi.py +++ b/tests/test_aea/test_configurations/test_pypi.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_configurations/test_schema.py b/tests/test_aea/test_configurations/test_schema.py index afcd0a3398..008659c9b8 100644 --- a/tests/test_aea/test_configurations/test_schema.py +++ b/tests/test_aea/test_configurations/test_schema.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_configurations/test_utils.py b/tests/test_aea/test_configurations/test_utils.py index 7787d8908c..ef2e47e2cf 100644 --- a/tests/test_aea/test_configurations/test_utils.py +++ b/tests/test_aea/test_configurations/test_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_configurations/test_validation.py b/tests/test_aea/test_configurations/test_validation.py index 80f8b13911..6bbc6207cc 100644 --- a/tests/test_aea/test_configurations/test_validation.py +++ b/tests/test_aea/test_configurations/test_validation.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_connections/__init__.py b/tests/test_aea/test_connections/__init__.py index dc6b5884a5..ba87c12eef 100644 --- a/tests/test_aea/test_connections/__init__.py +++ b/tests/test_aea/test_connections/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_connections/test_base.py b/tests/test_aea/test_connections/test_base.py index 46863f1067..e725fb8ede 100644 --- a/tests/test_aea/test_connections/test_base.py +++ b/tests/test_aea/test_connections/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_connections/test_scaffold.py b/tests/test_aea/test_connections/test_scaffold.py index ed6d754157..87a06ec3fb 100644 --- a/tests/test_aea/test_connections/test_scaffold.py +++ b/tests/test_aea/test_connections/test_scaffold.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_connections/test_sync_connection.py b/tests/test_aea/test_connections/test_sync_connection.py index 6377fb1b8e..ea6f865120 100644 --- a/tests/test_aea/test_connections/test_sync_connection.py +++ b/tests/test_aea/test_connections/test_sync_connection.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_context/__init__.py b/tests/test_aea/test_context/__init__.py index 91f2f86e52..6c667626ab 100644 --- a/tests/test_aea/test_context/__init__.py +++ b/tests/test_aea/test_context/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_context/test_base.py b/tests/test_aea/test_context/test_base.py index de2c6a573c..b1a2b5676d 100644 --- a/tests/test_aea/test_context/test_base.py +++ b/tests/test_aea/test_context/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_contracts/__init__.py b/tests/test_aea/test_contracts/__init__.py index 7a70afd70a..2dc55b0a0f 100644 --- a/tests/test_aea/test_contracts/__init__.py +++ b/tests/test_aea/test_contracts/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_contracts/test_base.py b/tests/test_aea/test_contracts/test_base.py index bcf707d0e7..be9ec93818 100644 --- a/tests/test_aea/test_contracts/test_base.py +++ b/tests/test_aea/test_contracts/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_crypto/__init__.py b/tests/test_aea/test_crypto/__init__.py index 5a0c080820..27d8f6f251 100644 --- a/tests/test_aea/test_crypto/__init__.py +++ b/tests/test_aea/test_crypto/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_crypto/test_helpers.py b/tests/test_aea/test_crypto/test_helpers.py index cdff6c5ac9..35290a9ce0 100644 --- a/tests/test_aea/test_crypto/test_helpers.py +++ b/tests/test_aea/test_crypto/test_helpers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_crypto/test_ledger_apis.py b/tests/test_aea/test_crypto/test_ledger_apis.py index bebd7598c0..42d36ccdb8 100644 --- a/tests/test_aea/test_crypto/test_ledger_apis.py +++ b/tests/test_aea/test_crypto/test_ledger_apis.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_crypto/test_password_end2end.py b/tests/test_aea/test_crypto/test_password_end2end.py index c87f2dbc7f..1912e0a39a 100644 --- a/tests/test_aea/test_crypto/test_password_end2end.py +++ b/tests/test_aea/test_crypto/test_password_end2end.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_crypto/test_registries.py b/tests/test_aea/test_crypto/test_registries.py index bab033aecf..6fa27a59db 100644 --- a/tests/test_aea/test_crypto/test_registries.py +++ b/tests/test_aea/test_crypto/test_registries.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_crypto/test_registry/__init__.py b/tests/test_aea/test_crypto/test_registry/__init__.py index ae9a5bd485..e14d889fc0 100644 --- a/tests/test_aea/test_crypto/test_registry/__init__.py +++ b/tests/test_aea/test_crypto/test_registry/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_crypto/test_registry/test_crypto_registry.py b/tests/test_aea/test_crypto/test_registry/test_crypto_registry.py index b5ae2efef1..9d2989ec27 100644 --- a/tests/test_aea/test_crypto/test_registry/test_crypto_registry.py +++ b/tests/test_aea/test_crypto/test_registry/test_crypto_registry.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_crypto/test_registry/test_ledger_api_registry.py b/tests/test_aea/test_crypto/test_registry/test_ledger_api_registry.py index 417b9387b6..56d57ad243 100644 --- a/tests/test_aea/test_crypto/test_registry/test_ledger_api_registry.py +++ b/tests/test_aea/test_crypto/test_registry/test_ledger_api_registry.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_crypto/test_registry/test_misc.py b/tests/test_aea/test_crypto/test_registry/test_misc.py index 62be388945..7b53810f7e 100644 --- a/tests/test_aea/test_crypto/test_registry/test_misc.py +++ b/tests/test_aea/test_crypto/test_registry/test_misc.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_crypto/test_wallet.py b/tests/test_aea/test_crypto/test_wallet.py index d35d2ec612..ec809ed939 100644 --- a/tests/test_aea/test_crypto/test_wallet.py +++ b/tests/test_aea/test_crypto/test_wallet.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_decision_maker/__init__.py b/tests/test_aea/test_decision_maker/__init__.py index bb13e2822c..730ec2446b 100644 --- a/tests/test_aea/test_decision_maker/__init__.py +++ b/tests/test_aea/test_decision_maker/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_decision_maker/test_default.py b/tests/test_aea/test_decision_maker/test_default.py index 079881c789..bcaa5c8b1d 100644 --- a/tests/test_aea/test_decision_maker/test_default.py +++ b/tests/test_aea/test_decision_maker/test_default.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_decision_maker/test_gop.py b/tests/test_aea/test_decision_maker/test_gop.py index f0d48b2b0e..92dd4d5683 100644 --- a/tests/test_aea/test_decision_maker/test_gop.py +++ b/tests/test_aea/test_decision_maker/test_gop.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_decision_maker/test_ownership_state.py b/tests/test_aea/test_decision_maker/test_ownership_state.py index 66e6caf257..10665cf18b 100644 --- a/tests/test_aea/test_decision_maker/test_ownership_state.py +++ b/tests/test_aea/test_decision_maker/test_ownership_state.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_decision_maker/test_preferences.py b/tests/test_aea/test_decision_maker/test_preferences.py index d9a334ac03..a8cb4731e2 100644 --- a/tests/test_aea/test_decision_maker/test_preferences.py +++ b/tests/test_aea/test_decision_maker/test_preferences.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_decision_maker/test_scaffold.py b/tests/test_aea/test_decision_maker/test_scaffold.py index aebc9d51c0..ea86607bca 100644 --- a/tests/test_aea/test_decision_maker/test_scaffold.py +++ b/tests/test_aea/test_decision_maker/test_scaffold.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_error_handler/__init__.py b/tests/test_aea/test_error_handler/__init__.py index 0ec1e6fb58..c4bed59b37 100644 --- a/tests/test_aea/test_error_handler/__init__.py +++ b/tests/test_aea/test_error_handler/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_error_handler/test_base.py b/tests/test_aea/test_error_handler/test_base.py index 643fcdd4ab..c872b5abcc 100644 --- a/tests/test_aea/test_error_handler/test_base.py +++ b/tests/test_aea/test_error_handler/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_error_handler/test_scaffold.py b/tests/test_aea/test_error_handler/test_scaffold.py index 045fc96355..2cbdf71d0e 100644 --- a/tests/test_aea/test_error_handler/test_scaffold.py +++ b/tests/test_aea/test_error_handler/test_scaffold.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_exceptions.py b/tests/test_aea/test_exceptions.py index 08de7825e5..d5632eb515 100644 --- a/tests/test_aea/test_exceptions.py +++ b/tests/test_aea/test_exceptions.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/__init__.py b/tests/test_aea/test_helpers/__init__.py index b466c4ff1f..0061d6d102 100644 --- a/tests/test_aea/test_helpers/__init__.py +++ b/tests/test_aea/test_helpers/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_acn/__init__.py b/tests/test_aea/test_helpers/test_acn/__init__.py index 38a48d2018..2dc0127ee3 100644 --- a/tests/test_aea/test_helpers/test_acn/__init__.py +++ b/tests/test_aea/test_helpers/test_acn/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_acn/test_agent_record.py b/tests/test_aea/test_helpers/test_acn/test_agent_record.py index 1ff1bf31c4..afb065a4d2 100644 --- a/tests/test_aea/test_helpers/test_acn/test_agent_record.py +++ b/tests/test_aea/test_helpers/test_acn/test_agent_record.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_acn/test_uri.py b/tests/test_aea/test_helpers/test_acn/test_uri.py index 82191b2a76..06760a6d61 100644 --- a/tests/test_aea/test_helpers/test_acn/test_uri.py +++ b/tests/test_aea/test_helpers/test_acn/test_uri.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_async_friendly_queue.py b/tests/test_aea/test_helpers/test_async_friendly_queue.py index cc136520e2..e4311bf54a 100644 --- a/tests/test_aea/test_helpers/test_async_friendly_queue.py +++ b/tests/test_aea/test_helpers/test_async_friendly_queue.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_async_utils.py b/tests/test_aea/test_helpers/test_async_utils.py index bc8323e410..ea3d2b6b75 100644 --- a/tests/test_aea/test_helpers/test_async_utils.py +++ b/tests/test_aea/test_helpers/test_async_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_base.py b/tests/test_aea/test_helpers/test_base.py index 703404ea4e..1b140b1635 100644 --- a/tests/test_aea/test_helpers/test_base.py +++ b/tests/test_aea/test_helpers/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_env_vars.py b/tests/test_aea/test_helpers/test_env_vars.py index 639fb93462..e3f29f7bc3 100644 --- a/tests/test_aea/test_helpers/test_env_vars.py +++ b/tests/test_aea/test_helpers/test_env_vars.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_exec_timeout.py b/tests/test_aea/test_helpers/test_exec_timeout.py index 530cedef66..119e506575 100644 --- a/tests/test_aea/test_helpers/test_exec_timeout.py +++ b/tests/test_aea/test_helpers/test_exec_timeout.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_file_io.py b/tests/test_aea/test_helpers/test_file_io.py index 2c90153527..a2d4cd2cde 100644 --- a/tests/test_aea/test_helpers/test_file_io.py +++ b/tests/test_aea/test_helpers/test_file_io.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_install_dependency.py b/tests/test_aea/test_helpers/test_install_dependency.py index 1b7780d51d..3ed6929f49 100644 --- a/tests/test_aea/test_helpers/test_install_dependency.py +++ b/tests/test_aea/test_helpers/test_install_dependency.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_io.py b/tests/test_aea/test_helpers/test_io.py index b9537a396b..68cadbee5a 100644 --- a/tests/test_aea/test_helpers/test_io.py +++ b/tests/test_aea/test_helpers/test_io.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_ipfs/__init__.py b/tests/test_aea/test_helpers/test_ipfs/__init__.py index a755956ccf..4c89be9346 100644 --- a/tests/test_aea/test_helpers/test_ipfs/__init__.py +++ b/tests/test_aea/test_helpers/test_ipfs/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_ipfs/test_base.py b/tests/test_aea/test_helpers/test_ipfs/test_base.py index f3011e946c..aeeac2ff94 100644 --- a/tests/test_aea/test_helpers/test_ipfs/test_base.py +++ b/tests/test_aea/test_helpers/test_ipfs/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -33,7 +33,7 @@ def test_get_hash(): """Test get hash IPFSHashOnly.""" ipfs_hash = IPFSHashOnly().get(file_path=os.path.join(CUR_PATH, FILE_PATH)) - assert ipfs_hash == "QmbfrfW8V4u1gtQZ4ZjsJubrwkahYjAGVY1RSBVbvM9UXw" + assert ipfs_hash == "QmVyhvd64oCVNqs4Vg2zn8WE6UsK1tk1jTW4GEopcUVyuH" def test_is_text_negative(): diff --git a/tests/test_aea/test_helpers/test_logging.py b/tests/test_aea/test_helpers/test_logging.py index f1483938ff..fcd344d365 100644 --- a/tests/test_aea/test_helpers/test_logging.py +++ b/tests/test_aea/test_helpers/test_logging.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_multiaddr.py b/tests/test_aea/test_helpers/test_multiaddr.py index 26821fb6ef..92e99fd09c 100644 --- a/tests/test_aea/test_helpers/test_multiaddr.py +++ b/tests/test_aea/test_helpers/test_multiaddr.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_multiple_executor.py b/tests/test_aea/test_helpers/test_multiple_executor.py index c5de6d5d57..82888a5edf 100644 --- a/tests/test_aea/test_helpers/test_multiple_executor.py +++ b/tests/test_aea/test_helpers/test_multiple_executor.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_pipe/__init__.py b/tests/test_aea/test_helpers/test_pipe/__init__.py index adaef21638..687713d060 100644 --- a/tests/test_aea/test_helpers/test_pipe/__init__.py +++ b/tests/test_aea/test_helpers/test_pipe/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_pipe/test_pipe.py b/tests/test_aea/test_helpers/test_pipe/test_pipe.py index 1ef2b1cbed..7693da87e7 100644 --- a/tests/test_aea/test_helpers/test_pipe/test_pipe.py +++ b/tests/test_aea/test_helpers/test_pipe/test_pipe.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_preference_representations/__init__.py b/tests/test_aea/test_helpers/test_preference_representations/__init__.py index 8d655b4a03..3d6871f6da 100644 --- a/tests/test_aea/test_helpers/test_preference_representations/__init__.py +++ b/tests/test_aea/test_helpers/test_preference_representations/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_preference_representations/test_base.py b/tests/test_aea/test_helpers/test_preference_representations/test_base.py index d6fc28a755..c504f2e148 100644 --- a/tests/test_aea/test_helpers/test_preference_representations/test_base.py +++ b/tests/test_aea/test_helpers/test_preference_representations/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_profiling.py b/tests/test_aea/test_helpers/test_profiling.py index 5c5e12a739..641e94dce1 100644 --- a/tests/test_aea/test_helpers/test_profiling.py +++ b/tests/test_aea/test_helpers/test_profiling.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_search/__init__.py b/tests/test_aea/test_helpers/test_search/__init__.py index e1da56f922..622d0973a1 100644 --- a/tests/test_aea/test_helpers/test_search/__init__.py +++ b/tests/test_aea/test_helpers/test_search/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_search/base.py b/tests/test_aea/test_helpers/test_search/base.py index 9981776989..2c2b4199c4 100644 --- a/tests/test_aea/test_helpers/test_search/base.py +++ b/tests/test_aea/test_helpers/test_search/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_search/test_generic.py b/tests/test_aea/test_helpers/test_search/test_generic.py index f706d914f3..47d837c4fe 100644 --- a/tests/test_aea/test_helpers/test_search/test_generic.py +++ b/tests/test_aea/test_helpers/test_search/test_generic.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_search/test_models.py b/tests/test_aea/test_helpers/test_search/test_models.py index 4e32a4feea..6a1fc43c0b 100644 --- a/tests/test_aea/test_helpers/test_search/test_models.py +++ b/tests/test_aea/test_helpers/test_search/test_models.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_serializers.py b/tests/test_aea/test_helpers/test_serializers.py index aad5362ae8..ac49457a63 100644 --- a/tests/test_aea/test_helpers/test_serializers.py +++ b/tests/test_aea/test_helpers/test_serializers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_storage.py b/tests/test_aea/test_helpers/test_storage.py index b40bb2243a..fa9ebd8c2d 100644 --- a/tests/test_aea/test_helpers/test_storage.py +++ b/tests/test_aea/test_helpers/test_storage.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_sym_link.py b/tests/test_aea/test_helpers/test_sym_link.py index 3741673bdf..370edf3082 100644 --- a/tests/test_aea/test_helpers/test_sym_link.py +++ b/tests/test_aea/test_helpers/test_sym_link.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_transaction/__init__.py b/tests/test_aea/test_helpers/test_transaction/__init__.py index d71725ff79..70238f308b 100644 --- a/tests/test_aea/test_helpers/test_transaction/__init__.py +++ b/tests/test_aea/test_helpers/test_transaction/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_transaction/test_base.py b/tests/test_aea/test_helpers/test_transaction/test_base.py index bcf2a380c8..9583fdb2f4 100644 --- a/tests/test_aea/test_helpers/test_transaction/test_base.py +++ b/tests/test_aea/test_helpers/test_transaction/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_helpers/test_yaml_utils.py b/tests/test_aea/test_helpers/test_yaml_utils.py index 645bef78c4..09aac92318 100644 --- a/tests/test_aea/test_helpers/test_yaml_utils.py +++ b/tests/test_aea/test_helpers/test_yaml_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_identity/__init__.py b/tests/test_aea/test_identity/__init__.py index b3710568c5..437e73682c 100644 --- a/tests/test_aea/test_identity/__init__.py +++ b/tests/test_aea/test_identity/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_identity/test_base.py b/tests/test_aea/test_identity/test_base.py index 3b29e2247e..1802282e92 100644 --- a/tests/test_aea/test_identity/test_base.py +++ b/tests/test_aea/test_identity/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_launcher.py b/tests/test_aea/test_launcher.py index 48a0e4145f..e81f9a40c9 100644 --- a/tests/test_aea/test_launcher.py +++ b/tests/test_aea/test_launcher.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_mail/__init__.py b/tests/test_aea/test_mail/__init__.py index b81056c79d..af687d7baa 100644 --- a/tests/test_aea/test_mail/__init__.py +++ b/tests/test_aea/test_mail/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_mail/test_base.py b/tests/test_aea/test_mail/test_base.py index 175c9dd00f..dbd2f8798d 100644 --- a/tests/test_aea/test_mail/test_base.py +++ b/tests/test_aea/test_mail/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_multiplexer.py b/tests/test_aea/test_multiplexer.py index d74acda4de..644cf298aa 100644 --- a/tests/test_aea/test_multiplexer.py +++ b/tests/test_aea/test_multiplexer.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_package_loading.py b/tests/test_aea/test_package_loading.py index 5f577effb3..52afb41056 100644 --- a/tests/test_aea/test_package_loading.py +++ b/tests/test_aea/test_package_loading.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_protocols/__init__.py b/tests/test_aea/test_protocols/__init__.py index 38cbbc16f8..1b9096566c 100644 --- a/tests/test_aea/test_protocols/__init__.py +++ b/tests/test_aea/test_protocols/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_protocols/test_base.py b/tests/test_aea/test_protocols/test_base.py index 9910995fa9..30df9d4cff 100644 --- a/tests/test_aea/test_protocols/test_base.py +++ b/tests/test_aea/test_protocols/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_protocols/test_dialogue/__init__.py b/tests/test_aea/test_protocols/test_dialogue/__init__.py index e738bed1f4..9b4c2c2570 100644 --- a/tests/test_aea/test_protocols/test_dialogue/__init__.py +++ b/tests/test_aea/test_protocols/test_dialogue/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_protocols/test_dialogue/test_base.py b/tests/test_aea/test_protocols/test_dialogue/test_base.py index bb47572f0d..32dfff1fec 100644 --- a/tests/test_aea/test_protocols/test_dialogue/test_base.py +++ b/tests/test_aea/test_protocols/test_dialogue/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_protocols/test_dialogue/test_msg_resolve.py b/tests/test_aea/test_protocols/test_dialogue/test_msg_resolve.py index 068f47cc8c..ea08d287e9 100644 --- a/tests/test_aea/test_protocols/test_dialogue/test_msg_resolve.py +++ b/tests/test_aea/test_protocols/test_dialogue/test_msg_resolve.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_protocols/test_generator/__init__.py b/tests/test_aea/test_protocols/test_generator/__init__.py index 46cae09e95..8afd6f2b17 100644 --- a/tests/test_aea/test_protocols/test_generator/__init__.py +++ b/tests/test_aea/test_protocols/test_generator/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_protocols/test_generator/common.py b/tests/test_aea/test_protocols/test_generator/common.py index 0f4ea764da..e1deb607a6 100644 --- a/tests/test_aea/test_protocols/test_generator/common.py +++ b/tests/test_aea/test_protocols/test_generator/common.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,11 +23,18 @@ T_PROTOCOL_NAME = "t_protocol" +T_PROTOCOL_NO_CT_NAME = "t_protocol_no_ct" PATH_TO_T_PROTOCOL_SPECIFICATION = os.path.join( ROOT_DIR, "tests", "data", "sample_specification.yaml" ) +PATH_TO_T_PROTOCOL_NO_CT_SPECIFICATION = os.path.join( + ROOT_DIR, "tests", "data", "sample_specification_no_custom_types.yaml" +) PATH_TO_T_PROTOCOL = os.path.join( - ROOT_DIR, "tests", "data", "reference_protocols", T_PROTOCOL_NAME + ROOT_DIR, "tests", "data", "generator", T_PROTOCOL_NAME +) +PATH_TO_T_PROTOCOL_NO_CT = os.path.join( + ROOT_DIR, "tests", "data", "generator", T_PROTOCOL_NO_CT_NAME ) diff --git a/tests/test_aea/test_protocols/test_generator/test_common.py b/tests/test_aea/test_protocols/test_generator/test_common.py index 05476cc39f..164386e073 100644 --- a/tests/test_aea/test_protocols/test_generator/test_common.py +++ b/tests/test_aea/test_protocols/test_generator/test_common.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_protocols/test_generator/test_end_to_end.py b/tests/test_aea/test_protocols/test_generator/test_end_to_end.py index 61cdeb2c62..dad4b903f4 100644 --- a/tests/test_aea/test_protocols/test_generator/test_end_to_end.py +++ b/tests/test_aea/test_protocols/test_generator/test_end_to_end.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_protocols/test_generator/test_extract_specification.py b/tests/test_aea/test_protocols/test_generator/test_extract_specification.py index 4c5256d745..8704d7e1c6 100644 --- a/tests/test_aea/test_protocols/test_generator/test_extract_specification.py +++ b/tests/test_aea/test_protocols/test_generator/test_extract_specification.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_protocols/test_generator/test_generator.py b/tests/test_aea/test_protocols/test_generator/test_generator.py index facd0ecbb2..517d78cf12 100644 --- a/tests/test_aea/test_protocols/test_generator/test_generator.py +++ b/tests/test_aea/test_protocols/test_generator/test_generator.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,12 +39,15 @@ ) from aea.protocols.generator.common import _to_camel_case -from tests.conftest import ROOT_DIR, match_files +from tests.conftest import match_files from tests.data.generator.t_protocol.message import TProtocolMessage # type: ignore from tests.test_aea.test_protocols.test_generator.common import ( PATH_TO_T_PROTOCOL, + PATH_TO_T_PROTOCOL_NO_CT, + PATH_TO_T_PROTOCOL_NO_CT_SPECIFICATION, PATH_TO_T_PROTOCOL_SPECIFICATION, T_PROTOCOL_NAME, + T_PROTOCOL_NO_CT_NAME, ) @@ -180,20 +183,13 @@ def test_compare_latest_generator_output_with_test_protocol(self): custom_types.py files makes their IPFS hashes different. """ - protocol_name = "t_protocol_no_ct" - path_to_protocol_specification_with_no_custom_types = os.path.join( - ROOT_DIR, "tests", "data", "sample_specification_no_custom_types.yaml" - ) path_to_generated_protocol = self.t dotted_path_to_package_for_imports = "tests.data.generator." - path_to_protocol = os.path.join( - ROOT_DIR, "tests", "data", "reference_protocols", protocol_name - ) # Generate the protocol try: protocol_generator = ProtocolGenerator( - path_to_protocol_specification=path_to_protocol_specification_with_no_custom_types, + path_to_protocol_specification=PATH_TO_T_PROTOCOL_NO_CT_SPECIFICATION, output_path=path_to_generated_protocol, dotted_path_to_protocol_package=dotted_path_to_package_for_imports, ) @@ -205,9 +201,9 @@ def test_compare_latest_generator_output_with_test_protocol(self): ) # compare __init__.py - init_file_generated = Path(self.t, protocol_name, "__init__.py") + init_file_generated = Path(self.t, T_PROTOCOL_NO_CT_NAME, "__init__.py") init_file_original = Path( - path_to_protocol, + PATH_TO_T_PROTOCOL_NO_CT, "__init__.py", ) is_matched, diff = match_files(init_file_generated, init_file_original) @@ -216,18 +212,20 @@ def test_compare_latest_generator_output_with_test_protocol(self): ), f"Difference Found between __init__.py files:\n{diff}" # compare message.py - message_file_generated = Path(self.t, protocol_name, "message.py") + message_file_generated = Path(self.t, T_PROTOCOL_NO_CT_NAME, "message.py") message_file_original = Path( - path_to_protocol, + PATH_TO_T_PROTOCOL_NO_CT, "message.py", ) is_matched, diff = match_files(message_file_generated, message_file_original) assert is_matched, f"Difference Found between message.py files:\n{diff}" # compare serialization.py - serialization_file_generated = Path(self.t, protocol_name, "serialization.py") + serialization_file_generated = Path( + self.t, T_PROTOCOL_NO_CT_NAME, "serialization.py" + ) serialization_file_original = Path( - path_to_protocol, + PATH_TO_T_PROTOCOL_NO_CT, "serialization.py", ) is_matched, diff = match_files( @@ -236,9 +234,9 @@ def test_compare_latest_generator_output_with_test_protocol(self): assert is_matched, f"Difference Found between serialization.py files:\n{diff}" # compare dialogues.py - dialogue_file_generated = Path(self.t, protocol_name, "dialogues.py") + dialogue_file_generated = Path(self.t, T_PROTOCOL_NO_CT_NAME, "dialogues.py") dialogue_file_original = Path( - path_to_protocol, + PATH_TO_T_PROTOCOL_NO_CT, "dialogues.py", ) is_matched, diff = match_files(dialogue_file_generated, dialogue_file_original) @@ -246,11 +244,11 @@ def test_compare_latest_generator_output_with_test_protocol(self): # compare .proto proto_file_generated = Path( - self.t, protocol_name, "{}.proto".format(protocol_name) + self.t, T_PROTOCOL_NO_CT_NAME, "{}.proto".format(T_PROTOCOL_NO_CT_NAME) ) proto_file_original = Path( - path_to_protocol, - "{}.proto".format(protocol_name), + PATH_TO_T_PROTOCOL_NO_CT, + "{}.proto".format(T_PROTOCOL_NO_CT_NAME), ) is_matched, diff = match_files(proto_file_generated, proto_file_original) assert is_matched, f"Difference Found between .proto files:\n{diff}" diff --git a/tests/test_aea/test_protocols/test_generator/test_validate.py b/tests/test_aea/test_protocols/test_generator/test_validate.py index 72b313a682..8d3a5c8145 100644 --- a/tests/test_aea/test_protocols/test_generator/test_validate.py +++ b/tests/test_aea/test_protocols/test_generator/test_validate.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_protocols/test_scaffold.py b/tests/test_aea/test_protocols/test_scaffold.py index 217441e1c3..a983091271 100644 --- a/tests/test_aea/test_protocols/test_scaffold.py +++ b/tests/test_aea/test_protocols/test_scaffold.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_registries/__init__.py b/tests/test_aea/test_registries/__init__.py index a85a12ad99..6737d1b121 100644 --- a/tests/test_aea/test_registries/__init__.py +++ b/tests/test_aea/test_registries/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_registries/test_base.py b/tests/test_aea/test_registries/test_base.py index 87ce554a92..7f94f0fd1b 100644 --- a/tests/test_aea/test_registries/test_base.py +++ b/tests/test_aea/test_registries/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_registries/test_filter.py b/tests/test_aea/test_registries/test_filter.py index d4be226b18..d1d530048b 100644 --- a/tests/test_aea/test_registries/test_filter.py +++ b/tests/test_aea/test_registries/test_filter.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_runner.py b/tests/test_aea/test_runner.py index 94009b1eef..2c90c491da 100644 --- a/tests/test_aea/test_runner.py +++ b/tests/test_aea/test_runner.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_runtime.py b/tests/test_aea/test_runtime.py index d5e96a500f..5dc555a74e 100644 --- a/tests/test_aea/test_runtime.py +++ b/tests/test_aea/test_runtime.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_skills/__init__.py b/tests/test_aea/test_skills/__init__.py index 2f0a429743..120d981264 100644 --- a/tests/test_aea/test_skills/__init__.py +++ b/tests/test_aea/test_skills/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_skills/test_base.py b/tests/test_aea/test_skills/test_base.py index 228b42fdc3..cc5a4b5c82 100644 --- a/tests/test_aea/test_skills/test_base.py +++ b/tests/test_aea/test_skills/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_skills/test_behaviours.py b/tests/test_aea/test_skills/test_behaviours.py index 7052655008..53f50f7b29 100644 --- a/tests/test_aea/test_skills/test_behaviours.py +++ b/tests/test_aea/test_skills/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_skills/test_error.py b/tests/test_aea/test_skills/test_error.py index bd2426d8ae..5af5aeb464 100644 --- a/tests/test_aea/test_skills/test_error.py +++ b/tests/test_aea/test_skills/test_error.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_skills/test_scaffold.py b/tests/test_aea/test_skills/test_scaffold.py index 9ad2085280..e25d6b361e 100644 --- a/tests/test_aea/test_skills/test_scaffold.py +++ b/tests/test_aea/test_skills/test_scaffold.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_skills/test_task_subprocess.py b/tests/test_aea/test_skills/test_task_subprocess.py index 89080aefdb..9b6fb97bb3 100644 --- a/tests/test_aea/test_skills/test_task_subprocess.py +++ b/tests/test_aea/test_skills/test_task_subprocess.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -29,7 +29,7 @@ class TestTaskTestSkill(AEATestCaseEmpty): def setup_class(cls) -> None: """Init the test case.""" super(TestTaskTestSkill, cls).setup_class() - cls.add_item("skill", "fetchai/task_test_skill:0.1.1", local=True) + cls.add_item("skill", "fetchai/task_test_skill:0.1.2", local=True) cls.generate_private_key() cls.add_private_key() cls.set_config("agent.task_manager_mode", "multiprocess", "str") diff --git a/tests/test_aea/test_skills/test_tasks.py b/tests/test_aea/test_skills/test_tasks.py index 62d85bd7cd..bb35ad3aa6 100644 --- a/tests/test_aea/test_skills/test_tasks.py +++ b/tests/test_aea/test_skills/test_tasks.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_task.py b/tests/test_aea/test_task.py index 71dcff009b..5e78ef0dfc 100644 --- a/tests/test_aea/test_task.py +++ b/tests/test_aea/test_task.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_test_tools/__init__.py b/tests/test_aea/test_test_tools/__init__.py index e9f4b78b11..f01b1ec39c 100644 --- a/tests/test_aea/test_test_tools/__init__.py +++ b/tests/test_aea/test_test_tools/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_test_tools/test_click_testing.py b/tests/test_aea/test_test_tools/test_click_testing.py index a6ddeba3f3..f774dcb4c3 100644 --- a/tests/test_aea/test_test_tools/test_click_testing.py +++ b/tests/test_aea/test_test_tools/test_click_testing.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_test_tools/test_test_cases.py b/tests/test_aea/test_test_tools/test_test_cases.py index 0f8287cfd6..c110341fe1 100644 --- a/tests/test_aea/test_test_tools/test_test_cases.py +++ b/tests/test_aea/test_test_tools/test_test_cases.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_test_tools/test_test_contract.py b/tests/test_aea/test_test_tools/test_test_contract.py index b1cd22811f..a98f6618c3 100644 --- a/tests/test_aea/test_test_tools/test_test_contract.py +++ b/tests/test_aea/test_test_tools/test_test_contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea/test_test_tools/test_test_skill.py b/tests/test_aea/test_test_tools/test_test_skill.py index 478fc44424..372712a477 100644 --- a/tests/test_aea/test_test_tools/test_test_skill.py +++ b/tests/test_aea/test_test_tools/test_test_skill.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_connections/test_http_client/__init__.py b/tests/test_aea_core_packages/test_connections/test_http_client/__init__.py index cce2bbe4d8..59754691e2 100644 --- a/tests/test_aea_core_packages/test_connections/test_http_client/__init__.py +++ b/tests/test_aea_core_packages/test_connections/test_http_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_connections/test_http_client/test_http_client.py b/tests/test_aea_core_packages/test_connections/test_http_client/test_http_client.py index 40a0e23d66..f199c479e4 100644 --- a/tests/test_aea_core_packages/test_connections/test_http_client/test_http_client.py +++ b/tests/test_aea_core_packages/test_connections/test_http_client/test_http_client.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_connections/test_http_server/__init__.py b/tests/test_aea_core_packages/test_connections/test_http_server/__init__.py index e4accc81d6..b5e02fa355 100644 --- a/tests/test_aea_core_packages/test_connections/test_http_server/__init__.py +++ b/tests/test_aea_core_packages/test_connections/test_http_server/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_connections/test_http_server/test_http_server.py b/tests/test_aea_core_packages/test_connections/test_http_server/test_http_server.py index a93c80f242..da418a0b14 100644 --- a/tests/test_aea_core_packages/test_connections/test_http_server/test_http_server.py +++ b/tests/test_aea_core_packages/test_connections/test_http_server/test_http_server.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_connections/test_http_server/test_http_server_and_client.py b/tests/test_aea_core_packages/test_connections/test_http_server/test_http_server_and_client.py index 52e05d0115..2a5973a91a 100644 --- a/tests/test_aea_core_packages/test_connections/test_http_server/test_http_server_and_client.py +++ b/tests/test_aea_core_packages/test_connections/test_http_server/test_http_server_and_client.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_connections/test_ledger/__init__.py b/tests/test_aea_core_packages/test_connections/test_ledger/__init__.py index 58a0386eae..bb4c9385f5 100644 --- a/tests/test_aea_core_packages/test_connections/test_ledger/__init__.py +++ b/tests/test_aea_core_packages/test_connections/test_ledger/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_connections/test_ledger/test_contract_api.py b/tests/test_aea_core_packages/test_connections/test_ledger/test_contract_api.py index e9509eec7a..eb2f4b7c3c 100644 --- a/tests/test_aea_core_packages/test_connections/test_ledger/test_contract_api.py +++ b/tests/test_aea_core_packages/test_connections/test_ledger/test_contract_api.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_connections/test_ledger/test_ledger_api.py b/tests/test_aea_core_packages/test_connections/test_ledger/test_ledger_api.py index 7ff8775abf..32344c763a 100644 --- a/tests/test_aea_core_packages/test_connections/test_ledger/test_ledger_api.py +++ b/tests/test_aea_core_packages/test_connections/test_ledger/test_ledger_api.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_contracts/__init__.py b/tests/test_aea_core_packages/test_contracts/__init__.py index b4e227a56f..063b37c825 100644 --- a/tests/test_aea_core_packages/test_contracts/__init__.py +++ b/tests/test_aea_core_packages/test_contracts/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_contracts/test_erc1155/__init__.py b/tests/test_aea_core_packages/test_contracts/test_erc1155/__init__.py index b293f7b7eb..de3a47c52c 100644 --- a/tests/test_aea_core_packages/test_contracts/test_erc1155/__init__.py +++ b/tests/test_aea_core_packages/test_contracts/test_erc1155/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_contracts/test_erc1155/test_contract.py b/tests/test_aea_core_packages/test_contracts/test_erc1155/test_contract.py index 7b9d91a167..45f2b1ec61 100644 --- a/tests/test_aea_core_packages/test_contracts/test_erc1155/test_contract.py +++ b/tests/test_aea_core_packages/test_contracts/test_erc1155/test_contract.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_core_packages/test_skills_integration/test_echo.py b/tests/test_aea_core_packages/test_skills_integration/test_echo.py index 367d6f54c9..0c2425f663 100644 --- a/tests/test_aea_core_packages/test_skills_integration/test_echo.py +++ b/tests/test_aea_core_packages/test_skills_integration/test_echo.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -70,8 +70,8 @@ def test_echo(self): """Run the echo skill sequence.""" self.generate_private_key() self.add_private_key() - self.add_item("connection", "fetchai/stub:0.21.2") - self.add_item("skill", "fetchai/echo:0.20.5") + self.add_item("connection", "fetchai/stub:0.21.3") + self.add_item("skill", "fetchai/echo:0.20.6") process = self.run_agent() is_running = self.is_running(process) diff --git a/tests/test_aea_core_packages/test_skills_integration/test_generic.py b/tests/test_aea_core_packages/test_skills_integration/test_generic.py index 2c4f0aeba8..dd4c0098c9 100644 --- a/tests/test_aea_core_packages/test_skills_integration/test_generic.py +++ b/tests/test_aea_core_packages/test_skills_integration/test_generic.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -53,8 +53,8 @@ def test_generic(self, pytestconfig): self.create_agents(seller_aea_name, buyer_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -65,11 +65,11 @@ def test_generic(self, pytestconfig): # prepare seller agent self.set_agent_context(seller_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/generic_seller:0.28.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/generic_seller:0.28.6") setting_path = ( "vendor.fetchai.skills.generic_seller.models.strategy.args.is_ledger_tx" ) @@ -107,11 +107,11 @@ def test_generic(self, pytestconfig): # prepare buyer agent self.set_agent_context(buyer_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/generic_buyer:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/generic_buyer:0.27.6") setting_path = ( "vendor.fetchai.skills.generic_buyer.models.strategy.args.is_ledger_tx" ) @@ -242,8 +242,8 @@ def test_generic(self, pytestconfig): self.create_agents(seller_aea_name, buyer_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -254,17 +254,17 @@ def test_generic(self, pytestconfig): # prepare seller agent self.set_agent_context(seller_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/generic_seller:0.28.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/generic_seller:0.28.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/generic_seller:0.29.4", seller_aea_name + "fetchai/generic_seller:0.29.5", seller_aea_name ) assert ( diff == [] @@ -299,18 +299,18 @@ def test_generic(self, pytestconfig): # prepare buyer agent self.set_agent_context(buyer_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/generic_buyer:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/generic_buyer:0.27.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/generic_buyer:0.30.4", buyer_aea_name + "fetchai/generic_buyer:0.30.5", buyer_aea_name ) assert ( diff == [] diff --git a/tests/test_aea_core_packages/test_skills_integration/test_hello_world.py b/tests/test_aea_core_packages/test_skills_integration/test_hello_world.py index 28676251e3..818b66859b 100644 --- a/tests/test_aea_core_packages/test_skills_integration/test_hello_world.py +++ b/tests/test_aea_core_packages/test_skills_integration/test_hello_world.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -30,7 +30,7 @@ def test_hello_world(self): """Run the hello_world skill sequence.""" self.generate_private_key() self.add_private_key() - self.add_item("skill", "fetchai/hello_world:0.1.4") + self.add_item("skill", "fetchai/hello_world:0.1.5") process = self.run_agent() is_running = self.is_running(process) diff --git a/tests/test_aea_core_packages/test_skills_integration/test_http_echo.py b/tests/test_aea_core_packages/test_skills_integration/test_http_echo.py index 8fad3887fa..47f8adf4c8 100644 --- a/tests/test_aea_core_packages/test_skills_integration/test_http_echo.py +++ b/tests/test_aea_core_packages/test_skills_integration/test_http_echo.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,12 +39,12 @@ def test_echo(self): """Run the echo skill sequence.""" self.generate_private_key() self.add_private_key() - self.add_item("connection", "fetchai/http_server:0.23.5") - self.add_item("skill", "fetchai/http_echo:0.21.5") - self.set_config("agent.default_connection", "fetchai/http_server:0.23.5") + self.add_item("connection", "fetchai/http_server:0.23.6") + self.add_item("skill", "fetchai/http_echo:0.21.6") + self.set_config("agent.default_connection", "fetchai/http_server:0.23.6") self.set_config( "vendor.fetchai.connections.http_server.config.target_skill_id", - "fetchai/http_echo:0.21.5", + "fetchai/http_echo:0.21.6", ) self.set_config( "vendor.fetchai.connections.http_server.config.api_spec_path", API_SPEC_PATH diff --git a/tests/test_aea_extra/__init__.py b/tests/test_aea_extra/__init__.py index 692fbbe20d..d408e987e1 100644 --- a/tests/test_aea_extra/__init__.py +++ b/tests/test_aea_extra/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_extra/test_manager/__init__.py b/tests/test_aea_extra/test_manager/__init__.py index 214ad341e0..3d9aed25d3 100644 --- a/tests/test_aea_extra/test_manager/__init__.py +++ b/tests/test_aea_extra/test_manager/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_aea_extra/test_manager/test_manager.py b/tests/test_aea_extra/test_manager/test_manager.py index 4425b26c13..c7e473b164 100644 --- a/tests/test_aea_extra/test_manager/test_manager.py +++ b/tests/test_aea_extra/test_manager/test_manager.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -942,7 +942,7 @@ def test_handle_error_on_load_state(): assert isinstance(load_failed[0][1][0], dict) assert isinstance(load_failed[0][2], Exception) assert re.match( - "Failed to load project: fetchai/my_first_aea:latest Error: The CLI version is .*, but package fetchai/echo:0.20.5 requires version <0.0.2,>=0.0.1", + "Failed to load project: fetchai/my_first_aea:latest Error: The CLI version is .*, but package fetchai/echo:0.20.6 requires version <0.0.2,>=0.0.1", str(load_failed[0][2]), ) assert not manager.list_projects() diff --git a/tests/test_aea_extra/test_manager/test_utils.py b/tests/test_aea_extra/test_manager/test_utils.py index 48ad5daab4..2a6fbe3d55 100644 --- a/tests/test_aea_extra/test_manager/test_utils.py +++ b/tests/test_aea_extra/test_manager/test_utils.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/__init__.py b/tests/test_docs/__init__.py index dcadb9e920..f5ceb3dd03 100644 --- a/tests/test_docs/__init__.py +++ b/tests/test_docs/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/helper.py b/tests/test_docs/helper.py index fdc28cd98a..28c6c63884 100644 --- a/tests/test_docs/helper.py +++ b/tests/test_docs/helper.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,10 +18,11 @@ # ------------------------------------------------------------------------------ """This module contains helper function to extract code from the .md files.""" +import re import traceback from functools import partial from pathlib import Path -from typing import Dict, List, Optional +from typing import Dict, List, Optional, cast import mistune import pytest @@ -51,13 +52,91 @@ def type_filter(type_: Optional[str], b: Dict) -> bool: return b["info"].strip() == type_ if b["info"] is not None else False +def extract_dicts(dictionary: Dict, collection_dict: List[Dict]) -> List[Dict]: + """Extract code blocks from .md files.""" + if all(not isinstance(v, list) for v in dictionary.values()): + collection_dict.append(dictionary) + else: + for dict_el in dictionary.values(): + if isinstance(dict_el, list): + for list_el in dict_el: + if isinstance(list_el, dict): + extract_dicts(list_el, collection_dict) + return collection_dict + + +def flatten_blocks(blocks: List[Dict]) -> List[Dict]: + """Convert a list of dicts with nested dicts, into a list containing all dicts.""" + new_blocks: List[Dict] = [] + if isinstance(blocks, list): + for el in blocks: + if isinstance(el, dict): + extract_dicts(el, new_blocks) + return new_blocks + + +def correct_spacing(string: str) -> str: + """Convert a list of dicts with nested dicts, into a list containing all dicts.""" + new_string = "" + string_no_back_quote = string[:-3] + last_new_line = string.rfind("\n") + last_none_space = len(string_no_back_quote.strip(" ")) - 1 + + if last_new_line != -1 and last_new_line == last_none_space: + number_of_trailing_spaces = (len(string_no_back_quote) - 1) - last_none_space + for line in string.splitlines(): + number_of_leading_spaces = len(line) - len(line.lstrip(" ")) + if number_of_leading_spaces >= number_of_trailing_spaces: + new_line = line[number_of_trailing_spaces:] + new_string += new_line + else: + new_string += line + new_string += "\n" + return new_string + return string + + +def extract_inner_code_blocks(block: Dict, code_blocks: List[Dict]) -> None: + """Replace code_block with any sub code_blocks it may have""" + text = cast(str, block["text"]) + indexes = [m.start() for m in re.finditer("```", text)] + if indexes: + if len(indexes) % 2 != 0: + raise SyntaxError(f"un-matching ``` found in the block: {text}") + while indexes: + starting_index = indexes.pop(0) + ending_index = indexes.pop(0) + 3 + sub_string = text[starting_index:ending_index] + new_substring = correct_spacing(sub_string) + new_dict = { + "type": block["type"], + "text": new_substring, + "info": block["info"], + } + code_blocks.insert(code_blocks.index(block), new_dict) + code_blocks.remove(block) + + def extract_code_blocks(filepath, filter_=None): """Extract code blocks from .md files.""" content = Path(filepath).read_text(encoding="utf-8") markdown_parser = mistune.create_markdown(renderer=mistune.AstRenderer()) blocks = markdown_parser(content) + flat_blocks = flatten_blocks(blocks) actual_type_filter = partial(type_filter, filter_) - code_blocks = list(filter(block_code_filter, blocks)) + code_blocks = list(filter(block_code_filter, flat_blocks)) + + for code_block in code_blocks: + extract_inner_code_blocks(code_block, code_blocks) + + for block in code_blocks: + if block["text"].startswith("``` "): + type_ = block["text"][4 : block["text"].find("\n")] + block["text"] = block["text"].strip()[block["text"].find("\n") + 1 :] + if block["text"].endswith("```"): + block["text"] = block["text"].strip()[:-3] + block["info"] = f"{type_}" + bash_code_blocks = filter(actual_type_filter, code_blocks) return list(b["text"] for b in bash_code_blocks) @@ -116,6 +195,7 @@ class BaseTestMarkdownDocs: DOC_PATH: Path blocks: List[Dict] + flat_blocks: List[Dict] python_blocks: List[Dict] @classmethod @@ -125,8 +205,9 @@ def setup_class(cls): cls.doc_path = cls.DOC_PATH cls.doc_content = cls.doc_path.read_text() cls.blocks = markdown_parser(cls.doc_content) - cls.code_blocks = list(filter(block_code_filter, cls.blocks)) - cls.python_blocks = list(filter(cls._python_selector, cls.blocks)) + cls.flat_blocks = flatten_blocks(cls.blocks) + cls.code_blocks = list(filter(block_code_filter, cls.flat_blocks)) + cls.python_blocks = list(filter(cls._python_selector, cls.flat_blocks)) @classmethod def _python_selector(cls, block: Dict) -> bool: diff --git a/tests/test_docs/test_agent_vs_aea/__init__.py b/tests/test_docs/test_agent_vs_aea/__init__.py index ec6b6d99ea..d81e62abe9 100644 --- a/tests/test_docs/test_agent_vs_aea/__init__.py +++ b/tests/test_docs/test_agent_vs_aea/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_agent_vs_aea/agent_code_block.py b/tests/test_docs/test_agent_vs_aea/agent_code_block.py index 45ebb3b3d9..178d8d3343 100644 --- a/tests/test_docs/test_agent_vs_aea/agent_code_block.py +++ b/tests/test_docs/test_agent_vs_aea/agent_code_block.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_agent_vs_aea/test_agent_vs_aea.py b/tests/test_docs/test_agent_vs_aea/test_agent_vs_aea.py index 68bb1f3304..71508bedd5 100644 --- a/tests/test_docs/test_agent_vs_aea/test_agent_vs_aea.py +++ b/tests/test_docs/test_agent_vs_aea/test_agent_vs_aea.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_bash_yaml/__init__.py b/tests/test_docs/test_bash_yaml/__init__.py index 27335ea2bb..9ca5694fff 100644 --- a/tests/test_docs/test_bash_yaml/__init__.py +++ b/tests/test_docs/test_bash_yaml/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_bash_yaml/md_files/__init__.py b/tests/test_docs/test_bash_yaml/md_files/__init__.py index 0b85a6a14d..bac24a0510 100644 --- a/tests/test_docs/test_bash_yaml/md_files/__init__.py +++ b/tests/test_docs/test_bash_yaml/md_files/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-aggregation-demo.md b/tests/test_docs/test_bash_yaml/md_files/bash-aggregation-demo.md index 601e45a60d..60e661815e 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-aggregation-demo.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-aggregation-demo.md @@ -1,58 +1,68 @@ ``` bash agent_name="agg$i" -aea fetch fetchai/simple_aggregator:0.5.4 --alias $agent_name +aea fetch fetchai/simple_aggregator:0.5.5 --alias $agent_name cd $agent_name aea install aea build ``` + ``` bash agent_name="agg$i" aea create agent_name cd agent_name -aea add connection fetchai/http_client:0.24.5 -aea add connection fetchai/http_server:0.23.5 -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/prometheus:0.9.5 -aea add skill fetchai/advanced_data_request:0.7.5 -aea add skill fetchai/simple_aggregation:0.3.5 - -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea add connection fetchai/http_client:0.24.6 +aea add connection fetchai/http_server:0.23.6 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/prometheus:0.9.6 +aea add skill fetchai/advanced_data_request:0.7.6 +aea add skill fetchai/simple_aggregation:0.3.6 + +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea install aea build ``` + ``` bash aea config set --type int vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.decimals 0 ``` + ``` bash aea config set --type bool vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.use_http_server false ``` + ``` bash aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ '[{"identifier": "acn", "ledger_id": "fetchai", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "message_format": "{public_key}", "save_path": ".certs/conn_cert.txt"}]' ``` + ``` bash aea config set vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.url $COIN_URL aea config set vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.outputs '[{"name": "price", "json_path": '"\"$JSON_PATH\""'}]' ``` + ``` bash aea config set vendor.fetchai.skills.simple_aggregation.models.strategy.args.quantity_name price aea config set vendor.fetchai.skills.simple_aggregation.models.strategy.args.aggregation_function mean ``` + ``` bash SERVICE_ID=my_btc_aggregation_service aea config set vendor.fetchai.skills.simple_aggregation.models.strategy.args.service_id $SERVICE_ID aea config set vendor.fetchai.skills.simple_aggregation.models.strategy.args.search_query.search_value $SERVICE_ID ``` + ``` bash aea generate-key fetchai aea add-key fetchai aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash MULTIADDR=$(cd ../agg0 && aea get-multiaddress fetchai --connection) aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ @@ -66,23 +76,29 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ aea config set vendor.fetchai.connections.prometheus.config.port $((20000+i)) aea config set vendor.fetchai.connections.http_server.config.port $((8000+i)) ``` + ``` bash -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/simple_oracle:0.16.4 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/simple_oracle:0.16.5 ``` + ``` bash aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.ledger_id fetchai aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.update_function update_oracle_value ``` -``` + +``` bash aea generate-wealth fetchai ``` + ``` bash aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.oracle_value_name price_mean ``` + ``` bash aea run ``` + ``` bash info: [agg_i] found agents... ... @@ -98,4 +114,3 @@ info: [agg_i] Observations:... ... info: [agg_i] Aggregation (mean):... ``` - diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-aries-cloud-agent-demo.md b/tests/test_docs/test_bash_yaml/md_files/bash-aries-cloud-agent-demo.md index dbbabd4f10..824183c920 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-aries-cloud-agent-demo.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-aries-cloud-agent-demo.md @@ -1,44 +1,55 @@ ``` bash pip install aries-cloudagent ``` + ``` bash ./manage build ./manage start --logs -``` +``` + ``` bash aca-py start --help ``` + ``` bash aca-py start --admin 127.0.0.1 8021 --admin-insecure-mode --inbound-transport http 0.0.0.0 8020 --outbound-transport http --webhook-url http://127.0.0.1:8022/webhooks ``` + ``` bash aca-py start --admin 127.0.0.1 8031 --admin-insecure-mode --inbound-transport http 0.0.0.0 8030 --outbound-transp http --webhook-url http://127.0.0.1:8032/webhooks ``` + ``` bash -aea fetch fetchai/aries_alice:0.32.4 +aea fetch fetchai/aries_alice:0.32.5 cd aries_alice ``` + ``` bash aea create aries_alice cd aries_alice -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/http_client:0.24.5 -aea add connection fetchai/webhook:0.20.5 -aea add skill fetchai/aries_alice:0.26.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/http_client:0.24.6 +aea add connection fetchai/webhook:0.20.6 +aea add skill fetchai/aries_alice:0.26.6 ``` + ``` bash aea config set vendor.fetchai.skills.aries_alice.models.strategy.args.admin_host 127.0.0.1 ``` + ``` bash aea config set --type int vendor.fetchai.skills.aries_alice.models.strategy.args.admin_port 8031 ``` + ``` bash aea config set --type int vendor.fetchai.connections.webhook.config.webhook_port 8032 ``` + ``` bash aea config set vendor.fetchai.connections.webhook.config.webhook_url_path /webhooks/topic/{topic}/ ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -49,38 +60,47 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:7000" }' ``` + ``` bash aea install aea build ``` + ``` bash aea run ``` + ``` bash -aea fetch fetchai/aries_faber:0.32.4 +aea fetch fetchai/aries_faber:0.32.5 cd aries_faber ``` + ``` bash aea create aries_faber cd aries_faber -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/http_client:0.24.5 -aea add connection fetchai/webhook:0.20.5 -aea add skill fetchai/aries_faber:0.24.4 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/http_client:0.24.6 +aea add connection fetchai/webhook:0.20.6 +aea add skill fetchai/aries_faber:0.24.5 ``` + ``` bash aea config set vendor.fetchai.skills.aries_faber.models.strategy.args.admin_host 127.0.0.1 ``` + ``` bash aea config set --type int vendor.fetchai.skills.aries_faber.models.strategy.args.admin_port 8021 ``` + ``` bash aea config set --type int vendor.fetchai.connections.webhook.config.webhook_port 8022 ``` + ``` bash aea config set vendor.fetchai.connections.webhook.config.webhook_url_path /webhooks/topic/{topic}/ ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -91,14 +111,17 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:7001" }' ``` + ``` bash aea install aea build ``` + ``` bash aea run ``` + ``` bash aea delete aries_faber aea delete aries_alice -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-car-park-skills.md b/tests/test_docs/test_bash_yaml/md_files/bash-car-park-skills.md index 69849fb440..5f82eff1fb 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-car-park-skills.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-car-park-skills.md @@ -7,87 +7,100 @@ "public_uri": "127.0.0.1:9001" } ``` + ``` bash -aea fetch fetchai/car_detector:0.32.4 +aea fetch fetchai/car_detector:0.32.5 cd car_detector aea install aea build ``` + ``` bash aea create car_detector cd car_detector -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/carpark_detection:0.27.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/carpark_detection:0.27.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea install aea build ``` + ``` bash -aea fetch fetchai/car_data_buyer:0.33.4 +aea fetch fetchai/car_data_buyer:0.33.5 cd car_data_buyer aea install aea build ``` + ``` bash aea create car_data_buyer cd car_data_buyer -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/carpark_client:0.27.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/carpark_client:0.27.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea install aea build ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt aea add-key fetchai fetchai_private_key.txt --connection ``` + ``` bash aea generate-wealth fetchai ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea run ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -98,17 +111,20 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea run ``` + ``` bash cd .. aea delete car_detector aea delete car_data_buyer ``` + ``` yaml --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: 127.0.0.1:11001 @@ -117,4 +133,4 @@ config: local_uri: 127.0.0.1:9001 log_file: libp2p_node.log public_uri: 127.0.0.1:9001 -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-cli-how-to.md b/tests/test_docs/test_bash_yaml/md_files/bash-cli-how-to.md index d30ad741a6..b705c5edd0 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-cli-how-to.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-cli-how-to.md @@ -1,15 +1,19 @@ ``` bash pip install aea[cli] ``` + ``` bash pip install aea[all] ``` + ``` bash pip install aea[all] --force --no-cache-dir ``` + ``` bash aea ``` + ``` bash python -m aea.cli -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-cli-vs-programmatic-aeas.md b/tests/test_docs/test_bash_yaml/md_files/bash-cli-vs-programmatic-aeas.md index b396decc5a..7ef54bace3 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-cli-vs-programmatic-aeas.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-cli-vs-programmatic-aeas.md @@ -1,32 +1,40 @@ ``` bash svn export https://github.com/fetchai/agents-aea.git/trunk/packages ``` + ```bash pip install aea-ledger-fetchai ``` + ``` bash -aea fetch fetchai/weather_station:0.32.4 +aea fetch fetchai/weather_station:0.32.5 cd weather_station aea install aea build ``` + ``` bash aea config set vendor.fetchai.skills.weather_station.models.strategy.args.is_ledger_tx False --type bool ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea run ``` + ``` bash python weather_client.py ``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-config.md b/tests/test_docs/test_bash_yaml/md_files/bash-config.md index 2118557cd9..19b25b1267 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-config.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-config.md @@ -4,6 +4,7 @@ AUTHOR_REGEX: "[a-zA-Z_][a-zA-Z0-9_]*" PUBLIC_ID_REGEX: "^[a-zA-Z0-9_]*/[a-zA-Z_][a-zA-Z0-9_]*:(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$" LEDGER_ID_REGEX: "^[^\\d\\W]\\w*\\Z" ``` + ``` yaml agent_name: my_agent # Name of the AEA project (must satisfy PACKAGE_REGEX) author: fetchai # Author handle of the project's author (must satisfy AUTHOR_REGEX) @@ -14,13 +15,13 @@ aea_version: '>=1.0.0, <2.0.0' # AEA framework version(s) compatib fingerprint: {} # Fingerprint of AEA project components. fingerprint_ignore_patterns: [] # Ignore pattern for the fingerprinting tool. connections: # The list of connection public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX) -- fetchai/stub:0.21.2 +- fetchai/stub:0.21.3 contracts: [] # The list of contract public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX). protocols: # The list of protocol public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX). -- fetchai/default:1.1.6 +- fetchai/default:1.1.7 skills: # The list of skill public ids the AEA project depends on (each public id must satisfy PUBLIC_ID_REGEX). -- fetchai/error:0.18.5 -default_connection: fetchai/p2p_libp2p:0.27.4 # The default connection used for envelopes sent by the AEA (must satisfy PUBLIC_ID_REGEX). +- fetchai/error:0.18.6 +default_connection: fetchai/p2p_libp2p:0.27.5 # The default connection used for envelopes sent by the AEA (must satisfy PUBLIC_ID_REGEX). default_ledger: fetchai # The default ledger identifier the AEA project uses (must satisfy LEDGER_ID_REGEX) required_ledgers: [fetchai] # the list of identifiers of ledgers that the AEA project requires key pairs for (each item must satisfy LEDGER_ID_REGEX) default_routing: {} # The default routing scheme applied to envelopes sent by the AEA, it maps from protocol public ids to connection public ids (both keys and values must satisfy PUBLIC_ID_REGEX) @@ -33,6 +34,7 @@ logging_config: # The logging configurations the version: 1 dependencies: {} # The python dependencies the AEA relies on (e.g. plugins). They will be installed when `aea install` is run. ``` + ``` yaml period: 0.05 # The period to call agent's act execution_timeout: 0 # The execution time limit on each call to `react` and `act` (0 disables the feature) @@ -47,11 +49,13 @@ decision_maker_handler: None # The decision maker handler to storage_uri: None # The URI to the storage. data_dir: None # The path to the directory for local files. Defaults to current working directory. ``` + ``` yaml public_id: some_author/some_package:0.1.0 # The public id of the connection (must satisfy PUBLIC_ID_REGEX). type: connection # for connections, this must be "connection". config: ... # a dictionary to overwrite the `config` field (see below) ``` + ``` yaml public_id: some_author/some_package:0.1.0 # The public id of the connection (must satisfy PUBLIC_ID_REGEX). type: skill # for skills, this must be "skill". @@ -68,6 +72,7 @@ models: # override configurations for mo args: # arguments for a specific model (see below) foo: bar ``` + ``` yaml name: scaffold # Name of the package (must satisfy PACKAGE_REGEX) author: fetchai # Author handle of the package's author (must satisfy AUTHOR_REGEX) @@ -90,6 +95,7 @@ restricted_to_protocols: [] # The list of protocol public id dependencies: {} # The python dependencies the package relies on. They will be installed when `aea install` is run. is_abstract: false # An optional boolean that if `true` makes the connection ``` + ``` yaml name: scaffold # Name of the package (must satisfy PACKAGE_REGEX) author: fetchai # Author handle of the package's author (must satisfy AUTHOR_REGEX) @@ -108,6 +114,7 @@ config: # A dictionary containing the kw foo: bar dependencies: {} # The python dependencies the package relies on. They will be installed when `aea install` is run. ``` + ``` yaml name: scaffold # Name of the package (must satisfy PACKAGE_REGEX) author: fetchai # Author handle of the package's author (must satisfy AUTHOR_REGEX) @@ -123,6 +130,7 @@ fingerprint: # Fingerprint of package compone fingerprint_ignore_patterns: [] # Ignore pattern for the fingerprinting tool. dependencies: {} # The python dependencies the package relies on. They will be installed when `aea install` is run. ``` + ``` yaml name: scaffold # Name of the package (must satisfy PACKAGE_REGEX) author: fetchai # Author handle of the package's author (must satisfy AUTHOR_REGEX) diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-connection.md b/tests/test_docs/test_bash_yaml/md_files/bash-connection.md index 6e31289201..d9acdb45cb 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-connection.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-connection.md @@ -1,6 +1,7 @@ ``` bash aea scaffold connection my_new_connection ``` + ``` yaml connections: [] protocols: [] @@ -12,4 +13,4 @@ restricted_to_protocols: [] dependencies: {} is_abstract: false cert_requests: [] -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-contract.md b/tests/test_docs/test_bash_yaml/md_files/bash-contract.md index 78c8a7c5c5..a2bf64e14b 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-contract.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-contract.md @@ -1,6 +1,7 @@ ``` bash aea scaffold contract my_new_contract ``` + ``` yaml contract_interface_paths: ethereum: build/my_contract.json diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-decision-maker.md b/tests/test_docs/test_bash_yaml/md_files/bash-decision-maker.md index ae5357d1e6..7236b4681c 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-decision-maker.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-decision-maker.md @@ -4,6 +4,7 @@ decision_maker_handler: dotted_path: "aea.decision_maker.gop:DecisionMakerHandler" file_path: null ``` + ``` bash aea scaffold decision-maker-handler ``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-erc1155-skills.md b/tests/test_docs/test_bash_yaml/md_files/bash-erc1155-skills.md index 0815d2cd0e..571429f1ff 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-erc1155-skills.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-erc1155-skills.md @@ -1,108 +1,125 @@ ``` bash -aea fetch fetchai/erc1155_deployer:0.34.4 +aea fetch fetchai/erc1155_deployer:0.34.5 cd erc1155_deployer aea install aea build ``` + ``` bash aea create erc1155_deployer cd erc1155_deployer -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/erc1155_deploy:0.31.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/erc1155_deploy:0.31.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-cosmos": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ '[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' aea install aea build ``` + ``` bash aea config set agent.default_ledger ethereum ``` + ``` bash aea generate-key ethereum aea add-key ethereum ethereum_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash -aea fetch fetchai/erc1155_client:0.34.4 +aea fetch fetchai/erc1155_client:0.34.5 cd erc1155_client aea install aea build ``` + ``` bash aea create erc1155_client cd erc1155_client -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/erc1155_client:0.29.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/erc1155_client:0.29.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-cosmos": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ '[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' aea install aea build ``` + ``` bash aea config set agent.default_ledger ethereum ``` + ``` bash aea generate-key ethereum aea add-key ethereum ethereum_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash docker run -p 8545:8545 trufflesuite/ganache-cli:latest --verbose --gasPrice=0 --gasLimit=0x1fffffffffffff --account="$(cat erc1155_deployer/ethereum_private_key.txt),1000000000000000000000" --account="$(cat erc1155_client/ethereum_private_key.txt),1000000000000000000000" ``` + ``` bash aea get-wealth ethereum ``` + ``` bash aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum ``` + ``` bash aea run ``` + ``` bash registering service on SOEF. ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -113,29 +130,34 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea run ``` + ``` bash cd .. aea delete erc1155_deployer aea delete erc1155_client ``` + ``` yaml default_routing: - fetchai/contract_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/contract_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 ``` + ``` yaml default_routing: - fetchai/contract_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/ledger_api:1.1.6: fetchai/ledger:0.21.4 - fetchai/oef_search:1.1.6: fetchai/soef:0.27.5 + fetchai/contract_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/ledger_api:1.1.7: fetchai/ledger:0.21.5 + fetchai/oef_search:1.1.7: fetchai/soef:0.27.6 ``` + ``` yaml --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: 127.0.0.1:11001 @@ -144,4 +166,4 @@ config: local_uri: 127.0.0.1:9001 log_file: libp2p_node.log public_uri: 127.0.0.1:9001 -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-generic-skills-step-by-step.md b/tests/test_docs/test_bash_yaml/md_files/bash-generic-skills-step-by-step.md index 36cd41efdb..aae5f3089c 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-generic-skills-step-by-step.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-generic-skills-step-by-step.md @@ -1,87 +1,105 @@ ``` bash sudo nano 99-hidraw-permissions.rules ``` + ``` bash KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev" ``` + ``` bash -aea fetch fetchai/generic_seller:0.29.4 +aea fetch fetchai/generic_seller:0.29.5 cd generic_seller -aea eject skill fetchai/generic_seller:0.28.5 +aea eject skill fetchai/generic_seller:0.28.6 cd .. ``` + ``` bash -aea fetch fetchai/generic_buyer:0.30.4 +aea fetch fetchai/generic_buyer:0.30.5 cd generic_buyer -aea eject skill fetchai/generic_buyer:0.27.5 +aea eject skill fetchai/generic_buyer:0.27.6 cd .. ``` + ``` bash aea init --reset --author fetchai ``` + ``` bash aea create my_generic_seller cd my_generic_seller aea install ``` + ``` bash aea scaffold skill generic_seller ``` + ``` bash aea fingerprint skill fetchai/generic_seller:0.1.0 ``` + ``` bash aea create my_generic_buyer cd my_generic_buyer aea install ``` + ``` bash aea scaffold skill generic_buyer ``` + ``` bash aea fingerprint skill fetchai/generic_buyer:0.1.0 ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' ``` + ``` bash aea generate-wealth fetchai --sync ``` + ``` bash -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add protocol fetchai/fipa:1.1.6 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add protocol fetchai/fipa:1.1.7 aea install aea build -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea run ``` -``` bash -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add protocol fetchai/fipa:1.1.6 -aea add protocol fetchai/signing:1.1.6 + +``` bash +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add protocol fetchai/fipa:1.1.7 +aea add protocol fetchai/signing:1.1.7 aea install aea build -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -92,14 +110,17 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea run ``` -``` bash + +``` bash cd .. aea delete my_generic_seller aea delete my_generic_buyer ``` + ``` yaml name: generic_seller author: fetchai @@ -118,13 +139,13 @@ fingerprint: strategy.py: QmYTUsfv64eRQDevCfMUDQPx2GCtiMLFdacN4sS1E4Fdfx fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 skills: [] behaviours: service_registration: @@ -172,6 +193,7 @@ models: is_abstract: false dependencies: {} ``` + ``` yaml name: generic_buyer author: fetchai @@ -189,14 +211,14 @@ fingerprint: strategy.py: QmcrwaEWvKHDCNti8QjRhB4utJBJn5L8GpD27Uy9zHwKhY fingerprint_ignore_patterns: [] connections: -- fetchai/ledger:0.21.4 +- fetchai/ledger:0.21.5 contracts: [] protocols: -- fetchai/default:1.1.6 -- fetchai/fipa:1.1.6 -- fetchai/ledger_api:1.1.6 -- fetchai/oef_search:1.1.6 -- fetchai/signing:1.1.6 +- fetchai/default:1.1.7 +- fetchai/fipa:1.1.7 +- fetchai/ledger_api:1.1.7 +- fetchai/oef_search:1.1.7 +- fetchai/signing:1.1.7 skills: [] behaviours: search: @@ -258,6 +280,7 @@ models: is_abstract: false dependencies: {} ``` + ``` yaml config: delegate_uri: 127.0.0.1:11001 @@ -265,4 +288,4 @@ config: local_uri: 127.0.0.1:9001 log_file: libp2p_node.log public_uri: 127.0.0.1:9001 -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-generic-skills.md b/tests/test_docs/test_bash_yaml/md_files/bash-generic-skills.md index f171e956b9..d74ceb8e0c 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-generic-skills.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-generic-skills.md @@ -1,92 +1,106 @@ ``` bash -aea fetch fetchai/generic_seller:0.29.4 --alias my_seller_aea +aea fetch fetchai/generic_seller:0.29.5 --alias my_seller_aea cd my_seller_aea aea install aea build ``` + ``` bash aea create my_seller_aea cd my_seller_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/generic_seller:0.28.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/generic_seller:0.28.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea install aea build ``` + ``` bash -aea fetch fetchai/generic_buyer:0.30.4 --alias my_buyer_aea +aea fetch fetchai/generic_buyer:0.30.5 --alias my_buyer_aea cd my_buyer_aea aea install aea build ``` + ``` bash aea create my_buyer_aea cd my_buyer_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/generic_buyer:0.27.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/generic_buyer:0.27.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea install aea build ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt aea add-key fetchai fetchai_private_key.txt --connection ``` + ``` bash aea generate-wealth fetchai ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash cd my_seller_aea aea config set vendor.fetchai.skills.generic_seller.is_abstract false --type bool ``` + ``` bash cd my_buyer_aea aea config set vendor.fetchai.skills.generic_buyer.is_abstract false --type bool ``` + ``` bash aea run ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -97,14 +111,17 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea run ``` + ``` bash cd .. aea delete my_seller_aea aea delete my_buyer_aea ``` + ``` yaml models: ... @@ -126,6 +143,7 @@ models: unit_price: 10 class_name: GenericStrategy ``` + ``` yaml models: ... @@ -148,9 +166,10 @@ models: service_id: generic_service class_name: GenericStrategy ``` + ``` yaml --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: 127.0.0.1:11001 @@ -159,4 +178,4 @@ config: local_uri: 127.0.0.1:9001 log_file: libp2p_node.log public_uri: 127.0.0.1:9001 -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-gym-example.md b/tests/test_docs/test_bash_yaml/md_files/bash-gym-example.md index 12b4c53b9f..c1e16d9a9f 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-gym-example.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-gym-example.md @@ -2,9 +2,11 @@ svn export https://github.com/fetchai/agents-aea.git/trunk/examples svn export https://github.com/fetchai/agents-aea.git/trunk/packages ``` + ``` bash pip install numpy gym ``` + ``` bash python examples/gym_ex/train.py ``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-gym-skill.md b/tests/test_docs/test_bash_yaml/md_files/bash-gym-skill.md index d94e219b8f..7ffcbd6be6 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-gym-skill.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-gym-skill.md @@ -2,41 +2,52 @@ mkdir gym_skill_agent svn export https://github.com/fetchai/agents-aea.git/trunk/examples ``` + ``` bash pip install numpy gym ``` + ``` bash -aea fetch fetchai/gym_aea:0.26.4 --alias my_gym_aea +aea fetch fetchai/gym_aea:0.26.5 --alias my_gym_aea cd my_gym_aea aea install ``` + ``` bash aea create my_gym_aea cd my_gym_aea ``` + ``` bash -aea add skill fetchai/gym:0.21.5 +aea add skill fetchai/gym:0.21.6 ``` + ``` bash -aea config set agent.default_connection fetchai/gym:0.20.5 +aea config set agent.default_connection fetchai/gym:0.20.6 ``` + ``` bash aea install ``` + ``` bash mkdir gyms cp -a ../examples/gym_ex/gyms/. gyms/ ``` + ``` bash aea config set vendor.fetchai.connections.gym.config.env 'gyms.env.BanditNArmedRandom' ``` + ``` bash aea generate-key fetchai aea add-key fetchai ``` + ``` bash aea run ``` + ``` bash cd .. aea delete my_gym_aea diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-http-connection-and-skill.md b/tests/test_docs/test_bash_yaml/md_files/bash-http-connection-and-skill.md index 610e2facfa..15557e93be 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-http-connection-and-skill.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-http-connection-and-skill.md @@ -2,34 +2,44 @@ aea create my_aea cd my_aea ``` + ``` bash -aea add connection fetchai/http_server:0.23.5 +aea add connection fetchai/http_server:0.23.6 ``` + ``` bash -aea config set agent.default_connection fetchai/http_server:0.23.5 +aea config set agent.default_connection fetchai/http_server:0.23.6 ``` + ``` bash aea config set vendor.fetchai.connections.http_server.config.api_spec_path "../examples/http_ex/petstore.yaml" ``` + ``` bash aea generate-key fetchai aea add-key fetchai ``` + ``` bash aea install ``` + ``` bash aea scaffold skill http_echo ``` + ``` bash -aea fingerprint skill fetchai/http_echo:0.21.5 +aea fingerprint skill fetchai/http_echo:0.21.6 ``` + ``` bash aea config set vendor.fetchai.connections.http_server.config.target_skill_id "$(aea config get agent.author)/http_echo:0.1.0" ``` + ``` bash aea run ``` + ``` yaml handlers: http_handler: @@ -42,4 +52,4 @@ models: http_dialogues: args: {} class_name: HttpDialogues -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-language-agnostic-definition.md b/tests/test_docs/test_bash_yaml/md_files/bash-language-agnostic-definition.md index aace3deee7..32dc55fecb 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-language-agnostic-definition.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-language-agnostic-definition.md @@ -11,6 +11,7 @@ message Envelope{ string uri = 5; } ``` + ``` proto import "google/protobuf/struct.proto"; @@ -29,6 +30,7 @@ message Message { } } ``` + ``` proto syntax = "proto3"; @@ -69,4 +71,4 @@ message DefaultMessage{ Error_Performative error = 7; } } -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-logging.md b/tests/test_docs/test_bash_yaml/md_files/bash-logging.md index 0cb1d94593..2675d95e50 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-logging.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-logging.md @@ -2,6 +2,7 @@ aea create my_aea cd my_aea ``` + ``` yaml agent_name: my_aea author: fetchai @@ -12,13 +13,13 @@ aea_version: 0.6.0 fingerprint: {} fingerprint_ignore_patterns: [] connections: -- fetchai/stub:0.21.2 +- fetchai/stub:0.21.3 contracts: [] protocols: -- fetchai/default:1.1.6 +- fetchai/default:1.1.7 skills: -- fetchai/error:0.18.5 -default_connection: fetchai/stub:0.21.2 +- fetchai/error:0.18.6 +default_connection: fetchai/stub:0.21.3 default_ledger: fetchai required_ledgers: - fetchai @@ -27,6 +28,7 @@ logging_config: version: 1 private_key_paths: {} ``` + ``` yaml logging_config: version: 1 @@ -52,6 +54,7 @@ logging_config: level: DEBUG propagate: False ``` + ``` yaml logging_config: version: 1 diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-ml-skills.md b/tests/test_docs/test_bash_yaml/md_files/bash-ml-skills.md index 6f0aba0895..6e2aec4e5e 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-ml-skills.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-ml-skills.md @@ -7,87 +7,100 @@ "public_uri": "127.0.0.1:9001" } ``` + ``` bash -aea fetch fetchai/ml_data_provider:0.32.4 +aea fetch fetchai/ml_data_provider:0.32.5 cd ml_data_provider aea install aea build -``` +``` + ``` bash aea create ml_data_provider cd ml_data_provider -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/ml_data_provider:0.27.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/ml_data_provider:0.27.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea install aea build ``` + ``` bash -aea fetch fetchai/ml_model_trainer:0.33.4 +aea fetch fetchai/ml_model_trainer:0.33.5 cd ml_model_trainer aea install aea build ``` + ``` bash aea create ml_model_trainer cd ml_model_trainer -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/ml_train:0.29.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/ml_train:0.29.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea install aea build ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt aea add-key fetchai fetchai_private_key.txt --connection ``` + ``` bash aea generate-wealth fetchai ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea run ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -98,17 +111,20 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea run ``` + ``` bash cd .. aea delete ml_data_provider aea delete ml_model_trainer ``` + ``` yaml --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: 127.0.0.1:11001 @@ -117,4 +133,4 @@ config: local_uri: 127.0.0.1:9001 log_file: libp2p_node.log public_uri: 127.0.0.1:9001 -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-oef-ledger.md b/tests/test_docs/test_bash_yaml/md_files/bash-oef-ledger.md index f6c140d02e..dcdb2c0f81 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-oef-ledger.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-oef-ledger.md @@ -1,6 +1,7 @@ ``` bash python scripts/oef/launch.py -c ./scripts/oef/launch_config.json ``` + ``` bash svn export https://github.com/fetchai/agents-aea.git/trunk/examples svn export https://github.com/fetchai/agents-aea.git/trunk/scripts diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-oracle-demo.md b/tests/test_docs/test_bash_yaml/md_files/bash-oracle-demo.md index eb41bc7064..41c2364ec9 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-oracle-demo.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-oracle-demo.md @@ -1,126 +1,153 @@ ``` bash -aea fetch fetchai/coin_price_oracle:0.17.5 +aea fetch fetchai/coin_price_oracle:0.17.6 cd coin_price_oracle aea install ``` + ``` bash aea create coin_price_oracle cd coin_price_oracle -aea add connection fetchai/http_client:0.24.5 -aea add connection fetchai/ledger:0.21.4 -aea add connection fetchai/prometheus:0.9.5 -aea add skill fetchai/advanced_data_request:0.7.5 -aea add skill fetchai/simple_oracle:0.16.4 +aea add connection fetchai/http_client:0.24.6 +aea add connection fetchai/ledger:0.21.5 +aea add connection fetchai/prometheus:0.9.6 +aea add skill fetchai/advanced_data_request:0.7.6 +aea add skill fetchai/simple_oracle:0.16.5 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/ledger:0.21.4 +aea config set agent.default_connection fetchai/ledger:0.21.5 aea install ``` + ``` bash aea config set --type str vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.url "https://api.coingecko.com/api/v3/simple/price?ids=fetch-ai&vs_currencies=usd" ``` + ``` bash aea config set --type list vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.outputs '[{"name": "price", "json_path": "fetch-ai.usd"}]' ``` + ``` bash aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.oracle_value_name price ``` + ``` bash aea config set --type dict agent.default_routing \ '{ -"fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", -"fetchai/http:1.1.6": "fetchai/http_client:0.24.5", -"fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4" +"fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", +"fetchai/http:1.1.7": "fetchai/http_client:0.24.6", +"fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5" }' ``` + ``` bash aea config set agent.default_ledger fetchai ``` + ``` bash aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.ledger_id fetchai aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.update_function update_oracle_value ``` + ``` bash LEDGER_ID=fetchai ``` + ``` bash LEDGER_ID=ethereum ``` + ``` bash aea config set agent.default_ledger ethereum ``` + ``` bash aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.ledger_id ethereum aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.update_function updateOracleValue ``` + ``` bash aea generate-key $LEDGER_ID --add-key ``` + ``` bash aea generate-wealth $LEDGER_ID ``` + ``` bash -aea fetch fetchai/coin_price_oracle_client:0.12.5 +aea fetch fetchai/coin_price_oracle_client:0.12.6 cd coin_price_oracle_client aea install ``` + ``` bash aea create coin_price_oracle_client cd coin_price_oracle_client -aea add connection fetchai/http_client:0.24.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/simple_oracle_client:0.13.4 +aea add connection fetchai/http_client:0.24.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/simple_oracle_client:0.13.5 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/ledger:0.21.4 +aea config set agent.default_connection fetchai/ledger:0.21.5 aea install ``` + ``` bash aea config set --type dict agent.default_routing \ '{ -"fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", -"fetchai/http:1.1.6": "fetchai/http_client:0.24.5", -"fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4" +"fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", +"fetchai/http:1.1.7": "fetchai/http_client:0.24.6", +"fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5" }' ``` + ``` bash aea config set agent.default_ledger fetchai ``` + ``` bash aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.ledger_id fetchai aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.query_function query_oracle_value ``` + ``` bash aea config set agent.default_ledger ethereum ``` + ``` bash aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.ledger_id ethereum aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.query_function queryOracleValue ``` + ``` bash aea generate-key $LEDGER_ID --add-key ``` + ``` bash aea generate-wealth $LEDGER_ID ``` + ``` bash docker run -p 8545:8545 trufflesuite/ganache-cli:latest --verbose --gasPrice=0 --gasLimit=0x1fffffffffffff --account="$(cat coin_price_oracle/ethereum_private_key.txt),1000000000000000000000" --account="$(cat coin_price_oracle_client/ethereum_private_key.txt),1000000000000000000000" ``` + ``` bash aea config set vendor.fetchai.skills.simple_oracle.models.strategy.args.erc20_address $ERC20_ADDRESS ``` + ``` bash aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.erc20_address $ERC20_ADDRESS ``` + ``` bash aea run ``` + ``` bash info: [coin_price_oracle] Oracle contract successfully deployed at address: ... ... @@ -128,15 +155,19 @@ info: [coin_price_oracle] Oracle role successfully granted! ... info: [coin_price_oracle] Oracle value successfully updated! ``` + ``` bash aea config set vendor.fetchai.skills.simple_oracle_client.models.strategy.args.oracle_contract_address $ORACLE_ADDRESS ``` + ``` bash Oracle contract successfully deployed at address: ORACLE_ADDRESS ``` + ``` bash aea run ``` + ``` bash info: [coin_price_oracle_client] Oracle client contract successfully deployed at address: ... ... diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-orm-integration.md b/tests/test_docs/test_bash_yaml/md_files/bash-orm-integration.md index 018a0b876c..ae5b469521 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-orm-integration.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-orm-integration.md @@ -1,93 +1,108 @@ ``` bash -aea fetch fetchai/thermometer_aea:0.30.4 --alias my_thermometer_aea +aea fetch fetchai/thermometer_aea:0.30.5 --alias my_thermometer_aea cd my_thermometer_aea aea install aea build ``` + ``` bash aea create my_thermometer_aea cd my_thermometer_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/thermometer:0.27.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/thermometer:0.27.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea install aea build ``` + ``` bash -aea fetch fetchai/thermometer_client:0.32.4 --alias my_thermometer_client +aea fetch fetchai/thermometer_client:0.32.5 --alias my_thermometer_client cd my_thermometer_client aea install aea build ``` + ``` bash aea create my_thermometer_client cd my_thermometer_client -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/thermometer_client:0.26.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/thermometer_client:0.26.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea install aea build ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea generate-wealth fetchai ``` + ``` bash aea install aea build ``` + ``` bash -aea eject skill fetchai/thermometer:0.27.5 +aea eject skill fetchai/thermometer:0.27.6 ``` + ``` bash aea fingerprint skill {YOUR_AUTHOR_HANDLE}/thermometer:0.1.0 ``` + ``` bash aea run ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -98,14 +113,17 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea run ``` -``` bash + +``` bash cd .. aea delete my_thermometer_aea aea delete my_thermometer_client ``` + ``` yaml models: ... @@ -129,6 +147,7 @@ models: dependencies: SQLAlchemy: {} ``` + ``` yaml models: ... @@ -151,9 +170,10 @@ models: service_id: thermometer_data class_name: Strategy ``` + ``` yaml --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: 127.0.0.1:11001 @@ -162,4 +182,4 @@ config: local_uri: 127.0.0.1:9001 log_file: libp2p_node.log public_uri: 127.0.0.1:9001 -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-p2p-connection.md b/tests/test_docs/test_bash_yaml/md_files/bash-p2p-connection.md index a0ff917577..c7e0e0266f 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-p2p-connection.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-p2p-connection.md @@ -1,14 +1,16 @@ ``` bash pip install aea-ledger-fetchai ``` + ``` bash aea create my_genesis_aea cd my_genesis_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea install aea build ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt @@ -16,17 +18,20 @@ aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection aea issue-certificates ``` + ``` bash -aea run --connections fetchai/p2p_libp2p:0.27.4 +aea run --connections fetchai/p2p_libp2p:0.27.5 ``` + ``` bash aea create my_other_aea cd my_other_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea install aea build ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt @@ -34,6 +39,7 @@ aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection aea issue-certificates ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -44,50 +50,60 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash -aea run --connections fetchai/p2p_libp2p:0.27.4 -``` - ``` bash - svn export https://github.com/fetchai/agents-aea.git/trunk/packages/fetchai/connections/p2p_libp2p - cd p2p_libp2p - go build - chmod +x libp2p_node - ``` - ``` bash - docker build -t acn_node_standalone -f scripts/acn/Dockerfile . - ``` - ``` bash - python3 run_acn_node_standalone.py libp2p_node --config-from-env - ``` - ``` bash - python3 run_acn_node_standalone.py libp2p_node --config-from-file - ``` - ``` bash - docker run -v :/acn/acn_config -it acn_node_standalone --config-from-file /acn/acn_config - ``` - ``` bash - python3 run_acn_node_standalone.py libp2p_node --key-file \ - --uri --uri-external \ - --uri-delegate \ - --entry-peers-maddrs ... - ``` - ``` bash - docker run -v :/acn/key.txt -it acn_node_standalone --key-file /acn/key.txt \ - --uri --uri-external \ - --uri-delegate \ - --entry-peers-maddrs ... - ``` +aea run --connections fetchai/p2p_libp2p:0.27.5 +``` + +``` bash +svn export https://github.com/fetchai/agents-aea.git/trunk/packages/fetchai/connections/p2p_libp2p +cd p2p_libp2p +go build +chmod +x libp2p_node +``` + +``` bash +docker build -t acn_node_standalone -f scripts/acn/Dockerfile . +``` + +``` bash +python3 run_acn_node_standalone.py libp2p_node --config-from-env +``` + +``` bash +python3 run_acn_node_standalone.py libp2p_node --config-from-file +``` + +``` bash +docker run -v :/acn/acn_config -it acn_node_standalone --config-from-file /acn/acn_config +``` + +``` bash +python3 run_acn_node_standalone.py libp2p_node --key-file \ + --uri --uri-external \ + --uri-delegate \ + --entry-peers-maddrs ... +``` + +``` bash +docker run -v :/acn/key.txt -it acn_node_standalone --key-file /acn/key.txt \ + --uri --uri-external \ + --uri-delegate \ + --entry-peers-maddrs ... +``` + ``` yaml /dns4/acn.fetch.ai/tcp/9000/p2p/16Uiu2HAkw1ypeQYQbRFV5hKUxGRHocwU5ohmVmCnyJNg36tnPFdx /dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW ``` + ``` yaml --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: null entry_peers: [/dns4/acn.fetch.ai/tcp/9000/p2p/16Uiu2HAkw1ypeQYQbRFV5hKUxGRHocwU5ohmVmCnyJNg36tnPFdx,/dns4/acn.fetch.ai/tcp/9001/p2p/16Uiu2HAmVWnopQAqq4pniYLw44VRvYxBUoRHqjz1Hh2SoCyjbyRW] public_uri: null local_uri: 127.0.0.1:9001 -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-package-imports.md b/tests/test_docs/test_bash_yaml/md_files/bash-package-imports.md index e1d35cc409..5fa50d0f65 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-package-imports.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-package-imports.md @@ -27,7 +27,8 @@ aea_name/ skills/ Directory containing all the added skills from author_1 ... ... ``` + ``` yaml connections: -- fetchai/stub:0.21.2 +- fetchai/stub:0.21.3 ``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-performance-benchmark.md b/tests/test_docs/test_bash_yaml/md_files/bash-performance-benchmark.md index 739eaf6e9b..78bcd1a37e 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-performance-benchmark.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-performance-benchmark.md @@ -19,6 +19,7 @@ Options: -P, --plot INTEGER X axis parameter idx --help Show this message and exit. ``` + ``` bash Test execution timeout: 10.0 Test execution measure period: 0.1 @@ -47,6 +48,7 @@ mem min (kb): 53.98828125 ± 0 mem max (kb): 53.98828125 ± 0 mem mean (kb): 53.98828125 ± 0 ``` + ``` bash Test execution timeout: 10.0 Test execution measure period: 0.1 diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-por.md b/tests/test_docs/test_bash_yaml/md_files/bash-por.md index ff21da7f73..ac6831577e 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-por.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-por.md @@ -7,4 +7,4 @@ cert_requests: public_key: fetchai message_format: '{public_key}' save_path: .certs/conn_cert.txt -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-protocol-generator.md b/tests/test_docs/test_bash_yaml/md_files/bash-protocol-generator.md index 475333f6a1..a952d63538 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-protocol-generator.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-protocol-generator.md @@ -1,16 +1,20 @@ ``` bash aea generate protocol ``` + ``` bash aea generate protocol --l ``` + ``` bash aea create my_aea cd my_aea ``` + ``` bash aea generate protocol ../examples/protocol_specification_ex/sample.yaml ``` + ``` yaml --- name: two_party_negotiation diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-quickstart.md b/tests/test_docs/test_bash_yaml/md_files/bash-quickstart.md index bffbc621f5..bffa101e74 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-quickstart.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-quickstart.md @@ -1,50 +1,64 @@ ``` bash python3 --version ``` + ``` bash sudo apt-get install python3.7-dev ``` + ``` bash curl https://raw.githubusercontent.com/fetchai/agents-aea/main/scripts/install.sh --output install.sh chmod +x install.sh ./install.sh ``` + ```bash docker pull fetchai/aea-user:latest ``` + ```bash docker run -it -v $(pwd):/agents --workdir=/agents fetchai/aea-user:latest ``` + ```bash docker run -it -v %cd%:/agents --workdir=/agents fetchai/aea-user:latest ``` + ``` bash mkdir my_aea_projects/ cd my_aea_projects/ ``` + ``` bash which pipenv ``` + ``` bash touch Pipfile && pipenv --python 3.7 && pipenv shell ``` + ``` bash svn export https://github.com/fetchai/agents-aea.git/trunk/examples svn export https://github.com/fetchai/agents-aea.git/trunk/scripts svn export https://github.com/fetchai/agents-aea.git/trunk/packages ``` + ``` bash pip install aea[all] ``` + ``` bash sudo apt-get install python3.7-dev ``` -``` bash + +``` bash aea init ``` + ``` bash aea register ``` + ``` bash Do you have a Registry account? [y/N]: n Create a new account on the Registry now: @@ -59,40 +73,50 @@ Confirm password: / ___ \ | |___ / ___ \ /_/ \_\|_____|/_/ \_\ -v1.2.4 +v1.2.5 AEA configurations successfully initialized: {'author': 'fetchai'} ``` + ``` bash -aea fetch fetchai/my_first_aea:0.28.4 +aea fetch fetchai/my_first_aea:0.28.5 cd my_first_aea ``` + ``` bash aea create my_first_aea cd my_first_aea ``` + ``` bash -aea add connection fetchai/stub:0.21.2 +aea add connection fetchai/stub:0.21.3 ``` + ``` bash -aea add skill fetchai/echo:0.20.5 +aea add skill fetchai/echo:0.20.6 ``` + ``` bash TO,SENDER,PROTOCOL_ID,ENCODED_MESSAGE, ``` + ``` bash recipient_aea,sender_aea,fetchai/default:1.0.0,\x08\x01\x12\x011*\x07\n\x05hello, ``` + ``` bash aea install ``` + ``` bash aea generate-key fetchai aea add-key fetchai ``` + ``` bash aea run ``` + ``` bash _ _____ _ / \ | ____| / \ @@ -111,25 +135,30 @@ info: Echo Behaviour: act method called. info: Echo Behaviour: act method called. ... ``` + ``` bash cd my_first_aea aea interact ``` + ``` bash info: Echo Behaviour: act method called. info: Echo Handler: message=Message(dialogue_reference=('1', '') message_id=1 target=0 performative=bytes content=b'hello'), sender=my_first_aea_interact info: Echo Behaviour: act method called. info: Echo Behaviour: act method called. ``` + ``` bash echo 'my_first_aea,sender_aea,fetchai/default:1.0.0,\x12\x10\x08\x01\x12\x011*\t*\x07\n\x05hello,' >> input_file ``` + ``` bash info: Echo Behaviour: act method called. Echo Handler: message=Message(sender=sender_aea,to=my_first_aea,content=b'hello',dialogue_reference=('1', ''),message_id=1,performative=bytes,target=0), sender=sender_aea info: Echo Behaviour: act method called. info: Echo Behaviour: act method called. ``` + ``` bash info: Echo Behaviour: act method called. info: Echo Behaviour: act method called. @@ -138,12 +167,15 @@ my_first_aea stopping ... info: Echo Handler: teardown method called. info: Echo Behaviour: teardown method called. ``` + ``` bash aea interact ``` + ``` bash pytest test.py ``` + ``` bash aea delete my_first_aea ``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-raspberry-set-up.md b/tests/test_docs/test_bash_yaml/md_files/bash-raspberry-set-up.md index 7e406051ff..3b9d8709c9 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-raspberry-set-up.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-raspberry-set-up.md @@ -3,32 +3,40 @@ sudo apt update -y sudo apt-get update sudo apt-get dist-upgrade ``` + ``` bash sudo apt install cmake golang -y ``` + ``` bash sudo apt install gfortran libatlas-base-dev libopenblas-dev -y ``` + ``` bash sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024 sudo /sbin/mkswap /var/swap.1 sudo chmod 600 /var/swap.1 sudo /sbin/swapon /var/swap.1 ``` + ``` bash pip install numpy --upgrade pip install scikit-image ``` + ``` bash sudo swapoff /var/swap.1 sudo rm /var/swap.1 ``` + ``` bash export PATH="$HOME/.local/bin:$PATH" ``` + ``` bash pip install aea[all] ``` + ``` bash aea --version ``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-scaffolding.md b/tests/test_docs/test_bash_yaml/md_files/bash-scaffolding.md index faac445e5b..347959170b 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-scaffolding.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-scaffolding.md @@ -2,18 +2,23 @@ aea create my_aea --author "fetchai" cd my_aea ``` + ``` bash aea scaffold skill my_skill ``` + ``` bash aea scaffold protocol my_protocol ``` + ``` bash aea scaffold contract my_contract ``` + ``` bash aea scaffold connection my_connection ``` + ``` bash aea fingerprint [package_name] [public_id] ``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-skill-guide.md b/tests/test_docs/test_bash_yaml/md_files/bash-skill-guide.md index b1329ed49f..0adc53298c 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-skill-guide.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-skill-guide.md @@ -2,51 +2,63 @@ aea create my_aea && cd my_aea aea scaffold skill my_search ``` + ``` bash aea fingerprint skill fetchai/my_search:0.1.0 ``` + ``` bash -aea add protocol fetchai/oef_search:1.1.6 +aea add protocol fetchai/oef_search:1.1.7 ``` + ``` bash -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/p2p_libp2p:0.27.4 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/p2p_libp2p:0.27.5 aea install aea build -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' ``` + ``` bash -aea fetch fetchai/simple_service_registration:0.32.4 && cd simple_service_registration && aea install && aea build +aea fetch fetchai/simple_service_registration:0.32.5 && cd simple_service_registration && aea install && aea build ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea run ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -57,9 +69,11 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea run ``` + ``` yaml name: my_search author: fetchai @@ -73,7 +87,7 @@ fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/oef_search:1.1.6 +- fetchai/oef_search:1.1.7 skills: [] behaviours: my_search_behaviour: @@ -101,6 +115,7 @@ dependencies: version: <2.0.0,>=1.0.0 is_abstract: false ``` + ``` yaml name: simple_service_registration author: fetchai @@ -120,7 +135,7 @@ fingerprint_ignore_patterns: [] connections: [] contracts: [] protocols: -- fetchai/oef_search:1.1.6 +- fetchai/oef_search:1.1.7 skills: [] behaviours: service: @@ -153,4 +168,4 @@ models: class_name: Strategy dependencies: {} is_abstract: false -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-skill.md b/tests/test_docs/test_bash_yaml/md_files/bash-skill.md index f650539b0d..ae064ea43c 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-skill.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-skill.md @@ -16,8 +16,9 @@ handlers: models: {} dependencies: {} protocols: -- fetchai/default:1.1.6 -``` +- fetchai/default:1.1.7 ``` + +``` bash aea scaffold error-handler -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-tac-skills-contract.md b/tests/test_docs/test_bash_yaml/md_files/bash-tac-skills-contract.md index 48815fbebf..0066b1637e 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-tac-skills-contract.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-tac-skills-contract.md @@ -1,73 +1,77 @@ ``` bash -aea fetch fetchai/tac_controller_contract:0.32.4 +aea fetch fetchai/tac_controller_contract:0.32.5 cd tac_controller_contract aea install aea build ``` + ``` bash aea create tac_controller_contract cd tac_controller_contract -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_control_contract:0.27.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/tac_control_contract:0.27.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set agent.default_ledger fetchai aea config set vendor.fetchai.connections.soef.config.chain_identifier fetchai_v2_misc aea config set --type bool vendor.fetchai.skills.tac_control.is_abstract true aea config set --type dict agent.default_routing \ '{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ '[{"identifier": "acn", "ledger_id": "fetchai", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' aea install aea build ``` + ``` bash -aea fetch fetchai/tac_participant_contract:0.22.4 --alias tac_participant_one +aea fetch fetchai/tac_participant_contract:0.22.5 --alias tac_participant_one cd tac_participant_one aea install aea build cd .. -aea fetch fetchai/tac_participant_contract:0.22.4 --alias tac_participant_two +aea fetch fetchai/tac_participant_contract:0.22.5 --alias tac_participant_two cd tac_participant_two aea install aea build ``` + ``` bash aea create tac_participant_one aea create tac_participant_two ``` + ``` bash cd tac_participant_one -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/tac_participation:0.25.6 +aea add skill fetchai/tac_negotiation:0.29.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set agent.default_ledger fetchai aea config set vendor.fetchai.connections.soef.config.chain_identifier fetchai_v2_misc aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool aea config set --type dict agent.default_routing \ '{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea config set --type dict agent.decision_maker_handler \ '{ @@ -79,28 +83,29 @@ aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ aea install aea build ``` + ``` bash cd tac_participant_two -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/tac_participation:0.25.6 +aea add skill fetchai/tac_negotiation:0.29.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set agent.default_ledger fetchai aea config set vendor.fetchai.connections.soef.config.chain_identifier fetchai_v2_misc aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool aea config set --type dict agent.default_routing \ '{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea config set --type dict agent.decision_maker_handler \ '{ @@ -112,27 +117,34 @@ aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ aea install aea build ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea config get vendor.fetchai.skills.tac_control_contract.models.parameters.args.registration_start_time aea config set vendor.fetchai.skills.tac_control_contract.models.parameters.args.registration_start_time '01 01 2020 00:01' ``` + ``` bash aea config set vendor.fetchai.skills.tac_control_contract.models.parameters.args.registration_start_time "$(date -d "5 minutes" +'%d %m %Y %H:%M')" ``` + ``` bash -aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri +aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -143,6 +155,7 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -153,93 +166,103 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9002" }' ``` + ``` bash aea get-address fetchai ``` + ``` bash aea get-wealth fetchai ``` + ``` bash aea run ``` + ``` bash aea launch tac_participant_one tac_participant_two ``` + ``` bash aea delete tac_controller_contract aea delete tac_participant_one aea delete tac_participant_two ``` + ``` bash -aea fetch fetchai/tac_controller_contract:0.32.4 +aea fetch fetchai/tac_controller_contract:0.32.5 cd tac_controller_contract aea install aea build ``` + ``` bash aea create tac_controller_contract cd tac_controller_contract -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_control_contract:0.27.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/tac_control_contract:0.27.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set agent.default_ledger ethereum aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum aea config set --type bool vendor.fetchai.skills.tac_control.is_abstract true aea config set --type dict agent.default_routing \ '{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ '[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "save_path": ".certs/conn_cert.txt"}]' aea install aea build ``` + ``` bash -aea fetch fetchai/tac_participant_contract:0.22.4 --alias tac_participant_one +aea fetch fetchai/tac_participant_contract:0.22.5 --alias tac_participant_one cd tac_participant_one aea install aea build cd .. -aea fetch fetchai/tac_participant_contract:0.22.4 --alias tac_participant_two +aea fetch fetchai/tac_participant_contract:0.22.5 --alias tac_participant_two cd tac_participant_two aea install aea build ``` + ``` bash aea create tac_participant_one aea create tac_participant_two ``` + ``` bash cd tac_participant_one -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/tac_participation:0.25.6 +aea add skill fetchai/tac_negotiation:0.29.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set agent.default_ledger ethereum aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool aea config set --type dict agent.default_routing \ '{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea config set --type dict agent.decision_maker_handler \ '{ @@ -251,28 +274,29 @@ aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ aea install aea build ``` + ``` bash cd tac_participant_two -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/tac_participation:0.25.6 +aea add skill fetchai/tac_negotiation:0.29.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"}, "aea-ledger-ethereum": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set agent.default_ledger ethereum aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum aea config set vendor.fetchai.skills.tac_participation.models.game.args.is_using_contract 'True' --type bool aea config set vendor.fetchai.skills.tac_negotiation.models.strategy.args.is_contract_tx 'True' --type bool aea config set --type dict agent.default_routing \ '{ - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea config set --type dict agent.decision_maker_handler \ '{ @@ -284,33 +308,41 @@ aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests \ aea install aea build ``` + ```bash aea config set agent.default_ledger ethereum json=$(printf '[{"identifier": "acn", "ledger_id": "ethereum", "not_after": "2023-01-01", "not_before": "2022-01-01", "public_key": "fetchai", "message_format": "{public_key}", "save_path": ".certs/conn_cert.txt"}]') aea config set --type list vendor.fetchai.connections.p2p_libp2p.cert_requests "$json" aea config set vendor.fetchai.connections.soef.config.chain_identifier ethereum ``` + ``` bash aea generate-key ethereum aea add-key ethereum ethereum_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea config get vendor.fetchai.skills.tac_control_contract.models.parameters.args.registration_start_time aea config set vendor.fetchai.skills.tac_control_contract.models.parameters.args.registration_start_time '01 01 2020 00:01' ``` + ``` bash aea config set vendor.fetchai.skills.tac_control_contract.models.parameters.args.registration_start_time "$(date -d "5 minutes" +'%d %m %Y %H:%M')" ``` + ```bash -aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.4 -u public_uri +aea get-multiaddress fetchai -c -i fetchai/p2p_libp2p:0.27.5 -u public_uri ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -321,6 +353,7 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -331,20 +364,25 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9002" }' ``` + ``` bash docker run -p 8545:8545 trufflesuite/ganache-cli:latest --verbose --gasPrice=0 --gasLimit=0x1fffffffffffff --account="$(cat tac_controller_contract/ethereum_private_key.txt),1000000000000000000000" --account="$(cat tac_participant_one/ethereum_private_key.txt),1000000000000000000000" --account="$(cat tac_participant_two/ethereum_private_key.txt),1000000000000000000000" ``` + ``` bash aea get-wealth ethereum ``` + ``` bash aea run ``` + ``` bash aea launch tac_participant_one tac_participant_two ``` + ``` bash aea delete tac_controller_contract aea delete tac_participant_one aea delete tac_participant_two -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-tac-skills.md b/tests/test_docs/test_bash_yaml/md_files/bash-tac-skills.md index 7e512e0f10..5cc4bfb958 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-tac-skills.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-tac-skills.md @@ -7,6 +7,7 @@ "public_uri": "127.0.0.1:9001" } ``` + ``` bash { "delegate_uri": "127.0.0.1:11002", @@ -16,63 +17,68 @@ "public_uri": "127.0.0.1:9002" } ``` + ``` bash -aea fetch fetchai/tac_controller:0.30.4 +aea fetch fetchai/tac_controller:0.30.5 cd tac_controller aea install aea build ``` + ``` bash aea create tac_controller cd tac_controller -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_control:0.25.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/tac_control:0.25.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set agent.default_ledger fetchai aea config set --type dict agent.default_routing \ '{ - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea install aea build ``` + ``` bash -aea fetch fetchai/tac_participant:0.32.4 --alias tac_participant_one +aea fetch fetchai/tac_participant:0.32.5 --alias tac_participant_one cd tac_participant_one aea install aea build cd .. -aea fetch fetchai/tac_participant:0.32.4 --alias tac_participant_two +aea fetch fetchai/tac_participant:0.32.5 --alias tac_participant_two cd tac_participant_two aea build ``` + ``` bash aea create tac_participant_one aea create tac_participant_two ``` + ``` bash cd tac_participant_one -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/tac_participation:0.25.6 +aea add skill fetchai/tac_negotiation:0.29.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set agent.default_ledger fetchai aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea config set --type dict agent.decision_maker_handler \ '{ @@ -82,23 +88,24 @@ aea config set --type dict agent.decision_maker_handler \ aea install aea build ``` + ``` bash cd tac_participant_two -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/tac_participation:0.25.5 -aea add skill fetchai/tac_negotiation:0.29.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/tac_participation:0.25.6 +aea add skill fetchai/tac_negotiation:0.29.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set agent.default_ledger fetchai aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea config set --type dict agent.decision_maker_handler \ '{ @@ -108,27 +115,34 @@ aea config set --type dict agent.decision_maker_handler \ aea install aea build ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea config get vendor.fetchai.skills.tac_control.models.parameters.args.registration_start_time aea config set vendor.fetchai.skills.tac_control.models.parameters.args.registration_start_time '01 01 2020 00:01' ``` + ``` bash aea config set vendor.fetchai.skills.tac_control.models.parameters.args.registration_start_time "$(date -d "2 minutes" +'%d %m %Y %H:%M')" ``` + ``` bash aea run ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -139,6 +153,7 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -149,20 +164,24 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9002" }' ``` + ``` bash aea run ``` + ``` bash aea launch tac_participant_one tac_participant_two ``` + ``` bash aea delete tac_controller aea delete tac_participant_one aea delete tac_participant_two ``` + ``` yaml --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: 127.0.0.1:11001 @@ -171,9 +190,10 @@ config: log_file: libp2p_node.log public_uri: 127.0.0.1:9001 ``` + ``` yaml --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: 127.0.0.1:11002 @@ -181,4 +201,4 @@ config: local_uri: 127.0.0.1:9002 log_file: libp2p_node.log public_uri: 127.0.0.1:9002 -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-tac.md b/tests/test_docs/test_bash_yaml/md_files/bash-tac.md index 0c5d52405c..bf98eeff7b 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-tac.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-tac.md @@ -1,21 +1,27 @@ ``` bash git clone git@github.com:fetchai/agents-tac.git --recursive && cd agents-tac ``` + ``` bash which pipenv ``` + ``` bash pipenv --python 3.7 && pipenv shell ``` + ``` bash pipenv install ``` + ``` bash python setup.py install ``` + ``` bash python scripts/launch.py ``` + ``` bash git clone git@github.com:fetchai/agents-tac.git --recursive && cd agents-tac pipenv --python 3.7 && pipenv shell @@ -23,13 +29,16 @@ python setup.py install cd sandbox && docker-compose build docker-compose up ``` + ``` bash pipenv shell python templates/v1/basic.py --name my_agent --dashboard ``` + ``` bash docker stop $(docker ps -q) ``` + ``` bash # mac docker ps -q | xargs docker stop ; docker system prune -a diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-thermometer-skills.md b/tests/test_docs/test_bash_yaml/md_files/bash-thermometer-skills.md index ab118ca6d3..513df41ba2 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-thermometer-skills.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-thermometer-skills.md @@ -7,79 +7,92 @@ "public_uri": "127.0.0.1:9001" } ``` -``` bash -aea fetch fetchai/thermometer_aea:0.30.4 --alias my_thermometer_aea + +``` bash +aea fetch fetchai/thermometer_aea:0.30.5 --alias my_thermometer_aea cd my_thermometer_aea aea install aea build ``` + ``` bash aea create my_thermometer_aea cd my_thermometer_aea -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/thermometer:0.27.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/thermometer:0.27.6 aea install aea build -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' ``` + ``` bash -aea fetch fetchai/thermometer_client:0.32.4 --alias my_thermometer_client +aea fetch fetchai/thermometer_client:0.32.5 --alias my_thermometer_client cd my_thermometer_client aea install aea build ``` + ``` bash aea create my_thermometer_client cd my_thermometer_client -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/thermometer_client:0.26.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/thermometer_client:0.26.6 aea install aea build -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt aea add-key fetchai fetchai_private_key.txt --connection ``` + ``` bash aea generate-wealth fetchai ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea run ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -90,17 +103,20 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea run ``` + ``` bash cd .. aea delete my_thermometer_aea aea delete my_thermometer_client ``` + ``` yaml --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: 127.0.0.1:11001 @@ -109,4 +125,4 @@ config: local_uri: 127.0.0.1:9001 log_file: libp2p_node.log public_uri: 127.0.0.1:9001 -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-version.md b/tests/test_docs/test_bash_yaml/md_files/bash-version.md index 84a9a26ac0..11f7e1aef0 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-version.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-version.md @@ -1,3 +1,3 @@ ``` bash aea --version -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-wealth.md b/tests/test_docs/test_bash_yaml/md_files/bash-wealth.md index ca6d735c4b..af0fc22628 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-wealth.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-wealth.md @@ -1,32 +1,41 @@ ``` bash pip install aea-ledger-fetchai ``` + ``` bash pip install aea-ledger-ethereum ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key ethereum aea add-key ethereum ethereum_private_key.txt ``` + ``` bash aea get-address fetchai -``` +``` + ``` bash aea get-address ethereum ``` + ``` bash aea get-wealth fetchai ``` + ``` bash aea get-wealth ethereum ``` + ``` bash aea generate-wealth fetchai ``` + ``` bash aea generate-wealth ethereum ``` diff --git a/tests/test_docs/test_bash_yaml/md_files/bash-weather-skills.md b/tests/test_docs/test_bash_yaml/md_files/bash-weather-skills.md index 354fc87f85..dccacea9fd 100644 --- a/tests/test_docs/test_bash_yaml/md_files/bash-weather-skills.md +++ b/tests/test_docs/test_bash_yaml/md_files/bash-weather-skills.md @@ -7,87 +7,100 @@ "public_uri": "127.0.0.1:9001" } ``` + ``` bash -aea fetch fetchai/weather_station:0.32.4 --alias my_weather_station +aea fetch fetchai/weather_station:0.32.5 --alias my_weather_station cd my_weather_station aea install aea build ``` + ``` bash aea create my_weather_station cd my_weather_station -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/weather_station:0.27.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/weather_station:0.27.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea install aea build ``` + ``` bash -aea fetch fetchai/weather_client:0.33.4 --alias my_weather_client +aea fetch fetchai/weather_client:0.33.5 --alias my_weather_client cd my_weather_client aea install aea build ``` + ``` bash aea create my_weather_client cd my_weather_client -aea add connection fetchai/p2p_libp2p:0.27.4 -aea add connection fetchai/soef:0.27.5 -aea add connection fetchai/ledger:0.21.4 -aea add skill fetchai/weather_client:0.26.5 +aea add connection fetchai/p2p_libp2p:0.27.5 +aea add connection fetchai/soef:0.27.6 +aea add connection fetchai/ledger:0.21.5 +aea add skill fetchai/weather_client:0.26.6 aea config set --type dict agent.dependencies \ '{ "aea-ledger-fetchai": {"version": "<2.0.0,>=1.0.0"} }' -aea config set agent.default_connection fetchai/p2p_libp2p:0.27.4 +aea config set agent.default_connection fetchai/p2p_libp2p:0.27.5 aea config set --type dict agent.default_routing \ '{ - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5" + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6" }' aea install aea build ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea generate-key fetchai aea add-key fetchai fetchai_private_key.txt aea add-key fetchai fetchai_private_key.txt --connection ``` + ``` bash aea generate-wealth fetchai ``` + ``` bash aea generate-key fetchai fetchai_connection_private_key.txt aea add-key fetchai fetchai_connection_private_key.txt --connection ``` + ``` bash aea issue-certificates ``` + ``` bash aea run ``` + ``` bash aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ '{ @@ -98,17 +111,20 @@ aea config set --type dict vendor.fetchai.connections.p2p_libp2p.config \ "public_uri": "127.0.0.1:9001" }' ``` + ``` bash aea run ``` + ``` bash cd .. aea delete my_weather_station aea delete my_weather_client ``` + ``` yaml --- -public_id: fetchai/p2p_libp2p:0.27.4 +public_id: fetchai/p2p_libp2p:0.27.5 type: connection config: delegate_uri: 127.0.0.1:11001 @@ -117,4 +133,4 @@ config: local_uri: 127.0.0.1:9001 log_file: libp2p_node.log public_uri: 127.0.0.1:9001 -``` \ No newline at end of file +``` diff --git a/tests/test_docs/test_bash_yaml/test_demo_docs.py b/tests/test_docs/test_bash_yaml/test_demo_docs.py index 7ca341b812..56a95ba2ea 100644 --- a/tests/test_docs/test_bash_yaml/test_demo_docs.py +++ b/tests/test_docs/test_bash_yaml/test_demo_docs.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_build_aea_programmatically/__init__.py b/tests/test_docs/test_build_aea_programmatically/__init__.py index 2e81595ce3..440f9455c4 100644 --- a/tests/test_docs/test_build_aea_programmatically/__init__.py +++ b/tests/test_docs/test_build_aea_programmatically/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_build_aea_programmatically/programmatic_aea.py b/tests/test_docs/test_build_aea_programmatically/programmatic_aea.py index 6e73d98d72..60eddd9daa 100644 --- a/tests/test_docs/test_build_aea_programmatically/programmatic_aea.py +++ b/tests/test_docs/test_build_aea_programmatically/programmatic_aea.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_build_aea_programmatically/test_programmatic_aea.py b/tests/test_docs/test_build_aea_programmatically/test_programmatic_aea.py index 821d83b5c9..80a8f9d069 100644 --- a/tests/test_docs/test_build_aea_programmatically/test_programmatic_aea.py +++ b/tests/test_docs/test_build_aea_programmatically/test_programmatic_aea.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_cli_commands.py b/tests/test_docs/test_cli_commands.py index 747f162978..d27df993b2 100644 --- a/tests/test_docs/test_cli_commands.py +++ b/tests/test_docs/test_cli_commands.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_cli_vs_programmatic_aeas/__init__.py b/tests/test_docs/test_cli_vs_programmatic_aeas/__init__.py index 6a6bf7365a..bc17d72d10 100644 --- a/tests/test_docs/test_cli_vs_programmatic_aeas/__init__.py +++ b/tests/test_docs/test_cli_vs_programmatic_aeas/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_cli_vs_programmatic_aeas/programmatic_aea.py b/tests/test_docs/test_cli_vs_programmatic_aeas/programmatic_aea.py index 7491cc0abf..2f3f3edd36 100644 --- a/tests/test_docs/test_cli_vs_programmatic_aeas/programmatic_aea.py +++ b/tests/test_docs/test_cli_vs_programmatic_aeas/programmatic_aea.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_cli_vs_programmatic_aeas/test_cli_vs_programmatic_aea.py b/tests/test_docs/test_cli_vs_programmatic_aeas/test_cli_vs_programmatic_aea.py index 093576022e..a2d4961e4f 100644 --- a/tests/test_docs/test_cli_vs_programmatic_aeas/test_cli_vs_programmatic_aea.py +++ b/tests/test_docs/test_cli_vs_programmatic_aeas/test_cli_vs_programmatic_aea.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -68,7 +68,7 @@ def test_cli_programmatic_communication(self): """Test the communication of the two agents.""" weather_station = "weather_station" - self.fetch_agent("fetchai/weather_station:0.32.4", weather_station) + self.fetch_agent("fetchai/weather_station:0.32.5", weather_station) self.set_agent_context(weather_station) self.set_config( "vendor.fetchai.skills.weather_station.models.strategy.args.is_ledger_tx", diff --git a/tests/test_docs/test_data_models.py b/tests/test_docs/test_data_models.py index 156272bae8..4e6d09788e 100644 --- a/tests/test_docs/test_data_models.py +++ b/tests/test_docs/test_data_models.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_decision_maker_transaction/__init__.py b/tests/test_docs/test_decision_maker_transaction/__init__.py index 3c602eb119..30a1bc6130 100644 --- a/tests/test_docs/test_decision_maker_transaction/__init__.py +++ b/tests/test_docs/test_decision_maker_transaction/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_decision_maker_transaction/decision_maker_transaction.py b/tests/test_docs/test_decision_maker_transaction/decision_maker_transaction.py index cc920f4efd..3ef680c4e7 100644 --- a/tests/test_docs/test_decision_maker_transaction/decision_maker_transaction.py +++ b/tests/test_docs/test_decision_maker_transaction/decision_maker_transaction.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_decision_maker_transaction/test_decision_maker_transaction.py b/tests/test_docs/test_decision_maker_transaction/test_decision_maker_transaction.py index e9b15ce604..30789e0e93 100644 --- a/tests/test_docs/test_decision_maker_transaction/test_decision_maker_transaction.py +++ b/tests/test_docs/test_decision_maker_transaction/test_decision_maker_transaction.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_docs_http_connection_and_skill.py b/tests/test_docs/test_docs_http_connection_and_skill.py index 94977a2e93..7d851b92ac 100644 --- a/tests/test_docs/test_docs_http_connection_and_skill.py +++ b/tests/test_docs/test_docs_http_connection_and_skill.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_docs_protocol.py b/tests/test_docs/test_docs_protocol.py index 94f38c5ef0..d56341acf1 100644 --- a/tests/test_docs/test_docs_protocol.py +++ b/tests/test_docs/test_docs_protocol.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -68,7 +68,7 @@ def test_custom_protocol(self): ) def test_oef_search_protocol(self): - """Test the fetchai/oef_search:1.1.6 protocol documentation.""" + """Test the fetchai/oef_search:1.1.7 protocol documentation.""" # this is the offset of code blocks for the section under testing offset = 5 @@ -105,7 +105,7 @@ def test_oef_search_protocol(self): compare_enum_classes(ExpectedOefErrorOperation, ActualOefErrorOperation) def test_fipa_protocol(self): - """Test the fetchai/fipa:1.1.6 documentation.""" + """Test the fetchai/fipa:1.1.7 documentation.""" offset = 15 locals_dict = {"Enum": Enum} compile_and_exec(self.code_blocks[offset]["text"], locals_dict=locals_dict) diff --git a/tests/test_docs/test_docs_skill.py b/tests/test_docs/test_docs_skill.py index 95685a3a1e..27d0aa7367 100644 --- a/tests/test_docs/test_docs_skill.py +++ b/tests/test_docs/test_docs_skill.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_generic_step_by_step_guide/__init__.py b/tests/test_docs/test_generic_step_by_step_guide/__init__.py index a5bad6fbd2..25a4a04c16 100644 --- a/tests/test_docs/test_generic_step_by_step_guide/__init__.py +++ b/tests/test_docs/test_generic_step_by_step_guide/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_generic_step_by_step_guide/test_generic_step_by_step_guide.py b/tests/test_docs/test_generic_step_by_step_guide/test_generic_step_by_step_guide.py index 0ba0f41fa4..ad1b33ac92 100644 --- a/tests/test_docs/test_generic_step_by_step_guide/test_generic_step_by_step_guide.py +++ b/tests/test_docs/test_generic_step_by_step_guide/test_generic_step_by_step_guide.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_generic_storage.py b/tests/test_docs/test_generic_storage.py index cffc8b87e9..d209c56a75 100644 --- a/tests/test_docs/test_generic_storage.py +++ b/tests/test_docs/test_generic_storage.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_language_agnostic_definition.py b/tests/test_docs/test_language_agnostic_definition.py index 8595f178d3..d15262661b 100644 --- a/tests/test_docs/test_language_agnostic_definition.py +++ b/tests/test_docs/test_language_agnostic_definition.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -47,7 +47,7 @@ def _proto_snippet_selector(cls, block: Dict) -> bool: def setup_class(cls): """Set up the test.""" super().setup_class() - cls.code_blocks = list(filter(cls._proto_snippet_selector, cls.blocks)) + cls.code_blocks = list(filter(cls._proto_snippet_selector, cls.flat_blocks)) cls.actual_mail_base_file_content = MAIL_BASE_PROTO.read_text() cls.actual_default_message_file_content = DEFAULT_MESSAGE_PROTO.read_text() diff --git a/tests/test_docs/test_ledger_integration.py b/tests/test_docs/test_ledger_integration.py index 2b170c02ac..aaa81dfd31 100644 --- a/tests/test_docs/test_ledger_integration.py +++ b/tests/test_docs/test_ledger_integration.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_multiagent_manager.py b/tests/test_docs/test_multiagent_manager.py index 5bfcc86e84..e94d251654 100644 --- a/tests/test_docs/test_multiagent_manager.py +++ b/tests/test_docs/test_multiagent_manager.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_multiplexer_standalone/__init__.py b/tests/test_docs/test_multiplexer_standalone/__init__.py index 20c8124de8..a7a52b2674 100644 --- a/tests/test_docs/test_multiplexer_standalone/__init__.py +++ b/tests/test_docs/test_multiplexer_standalone/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_multiplexer_standalone/multiplexer_standalone.py b/tests/test_docs/test_multiplexer_standalone/multiplexer_standalone.py index 9a12c25380..43a9945555 100644 --- a/tests/test_docs/test_multiplexer_standalone/multiplexer_standalone.py +++ b/tests/test_docs/test_multiplexer_standalone/multiplexer_standalone.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_multiplexer_standalone/test_multiplexer_standalone.py b/tests/test_docs/test_multiplexer_standalone/test_multiplexer_standalone.py index 6d9fa665fc..50b012d970 100644 --- a/tests/test_docs/test_multiplexer_standalone/test_multiplexer_standalone.py +++ b/tests/test_docs/test_multiplexer_standalone/test_multiplexer_standalone.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_orm_integration/__init__.py b/tests/test_docs/test_orm_integration/__init__.py index 8143458399..ae75960487 100644 --- a/tests/test_docs/test_orm_integration/__init__.py +++ b/tests/test_docs/test_orm_integration/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_orm_integration/orm_seller_strategy.py b/tests/test_docs/test_orm_integration/orm_seller_strategy.py index 15195f64a3..264c7cf0a6 100644 --- a/tests/test_docs/test_orm_integration/orm_seller_strategy.py +++ b/tests/test_docs/test_orm_integration/orm_seller_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_orm_integration/test_orm_integration.py b/tests/test_docs/test_orm_integration/test_orm_integration.py index 8fbe984ddf..c24e026e75 100644 --- a/tests/test_docs/test_orm_integration/test_orm_integration.py +++ b/tests/test_docs/test_orm_integration/test_orm_integration.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -127,8 +127,8 @@ def test_orm_integration_docs_example(self): self.create_agents(seller_aea_name, buyer_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -139,15 +139,15 @@ def test_orm_integration_docs_example(self): # Setup seller self.set_agent_context(seller_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/thermometer:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/thermometer:0.27.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) # ejecting changes author and version! - self.eject_item("skill", "fetchai/thermometer:0.27.5") + self.eject_item("skill", "fetchai/thermometer:0.27.6") seller_skill_config_replacement = yaml.safe_load(seller_strategy_replacement) self.nested_set_config( "skills.thermometer.models.strategy.args", @@ -194,11 +194,11 @@ def test_orm_integration_docs_example(self): # Setup Buyer self.set_agent_context(buyer_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/thermometer_client:0.26.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/thermometer_client:0.26.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) buyer_skill_config_replacement = yaml.safe_load(buyer_strategy_replacement) diff --git a/tests/test_docs/test_query_language.py b/tests/test_docs/test_query_language.py index e903dd2f51..2f2a09edd5 100644 --- a/tests/test_docs/test_query_language.py +++ b/tests/test_docs/test_query_language.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_quickstart.py b/tests/test_docs/test_quickstart.py index b0dd3d9647..05a19616bb 100644 --- a/tests/test_docs/test_quickstart.py +++ b/tests/test_docs/test_quickstart.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -36,7 +36,7 @@ def test_correct_echo_string(): """Test the echo string in the quickstart is using the correct protocol specification id.""" file_path = Path(ROOT_DIR, "docs", "quickstart.md") bash_code_blocks = extract_code_blocks(filepath=file_path, filter_="bash") - echo_bloc = bash_code_blocks[19] + echo_bloc = bash_code_blocks[24] default_protocol_spec_id = echo_bloc.split(",")[2] assert ( str(DefaultMessage.protocol_specification_id) == default_protocol_spec_id diff --git a/tests/test_docs/test_simple_oef_usage.py b/tests/test_docs/test_simple_oef_usage.py index 34787e98d3..b688471616 100644 --- a/tests/test_docs/test_simple_oef_usage.py +++ b/tests/test_docs/test_simple_oef_usage.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_skill_guide/__init__.py b/tests/test_docs/test_skill_guide/__init__.py index f1cb844935..e1c613b6df 100644 --- a/tests/test_docs/test_skill_guide/__init__.py +++ b/tests/test_docs/test_skill_guide/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_skill_guide/test_skill_guide.py b/tests/test_docs/test_skill_guide/test_skill_guide.py index 006ce48de8..0ceafc3251 100644 --- a/tests/test_docs/test_skill_guide/test_skill_guide.py +++ b/tests/test_docs/test_skill_guide/test_skill_guide.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -77,7 +77,7 @@ def test_update_skill_and_run(self): simple_service_registration_aea = "simple_service_registration" self.fetch_agent( - "fetchai/simple_service_registration:0.32.4", + "fetchai/simple_service_registration:0.32.5", simple_service_registration_aea, ) self.set_agent_context(simple_service_registration_aea) @@ -99,7 +99,7 @@ def test_update_skill_and_run(self): self.set_config(setting_path, FetchAICrypto.identifier) default_routing = { - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # replace location @@ -112,9 +112,9 @@ def test_update_skill_and_run(self): skill_name = "my_search" skill_id = AUTHOR + "/" + skill_name + ":" + DEFAULT_VERSION self.scaffold_item("skill", skill_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) diff --git a/tests/test_docs/test_skill_testing.py b/tests/test_docs/test_skill_testing.py index 3561fe4efb..4b794086c1 100644 --- a/tests/test_docs/test_skill_testing.py +++ b/tests/test_docs/test_skill_testing.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_standalone_transaction/__init__.py b/tests/test_docs/test_standalone_transaction/__init__.py index b4381f5107..c4f0325f92 100644 --- a/tests/test_docs/test_standalone_transaction/__init__.py +++ b/tests/test_docs/test_standalone_transaction/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_standalone_transaction/standalone_transaction.py b/tests/test_docs/test_standalone_transaction/standalone_transaction.py index 132c949a8a..a53112101c 100644 --- a/tests/test_docs/test_standalone_transaction/standalone_transaction.py +++ b/tests/test_docs/test_standalone_transaction/standalone_transaction.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_docs/test_standalone_transaction/test_standalone_transaction.py b/tests/test_docs/test_standalone_transaction/test_standalone_transaction.py index 9110a8b58e..fa398eff00 100644 --- a/tests/test_docs/test_standalone_transaction/test_standalone_transaction.py +++ b/tests/test_docs/test_standalone_transaction/test_standalone_transaction.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_examples/__init__.py b/tests/test_examples/__init__.py index 2cc431a2d2..ab2cd526c1 100644 --- a/tests/test_examples/__init__.py +++ b/tests/test_examples/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_examples/test_gym_ex.py b/tests/test_examples/test_gym_ex.py index 8aa4c2f51a..706a11c742 100644 --- a/tests/test_examples/test_gym_ex.py +++ b/tests/test_examples/test_gym_ex.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_examples/test_http_client_connection_to_aries_cloud_agent.py b/tests/test_examples/test_http_client_connection_to_aries_cloud_agent.py index 060cce42b5..a39ceddf20 100644 --- a/tests/test_examples/test_http_client_connection_to_aries_cloud_agent.py +++ b/tests/test_examples/test_http_client_connection_to_aries_cloud_agent.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/__init__.py b/tests/test_packages/__init__.py index ebb6245127..7b6fd0d745 100644 --- a/tests/test_packages/__init__.py +++ b/tests/test_packages/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/__init__.py b/tests/test_packages/test_connections/__init__.py index 04810d8747..5030984162 100644 --- a/tests/test_packages/test_connections/__init__.py +++ b/tests/test_packages/test_connections/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/__init__.py b/tests/test_packages/test_connections/test_p2p_libp2p/__init__.py index 8982810ccf..7c071bc7ea 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/__init__.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_aea_cli.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_aea_cli.py index bc4896be3a..58a088bee7 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_aea_cli.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_aea_cli.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_build.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_build.py index 42fc66ddd7..187eadd4b1 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_build.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_build.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_communication.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_communication.py index a9c156361a..967c621226 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_communication.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_communication.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_errors.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_errors.py index 6b29d1c1a7..9c79a7c78b 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_errors.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_errors.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_fault_tolerance.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_fault_tolerance.py index c2320850be..31a053f983 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_fault_tolerance.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_fault_tolerance.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_integration.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_integration.py index d2283a4b72..baab076e4a 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_integration.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_integration.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_public_dht.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_public_dht.py index a9cda264b4..744a3271eb 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_public_dht.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_public_dht.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_p2p_libp2p/test_slow_queue.py b/tests/test_packages/test_connections/test_p2p_libp2p/test_slow_queue.py index c69e2361bb..2b9739a00a 100644 --- a/tests/test_packages/test_connections/test_p2p_libp2p/test_slow_queue.py +++ b/tests/test_packages/test_connections/test_p2p_libp2p/test_slow_queue.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_prometheus/__init__.py b/tests/test_packages/test_connections/test_prometheus/__init__.py index 8f835e5cd0..74fa74cab1 100644 --- a/tests/test_packages/test_connections/test_prometheus/__init__.py +++ b/tests/test_packages/test_connections/test_prometheus/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_prometheus/test_prometheus.py b/tests/test_packages/test_connections/test_prometheus/test_prometheus.py index a07e343bec..9da7462b56 100644 --- a/tests/test_packages/test_connections/test_prometheus/test_prometheus.py +++ b/tests/test_packages/test_connections/test_prometheus/test_prometheus.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -82,7 +82,7 @@ def setup(self): self.some_skill = "some/skill:0.1.0" self.agent_address = "my_address" self.agent_public_key = "my_public_key" - self.protocol_specification_id = PublicId.from_str("fetchai/prometheus:1.1.6") + self.protocol_specification_id = PublicId.from_str("fetchai/prometheus:1.1.7") identity = Identity( "name", address=self.agent_address, public_key=self.agent_public_key ) diff --git a/tests/test_packages/test_connections/test_webhook/__init__.py b/tests/test_packages/test_connections/test_webhook/__init__.py index c45c30f8eb..fae25a3809 100644 --- a/tests/test_packages/test_connections/test_webhook/__init__.py +++ b/tests/test_packages/test_connections/test_webhook/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_connections/test_webhook/test_webhook.py b/tests/test_packages/test_connections/test_webhook/test_webhook.py index e7314d5ca8..12c532bbbb 100644 --- a/tests/test_packages/test_connections/test_webhook/test_webhook.py +++ b/tests/test_packages/test_connections/test_webhook/test_webhook.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_contracts/__init__.py b/tests/test_packages/test_contracts/__init__.py index b4e227a56f..063b37c825 100644 --- a/tests/test_packages/test_contracts/__init__.py +++ b/tests/test_packages/test_contracts/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_protocols/__init__.py b/tests/test_packages/test_protocols/__init__.py index c307db184e..d24995fc5e 100644 --- a/tests/test_packages/test_protocols/__init__.py +++ b/tests/test_packages/test_protocols/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_protocols/test_aggregation.py b/tests/test_packages/test_protocols/test_aggregation.py index e47b32953e..6b97cd5825 100644 --- a/tests/test_packages/test_protocols/test_aggregation.py +++ b/tests/test_packages/test_protocols/test_aggregation.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_protocols/test_ml_trade.py b/tests/test_packages/test_protocols/test_ml_trade.py index b88ab8a976..a5cb7e4496 100644 --- a/tests/test_packages/test_protocols/test_ml_trade.py +++ b/tests/test_packages/test_protocols/test_ml_trade.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_protocols/test_prometheus.py b/tests/test_packages/test_protocols/test_prometheus.py index af5274c3b8..a17d48acfd 100644 --- a/tests/test_packages/test_protocols/test_prometheus.py +++ b/tests/test_packages/test_protocols/test_prometheus.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/__init__.py b/tests/test_packages/test_skills/__init__.py index d94158ffe4..8f5cbc5deb 100644 --- a/tests/test_packages/test_skills/__init__.py +++ b/tests/test_packages/test_skills/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_advanced_data_request/__init__.py b/tests/test_packages/test_skills/test_advanced_data_request/__init__.py index 407dd2925f..1e664ddb73 100644 --- a/tests/test_packages/test_skills/test_advanced_data_request/__init__.py +++ b/tests/test_packages/test_skills/test_advanced_data_request/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_advanced_data_request/test_behaviours.py b/tests/test_packages/test_skills/test_advanced_data_request/test_behaviours.py index 5c61564dd4..d5e9271bb3 100644 --- a/tests/test_packages/test_skills/test_advanced_data_request/test_behaviours.py +++ b/tests/test_packages/test_skills/test_advanced_data_request/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_advanced_data_request/test_handlers.py b/tests/test_packages/test_skills/test_advanced_data_request/test_handlers.py index 4c5f2a8c72..b6f0d75cea 100644 --- a/tests/test_packages/test_skills/test_advanced_data_request/test_handlers.py +++ b/tests/test_packages/test_skills/test_advanced_data_request/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_alice/__init__.py b/tests/test_packages/test_skills/test_aries_alice/__init__.py index 95892a33a2..7a5c5f0a89 100644 --- a/tests/test_packages/test_skills/test_aries_alice/__init__.py +++ b/tests/test_packages/test_skills/test_aries_alice/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_alice/intermediate_class.py b/tests/test_packages/test_skills/test_aries_alice/intermediate_class.py index a561cebf4b..947e14db51 100644 --- a/tests/test_packages/test_skills/test_aries_alice/intermediate_class.py +++ b/tests/test_packages/test_skills/test_aries_alice/intermediate_class.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_alice/test_behaviours.py b/tests/test_packages/test_skills/test_aries_alice/test_behaviours.py index 714a99ede9..32bb60ae21 100644 --- a/tests/test_packages/test_skills/test_aries_alice/test_behaviours.py +++ b/tests/test_packages/test_skills/test_aries_alice/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_alice/test_dialogues.py b/tests/test_packages/test_skills/test_aries_alice/test_dialogues.py index e2db027577..fdf0565545 100644 --- a/tests/test_packages/test_skills/test_aries_alice/test_dialogues.py +++ b/tests/test_packages/test_skills/test_aries_alice/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_alice/test_handlers.py b/tests/test_packages/test_skills/test_aries_alice/test_handlers.py index 90b6c56053..78b9360405 100644 --- a/tests/test_packages/test_skills/test_aries_alice/test_handlers.py +++ b/tests/test_packages/test_skills/test_aries_alice/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_alice/test_strategy.py b/tests/test_packages/test_skills/test_aries_alice/test_strategy.py index eb7261b704..2af9f0f993 100644 --- a/tests/test_packages/test_skills/test_aries_alice/test_strategy.py +++ b/tests/test_packages/test_skills/test_aries_alice/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_faber/__init__.py b/tests/test_packages/test_skills/test_aries_faber/__init__.py index f651e09c51..73a4efef71 100644 --- a/tests/test_packages/test_skills/test_aries_faber/__init__.py +++ b/tests/test_packages/test_skills/test_aries_faber/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_faber/intermediate_class.py b/tests/test_packages/test_skills/test_aries_faber/intermediate_class.py index 358219783b..7b14821188 100644 --- a/tests/test_packages/test_skills/test_aries_faber/intermediate_class.py +++ b/tests/test_packages/test_skills/test_aries_faber/intermediate_class.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_faber/test_behaviours.py b/tests/test_packages/test_skills/test_aries_faber/test_behaviours.py index c735fa79b6..688d99e186 100644 --- a/tests/test_packages/test_skills/test_aries_faber/test_behaviours.py +++ b/tests/test_packages/test_skills/test_aries_faber/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_faber/test_dialogues.py b/tests/test_packages/test_skills/test_aries_faber/test_dialogues.py index ccdc8aea33..dc19571e93 100644 --- a/tests/test_packages/test_skills/test_aries_faber/test_dialogues.py +++ b/tests/test_packages/test_skills/test_aries_faber/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_faber/test_handlers.py b/tests/test_packages/test_skills/test_aries_faber/test_handlers.py index a8a2b88877..0aa8c11b61 100644 --- a/tests/test_packages/test_skills/test_aries_faber/test_handlers.py +++ b/tests/test_packages/test_skills/test_aries_faber/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_aries_faber/test_strategy.py b/tests/test_packages/test_skills/test_aries_faber/test_strategy.py index 72dfac3089..7b298377c4 100644 --- a/tests/test_packages/test_skills/test_aries_faber/test_strategy.py +++ b/tests/test_packages/test_skills/test_aries_faber/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_carpark_detection/__init__.py b/tests/test_packages/test_skills/test_carpark_detection/__init__.py index 534cbf0bcc..58fc3c0907 100644 --- a/tests/test_packages/test_skills/test_carpark_detection/__init__.py +++ b/tests/test_packages/test_skills/test_carpark_detection/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_carpark_detection/test_database.py b/tests/test_packages/test_skills/test_carpark_detection/test_database.py index 8902a3d7ba..288016b08a 100644 --- a/tests/test_packages/test_skills/test_carpark_detection/test_database.py +++ b/tests/test_packages/test_skills/test_carpark_detection/test_database.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_carpark_detection/test_strategy.py b/tests/test_packages/test_skills/test_carpark_detection/test_strategy.py index 66da5a3e49..1f58db407e 100644 --- a/tests/test_packages/test_skills/test_carpark_detection/test_strategy.py +++ b/tests/test_packages/test_skills/test_carpark_detection/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw1/__init__.py b/tests/test_packages/test_skills/test_confirmation_aw1/__init__.py index 02caf85ada..8884069601 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw1/__init__.py +++ b/tests/test_packages/test_skills/test_confirmation_aw1/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw1/test_behaviours.py b/tests/test_packages/test_skills/test_confirmation_aw1/test_behaviours.py index 044bc55255..104c99e099 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw1/test_behaviours.py +++ b/tests/test_packages/test_skills/test_confirmation_aw1/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw1/test_dialogues.py b/tests/test_packages/test_skills/test_confirmation_aw1/test_dialogues.py index de121ae140..e4fd007637 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw1/test_dialogues.py +++ b/tests/test_packages/test_skills/test_confirmation_aw1/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw1/test_handlers.py b/tests/test_packages/test_skills/test_confirmation_aw1/test_handlers.py index 45f28314be..309d86d619 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw1/test_handlers.py +++ b/tests/test_packages/test_skills/test_confirmation_aw1/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw1/test_registration_db.py b/tests/test_packages/test_skills/test_confirmation_aw1/test_registration_db.py index 2047f8c3e8..9eca424303 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw1/test_registration_db.py +++ b/tests/test_packages/test_skills/test_confirmation_aw1/test_registration_db.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw1/test_strategy.py b/tests/test_packages/test_skills/test_confirmation_aw1/test_strategy.py index 1cbe3b3dda..b6bdba40ab 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw1/test_strategy.py +++ b/tests/test_packages/test_skills/test_confirmation_aw1/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw2/__init__.py b/tests/test_packages/test_skills/test_confirmation_aw2/__init__.py index 186118818e..d15567710b 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw2/__init__.py +++ b/tests/test_packages/test_skills/test_confirmation_aw2/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw2/intermediate_class.py b/tests/test_packages/test_skills/test_confirmation_aw2/intermediate_class.py index 7e5c628337..3036c7d0d1 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw2/intermediate_class.py +++ b/tests/test_packages/test_skills/test_confirmation_aw2/intermediate_class.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw2/test_handlers.py b/tests/test_packages/test_skills/test_confirmation_aw2/test_handlers.py index be89d11a25..60357984a6 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw2/test_handlers.py +++ b/tests/test_packages/test_skills/test_confirmation_aw2/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw2/test_registration_db.py b/tests/test_packages/test_skills/test_confirmation_aw2/test_registration_db.py index b03080ae55..f09245265c 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw2/test_registration_db.py +++ b/tests/test_packages/test_skills/test_confirmation_aw2/test_registration_db.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw2/test_strategy.py b/tests/test_packages/test_skills/test_confirmation_aw2/test_strategy.py index 2fd4e9b4e3..b029cb9b11 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw2/test_strategy.py +++ b/tests/test_packages/test_skills/test_confirmation_aw2/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw3/__init__.py b/tests/test_packages/test_skills/test_confirmation_aw3/__init__.py index 5604f92b66..1f38fefdc2 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw3/__init__.py +++ b/tests/test_packages/test_skills/test_confirmation_aw3/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw3/intermediate_class.py b/tests/test_packages/test_skills/test_confirmation_aw3/intermediate_class.py index 18b4198a24..0bd57a1ce7 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw3/intermediate_class.py +++ b/tests/test_packages/test_skills/test_confirmation_aw3/intermediate_class.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw3/test_behaviours.py b/tests/test_packages/test_skills/test_confirmation_aw3/test_behaviours.py index ab7c8e9ba0..f7a7f60ac1 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw3/test_behaviours.py +++ b/tests/test_packages/test_skills/test_confirmation_aw3/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw3/test_dialogues.py b/tests/test_packages/test_skills/test_confirmation_aw3/test_dialogues.py index 6a74144010..379991cb7f 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw3/test_dialogues.py +++ b/tests/test_packages/test_skills/test_confirmation_aw3/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw3/test_handlers.py b/tests/test_packages/test_skills/test_confirmation_aw3/test_handlers.py index f76199d824..763ebdcc4a 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw3/test_handlers.py +++ b/tests/test_packages/test_skills/test_confirmation_aw3/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw3/test_registration_db.py b/tests/test_packages/test_skills/test_confirmation_aw3/test_registration_db.py index 51b1a4e9b0..c041df5eaf 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw3/test_registration_db.py +++ b/tests/test_packages/test_skills/test_confirmation_aw3/test_registration_db.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_confirmation_aw3/test_strategy.py b/tests/test_packages/test_skills/test_confirmation_aw3/test_strategy.py index 135d04f7de..5a0aeb5eb8 100644 --- a/tests/test_packages/test_skills/test_confirmation_aw3/test_strategy.py +++ b/tests/test_packages/test_skills/test_confirmation_aw3/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_erc1155_deploy/__init__.py b/tests/test_packages/test_skills/test_erc1155_deploy/__init__.py index 52531dc31c..91ad51f2c0 100644 --- a/tests/test_packages/test_skills/test_erc1155_deploy/__init__.py +++ b/tests/test_packages/test_skills/test_erc1155_deploy/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_erc1155_deploy/intermediate_class.py b/tests/test_packages/test_skills/test_erc1155_deploy/intermediate_class.py index 183a27619c..2eab01ee7b 100644 --- a/tests/test_packages/test_skills/test_erc1155_deploy/intermediate_class.py +++ b/tests/test_packages/test_skills/test_erc1155_deploy/intermediate_class.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_erc1155_deploy/test_behaviours.py b/tests/test_packages/test_skills/test_erc1155_deploy/test_behaviours.py index d4d1090c04..1f6dcb3b5b 100644 --- a/tests/test_packages/test_skills/test_erc1155_deploy/test_behaviours.py +++ b/tests/test_packages/test_skills/test_erc1155_deploy/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_erc1155_deploy/test_dialogues.py b/tests/test_packages/test_skills/test_erc1155_deploy/test_dialogues.py index d7ce1019ea..b90aa12e45 100644 --- a/tests/test_packages/test_skills/test_erc1155_deploy/test_dialogues.py +++ b/tests/test_packages/test_skills/test_erc1155_deploy/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_erc1155_deploy/test_handlers.py b/tests/test_packages/test_skills/test_erc1155_deploy/test_handlers.py index aeb30a217b..288ed0cee6 100644 --- a/tests/test_packages/test_skills/test_erc1155_deploy/test_handlers.py +++ b/tests/test_packages/test_skills/test_erc1155_deploy/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_erc1155_deploy/test_strategy.py b/tests/test_packages/test_skills/test_erc1155_deploy/test_strategy.py index 3b749db110..f16e5e8dba 100644 --- a/tests/test_packages/test_skills/test_erc1155_deploy/test_strategy.py +++ b/tests/test_packages/test_skills/test_erc1155_deploy/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_fetch_block/__init__.py b/tests/test_packages/test_skills/test_fetch_block/__init__.py index 8718f6c71e..f2b8e4f9aa 100644 --- a/tests/test_packages/test_skills/test_fetch_block/__init__.py +++ b/tests/test_packages/test_skills/test_fetch_block/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_fetch_block/test_behaviours.py b/tests/test_packages/test_skills/test_fetch_block/test_behaviours.py index bbabe87e36..bac1df3272 100644 --- a/tests/test_packages/test_skills/test_fetch_block/test_behaviours.py +++ b/tests/test_packages/test_skills/test_fetch_block/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_fetch_block/test_handlers.py b/tests/test_packages/test_skills/test_fetch_block/test_handlers.py index 6e85889d57..176d84cc1d 100644 --- a/tests/test_packages/test_skills/test_fetch_block/test_handlers.py +++ b/tests/test_packages/test_skills/test_fetch_block/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_hello_world/__init__.py b/tests/test_packages/test_skills/test_hello_world/__init__.py index 2ce97a6ec6..3a1eeff113 100644 --- a/tests/test_packages/test_skills/test_hello_world/__init__.py +++ b/tests/test_packages/test_skills/test_hello_world/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_hello_world/test_behaviours.py b/tests/test_packages/test_skills/test_hello_world/test_behaviours.py index 2dbe70c6ac..57376ab528 100644 --- a/tests/test_packages/test_skills/test_hello_world/test_behaviours.py +++ b/tests/test_packages/test_skills/test_hello_world/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_http_echo/__init__.py b/tests/test_packages/test_skills/test_http_echo/__init__.py index 73a89f8ac4..2aebdfd235 100644 --- a/tests/test_packages/test_skills/test_http_echo/__init__.py +++ b/tests/test_packages/test_skills/test_http_echo/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_http_echo/test_dialogues.py b/tests/test_packages/test_skills/test_http_echo/test_dialogues.py index 579a51a77a..01a327311a 100644 --- a/tests/test_packages/test_skills/test_http_echo/test_dialogues.py +++ b/tests/test_packages/test_skills/test_http_echo/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_http_echo/test_handlers.py b/tests/test_packages/test_skills/test_http_echo/test_handlers.py index 454d8f364e..2bd7dacc5d 100644 --- a/tests/test_packages/test_skills/test_http_echo/test_handlers.py +++ b/tests/test_packages/test_skills/test_http_echo/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_ml_data_provider/__init__.py b/tests/test_packages/test_skills/test_ml_data_provider/__init__.py index 10e5185be5..3f3a78eb20 100644 --- a/tests/test_packages/test_skills/test_ml_data_provider/__init__.py +++ b/tests/test_packages/test_skills/test_ml_data_provider/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_ml_data_provider/test_dialogues.py b/tests/test_packages/test_skills/test_ml_data_provider/test_dialogues.py index 2994172ab4..870651c94a 100644 --- a/tests/test_packages/test_skills/test_ml_data_provider/test_dialogues.py +++ b/tests/test_packages/test_skills/test_ml_data_provider/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_ml_data_provider/test_handlers.py b/tests/test_packages/test_skills/test_ml_data_provider/test_handlers.py index bfe7479145..2b37832f30 100644 --- a/tests/test_packages/test_skills/test_ml_data_provider/test_handlers.py +++ b/tests/test_packages/test_skills/test_ml_data_provider/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_ml_data_provider/test_strategy.py b/tests/test_packages/test_skills/test_ml_data_provider/test_strategy.py index a25773c571..d1bb50f507 100644 --- a/tests/test_packages/test_skills/test_ml_data_provider/test_strategy.py +++ b/tests/test_packages/test_skills/test_ml_data_provider/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_ml_train/__init__.py b/tests/test_packages/test_skills/test_ml_train/__init__.py index a3a96ff285..8229da60d5 100644 --- a/tests/test_packages/test_skills/test_ml_train/__init__.py +++ b/tests/test_packages/test_skills/test_ml_train/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_ml_train/helpers.py b/tests/test_packages/test_skills/test_ml_train/helpers.py index 5d39402280..94060c108a 100644 --- a/tests/test_packages/test_skills/test_ml_train/helpers.py +++ b/tests/test_packages/test_skills/test_ml_train/helpers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_ml_train/test_behaviours.py b/tests/test_packages/test_skills/test_ml_train/test_behaviours.py index 3bf04f97d4..2449313e26 100644 --- a/tests/test_packages/test_skills/test_ml_train/test_behaviours.py +++ b/tests/test_packages/test_skills/test_ml_train/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_ml_train/test_dialogues.py b/tests/test_packages/test_skills/test_ml_train/test_dialogues.py index d21846cfdd..4a44401411 100644 --- a/tests/test_packages/test_skills/test_ml_train/test_dialogues.py +++ b/tests/test_packages/test_skills/test_ml_train/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_ml_train/test_handlers.py b/tests/test_packages/test_skills/test_ml_train/test_handlers.py index cade44ce8d..3a6447cc60 100644 --- a/tests/test_packages/test_skills/test_ml_train/test_handlers.py +++ b/tests/test_packages/test_skills/test_ml_train/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_ml_train/test_strategy.py b/tests/test_packages/test_skills/test_ml_train/test_strategy.py index 16d6fdd99a..f669b8deeb 100644 --- a/tests/test_packages/test_skills/test_ml_train/test_strategy.py +++ b/tests/test_packages/test_skills/test_ml_train/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_ml_train/test_task.py b/tests/test_packages/test_skills/test_ml_train/test_task.py index aaf127dbbd..610bdde647 100644 --- a/tests/test_packages/test_skills/test_ml_train/test_task.py +++ b/tests/test_packages/test_skills/test_ml_train/test_task.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_registration_aw1/__init__.py b/tests/test_packages/test_skills/test_registration_aw1/__init__.py index 100d64b551..1d19bda317 100644 --- a/tests/test_packages/test_skills/test_registration_aw1/__init__.py +++ b/tests/test_packages/test_skills/test_registration_aw1/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_registration_aw1/intermediate_class.py b/tests/test_packages/test_skills/test_registration_aw1/intermediate_class.py index 63d0a8f60a..78e9829c06 100644 --- a/tests/test_packages/test_skills/test_registration_aw1/intermediate_class.py +++ b/tests/test_packages/test_skills/test_registration_aw1/intermediate_class.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_registration_aw1/test_behaviours.py b/tests/test_packages/test_skills/test_registration_aw1/test_behaviours.py index 36c1f04f1e..50dfa7df55 100644 --- a/tests/test_packages/test_skills/test_registration_aw1/test_behaviours.py +++ b/tests/test_packages/test_skills/test_registration_aw1/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_registration_aw1/test_dialogues.py b/tests/test_packages/test_skills/test_registration_aw1/test_dialogues.py index 2a849988e3..2047300997 100644 --- a/tests/test_packages/test_skills/test_registration_aw1/test_dialogues.py +++ b/tests/test_packages/test_skills/test_registration_aw1/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_registration_aw1/test_handlers.py b/tests/test_packages/test_skills/test_registration_aw1/test_handlers.py index 685815f084..602c8ecb1a 100644 --- a/tests/test_packages/test_skills/test_registration_aw1/test_handlers.py +++ b/tests/test_packages/test_skills/test_registration_aw1/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_registration_aw1/test_strategy.py b/tests/test_packages/test_skills/test_registration_aw1/test_strategy.py index bf3980b65a..d3c2eda736 100644 --- a/tests/test_packages/test_skills/test_registration_aw1/test_strategy.py +++ b/tests/test_packages/test_skills/test_registration_aw1/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_aggregation/__init__.py b/tests/test_packages/test_skills/test_simple_aggregation/__init__.py index e9c4839bc0..cab13b7089 100644 --- a/tests/test_packages/test_skills/test_simple_aggregation/__init__.py +++ b/tests/test_packages/test_skills/test_simple_aggregation/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_aggregation/test_behaviours.py b/tests/test_packages/test_skills/test_simple_aggregation/test_behaviours.py index 20745f3ef0..9eeaa57adf 100644 --- a/tests/test_packages/test_skills/test_simple_aggregation/test_behaviours.py +++ b/tests/test_packages/test_skills/test_simple_aggregation/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_aggregation/test_handlers.py b/tests/test_packages/test_skills/test_simple_aggregation/test_handlers.py index 2a944940ec..54e8a3ef07 100644 --- a/tests/test_packages/test_skills/test_simple_aggregation/test_handlers.py +++ b/tests/test_packages/test_skills/test_simple_aggregation/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_aggregation/test_strategy.py b/tests/test_packages/test_skills/test_simple_aggregation/test_strategy.py index c986f48096..eb87ece9ae 100644 --- a/tests/test_packages/test_skills/test_simple_aggregation/test_strategy.py +++ b/tests/test_packages/test_skills/test_simple_aggregation/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_buyer/__init__.py b/tests/test_packages/test_skills/test_simple_buyer/__init__.py index fad30cc82f..7cc2bff62e 100644 --- a/tests/test_packages/test_skills/test_simple_buyer/__init__.py +++ b/tests/test_packages/test_skills/test_simple_buyer/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_data_request/__init__.py b/tests/test_packages/test_skills/test_simple_data_request/__init__.py index e1f2c1ceed..f578e3a86b 100644 --- a/tests/test_packages/test_skills/test_simple_data_request/__init__.py +++ b/tests/test_packages/test_skills/test_simple_data_request/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_data_request/intermediate_class.py b/tests/test_packages/test_skills/test_simple_data_request/intermediate_class.py index 7ce8ebe339..bfbf4a4cc6 100644 --- a/tests/test_packages/test_skills/test_simple_data_request/intermediate_class.py +++ b/tests/test_packages/test_skills/test_simple_data_request/intermediate_class.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_data_request/test_behaviours.py b/tests/test_packages/test_skills/test_simple_data_request/test_behaviours.py index 4a53240936..6ee0a8b837 100644 --- a/tests/test_packages/test_skills/test_simple_data_request/test_behaviours.py +++ b/tests/test_packages/test_skills/test_simple_data_request/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_data_request/test_dialogues.py b/tests/test_packages/test_skills/test_simple_data_request/test_dialogues.py index f8771e290c..7af4d80589 100644 --- a/tests/test_packages/test_skills/test_simple_data_request/test_dialogues.py +++ b/tests/test_packages/test_skills/test_simple_data_request/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_data_request/test_handlers.py b/tests/test_packages/test_skills/test_simple_data_request/test_handlers.py index 968a0f6514..bea147dff5 100644 --- a/tests/test_packages/test_skills/test_simple_data_request/test_handlers.py +++ b/tests/test_packages/test_skills/test_simple_data_request/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_oracle/__init__.py b/tests/test_packages/test_skills/test_simple_oracle/__init__.py index 42494469dc..c7036fa5e8 100644 --- a/tests/test_packages/test_skills/test_simple_oracle/__init__.py +++ b/tests/test_packages/test_skills/test_simple_oracle/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_oracle/test_behaviours.py b/tests/test_packages/test_skills/test_simple_oracle/test_behaviours.py index a4fdf592fd..89ac51288a 100644 --- a/tests/test_packages/test_skills/test_simple_oracle/test_behaviours.py +++ b/tests/test_packages/test_skills/test_simple_oracle/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_oracle/test_handlers.py b/tests/test_packages/test_skills/test_simple_oracle/test_handlers.py index 23abc84b62..262f3de45c 100644 --- a/tests/test_packages/test_skills/test_simple_oracle/test_handlers.py +++ b/tests/test_packages/test_skills/test_simple_oracle/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_oracle_client/__init__.py b/tests/test_packages/test_skills/test_simple_oracle_client/__init__.py index 597a85c3d5..82522906ff 100644 --- a/tests/test_packages/test_skills/test_simple_oracle_client/__init__.py +++ b/tests/test_packages/test_skills/test_simple_oracle_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_oracle_client/test_behaviours.py b/tests/test_packages/test_skills/test_simple_oracle_client/test_behaviours.py index 18ad52cf7a..fe57808385 100644 --- a/tests/test_packages/test_skills/test_simple_oracle_client/test_behaviours.py +++ b/tests/test_packages/test_skills/test_simple_oracle_client/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_oracle_client/test_handlers.py b/tests/test_packages/test_skills/test_simple_oracle_client/test_handlers.py index be0464b1f9..b4519298ab 100644 --- a/tests/test_packages/test_skills/test_simple_oracle_client/test_handlers.py +++ b/tests/test_packages/test_skills/test_simple_oracle_client/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_seller/__init__.py b/tests/test_packages/test_skills/test_simple_seller/__init__.py index 48600b68f3..fe4ecacf55 100644 --- a/tests/test_packages/test_skills/test_simple_seller/__init__.py +++ b/tests/test_packages/test_skills/test_simple_seller/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_seller/test_strategy.py b/tests/test_packages/test_skills/test_simple_seller/test_strategy.py index 2075e50760..633f6eac1e 100644 --- a/tests/test_packages/test_skills/test_simple_seller/test_strategy.py +++ b/tests/test_packages/test_skills/test_simple_seller/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_service_registration/__init__.py b/tests/test_packages/test_skills/test_simple_service_registration/__init__.py index 370c7d2138..61881aaf1e 100644 --- a/tests/test_packages/test_skills/test_simple_service_registration/__init__.py +++ b/tests/test_packages/test_skills/test_simple_service_registration/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_service_registration/test_behaviours.py b/tests/test_packages/test_skills/test_simple_service_registration/test_behaviours.py index 4280d91baa..d63b804f15 100644 --- a/tests/test_packages/test_skills/test_simple_service_registration/test_behaviours.py +++ b/tests/test_packages/test_skills/test_simple_service_registration/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_service_registration/test_dialogues.py b/tests/test_packages/test_skills/test_simple_service_registration/test_dialogues.py index 400d377664..69156122ee 100644 --- a/tests/test_packages/test_skills/test_simple_service_registration/test_dialogues.py +++ b/tests/test_packages/test_skills/test_simple_service_registration/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_service_registration/test_handlers.py b/tests/test_packages/test_skills/test_simple_service_registration/test_handlers.py index 6adb9ce7a1..7bd365e9a9 100644 --- a/tests/test_packages/test_skills/test_simple_service_registration/test_handlers.py +++ b/tests/test_packages/test_skills/test_simple_service_registration/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_service_registration/test_strategy.py b/tests/test_packages/test_skills/test_simple_service_registration/test_strategy.py index b3c5bc46aa..230a6d7fd0 100644 --- a/tests/test_packages/test_skills/test_simple_service_registration/test_strategy.py +++ b/tests/test_packages/test_skills/test_simple_service_registration/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_service_search/__init__.py b/tests/test_packages/test_skills/test_simple_service_search/__init__.py index 2643346863..95d6c00124 100644 --- a/tests/test_packages/test_skills/test_simple_service_search/__init__.py +++ b/tests/test_packages/test_skills/test_simple_service_search/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_service_search/test_behaviours.py b/tests/test_packages/test_skills/test_simple_service_search/test_behaviours.py index cfc6c42518..945f4b4d29 100644 --- a/tests/test_packages/test_skills/test_simple_service_search/test_behaviours.py +++ b/tests/test_packages/test_skills/test_simple_service_search/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_service_search/test_dialogues.py b/tests/test_packages/test_skills/test_simple_service_search/test_dialogues.py index b4bf6039e6..b745552f14 100644 --- a/tests/test_packages/test_skills/test_simple_service_search/test_dialogues.py +++ b/tests/test_packages/test_skills/test_simple_service_search/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_service_search/test_handlers.py b/tests/test_packages/test_skills/test_simple_service_search/test_handlers.py index 2de0fe726b..f867f57f0d 100644 --- a/tests/test_packages/test_skills/test_simple_service_search/test_handlers.py +++ b/tests/test_packages/test_skills/test_simple_service_search/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_simple_service_search/test_strategy.py b/tests/test_packages/test_skills/test_simple_service_search/test_strategy.py index 32f7bb994d..5047ca1642 100644 --- a/tests/test_packages/test_skills/test_simple_service_search/test_strategy.py +++ b/tests/test_packages/test_skills/test_simple_service_search/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control/__init__.py b/tests/test_packages/test_skills/test_tac_control/__init__.py index a78fa6f302..cea410cbfb 100644 --- a/tests/test_packages/test_skills/test_tac_control/__init__.py +++ b/tests/test_packages/test_skills/test_tac_control/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control/test_behaviours.py b/tests/test_packages/test_skills/test_tac_control/test_behaviours.py index 0c18d77de8..96c0f7f144 100644 --- a/tests/test_packages/test_skills/test_tac_control/test_behaviours.py +++ b/tests/test_packages/test_skills/test_tac_control/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control/test_dialogues.py b/tests/test_packages/test_skills/test_tac_control/test_dialogues.py index 39baa1d5f7..5cb2b59f48 100644 --- a/tests/test_packages/test_skills/test_tac_control/test_dialogues.py +++ b/tests/test_packages/test_skills/test_tac_control/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control/test_game.py b/tests/test_packages/test_skills/test_tac_control/test_game.py index efc77e71d0..3ac22b7720 100644 --- a/tests/test_packages/test_skills/test_tac_control/test_game.py +++ b/tests/test_packages/test_skills/test_tac_control/test_game.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control/test_handlers.py b/tests/test_packages/test_skills/test_tac_control/test_handlers.py index 809270d268..714af892a0 100644 --- a/tests/test_packages/test_skills/test_tac_control/test_handlers.py +++ b/tests/test_packages/test_skills/test_tac_control/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control/test_helpers.py b/tests/test_packages/test_skills/test_tac_control/test_helpers.py index e7ce7baaf9..c85e1e3761 100644 --- a/tests/test_packages/test_skills/test_tac_control/test_helpers.py +++ b/tests/test_packages/test_skills/test_tac_control/test_helpers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control/test_parameters.py b/tests/test_packages/test_skills/test_tac_control/test_parameters.py index 30d9020173..f5be8f5a2f 100644 --- a/tests/test_packages/test_skills/test_tac_control/test_parameters.py +++ b/tests/test_packages/test_skills/test_tac_control/test_parameters.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control_contract/__init__.py b/tests/test_packages/test_skills/test_tac_control_contract/__init__.py index 6584b9f31d..6de884e256 100644 --- a/tests/test_packages/test_skills/test_tac_control_contract/__init__.py +++ b/tests/test_packages/test_skills/test_tac_control_contract/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control_contract/test_behaviours.py b/tests/test_packages/test_skills/test_tac_control_contract/test_behaviours.py index 2743b66acb..05d68145be 100644 --- a/tests/test_packages/test_skills/test_tac_control_contract/test_behaviours.py +++ b/tests/test_packages/test_skills/test_tac_control_contract/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control_contract/test_dialogues.py b/tests/test_packages/test_skills/test_tac_control_contract/test_dialogues.py index d88762eaca..b1703cc027 100644 --- a/tests/test_packages/test_skills/test_tac_control_contract/test_dialogues.py +++ b/tests/test_packages/test_skills/test_tac_control_contract/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control_contract/test_handlers.py b/tests/test_packages/test_skills/test_tac_control_contract/test_handlers.py index 45fc086dc6..b90376bcd6 100644 --- a/tests/test_packages/test_skills/test_tac_control_contract/test_handlers.py +++ b/tests/test_packages/test_skills/test_tac_control_contract/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control_contract/test_helpers.py b/tests/test_packages/test_skills/test_tac_control_contract/test_helpers.py index 76a21d7dd7..2b12bac419 100644 --- a/tests/test_packages/test_skills/test_tac_control_contract/test_helpers.py +++ b/tests/test_packages/test_skills/test_tac_control_contract/test_helpers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_control_contract/test_parameters.py b/tests/test_packages/test_skills/test_tac_control_contract/test_parameters.py index 01ca69bb17..9fd289400c 100644 --- a/tests/test_packages/test_skills/test_tac_control_contract/test_parameters.py +++ b/tests/test_packages/test_skills/test_tac_control_contract/test_parameters.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_negotiation/__init__.py b/tests/test_packages/test_skills/test_tac_negotiation/__init__.py index 397951f3ff..cc594af785 100644 --- a/tests/test_packages/test_skills/test_tac_negotiation/__init__.py +++ b/tests/test_packages/test_skills/test_tac_negotiation/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_negotiation/test_behaviours.py b/tests/test_packages/test_skills/test_tac_negotiation/test_behaviours.py index 2e86c34c82..e638f4e219 100644 --- a/tests/test_packages/test_skills/test_tac_negotiation/test_behaviours.py +++ b/tests/test_packages/test_skills/test_tac_negotiation/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_negotiation/test_dialogues.py b/tests/test_packages/test_skills/test_tac_negotiation/test_dialogues.py index fdc9761cea..fdba5ab74d 100644 --- a/tests/test_packages/test_skills/test_tac_negotiation/test_dialogues.py +++ b/tests/test_packages/test_skills/test_tac_negotiation/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_negotiation/test_handlers.py b/tests/test_packages/test_skills/test_tac_negotiation/test_handlers.py index 77b27f01f1..48b54ddac8 100644 --- a/tests/test_packages/test_skills/test_tac_negotiation/test_handlers.py +++ b/tests/test_packages/test_skills/test_tac_negotiation/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_negotiation/test_helpers.py b/tests/test_packages/test_skills/test_tac_negotiation/test_helpers.py index d48d385694..19d2fc0852 100644 --- a/tests/test_packages/test_skills/test_tac_negotiation/test_helpers.py +++ b/tests/test_packages/test_skills/test_tac_negotiation/test_helpers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_negotiation/test_logical.py b/tests/test_packages/test_skills/test_tac_negotiation/test_logical.py index 726149b409..8a04b6154c 100644 --- a/tests/test_packages/test_skills/test_tac_negotiation/test_logical.py +++ b/tests/test_packages/test_skills/test_tac_negotiation/test_logical.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_negotiation/test_strategy.py b/tests/test_packages/test_skills/test_tac_negotiation/test_strategy.py index e2f6ff1f35..0ea635f154 100644 --- a/tests/test_packages/test_skills/test_tac_negotiation/test_strategy.py +++ b/tests/test_packages/test_skills/test_tac_negotiation/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_negotiation/test_transactions.py b/tests/test_packages/test_skills/test_tac_negotiation/test_transactions.py index 9b4ef2bb89..3a9139e935 100644 --- a/tests/test_packages/test_skills/test_tac_negotiation/test_transactions.py +++ b/tests/test_packages/test_skills/test_tac_negotiation/test_transactions.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_participation/__init__.py b/tests/test_packages/test_skills/test_tac_participation/__init__.py index 56e863f60f..ce68e4d018 100644 --- a/tests/test_packages/test_skills/test_tac_participation/__init__.py +++ b/tests/test_packages/test_skills/test_tac_participation/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_participation/test_behaviours.py b/tests/test_packages/test_skills/test_tac_participation/test_behaviours.py index bd38d18cb8..75008b43c4 100644 --- a/tests/test_packages/test_skills/test_tac_participation/test_behaviours.py +++ b/tests/test_packages/test_skills/test_tac_participation/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_participation/test_dialogues.py b/tests/test_packages/test_skills/test_tac_participation/test_dialogues.py index faf403d1e8..cc5e3f6efa 100644 --- a/tests/test_packages/test_skills/test_tac_participation/test_dialogues.py +++ b/tests/test_packages/test_skills/test_tac_participation/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_participation/test_game.py b/tests/test_packages/test_skills/test_tac_participation/test_game.py index 9832560696..94e45b7363 100644 --- a/tests/test_packages/test_skills/test_tac_participation/test_game.py +++ b/tests/test_packages/test_skills/test_tac_participation/test_game.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_tac_participation/test_handlers.py b/tests/test_packages/test_skills/test_tac_participation/test_handlers.py index c05f8fc007..5dc4675d15 100644 --- a/tests/test_packages/test_skills/test_tac_participation/test_handlers.py +++ b/tests/test_packages/test_skills/test_tac_participation/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_thermometer/__init__.py b/tests/test_packages/test_skills/test_thermometer/__init__.py index e55308e236..df727dbe0e 100644 --- a/tests/test_packages/test_skills/test_thermometer/__init__.py +++ b/tests/test_packages/test_skills/test_thermometer/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills/test_thermometer/test_strategy.py b/tests/test_packages/test_skills/test_thermometer/test_strategy.py index 7700592ef0..d03a1c04d3 100644 --- a/tests/test_packages/test_skills/test_thermometer/test_strategy.py +++ b/tests/test_packages/test_skills/test_thermometer/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills_integration/__init__.py b/tests/test_packages/test_skills_integration/__init__.py index 67001e753e..bebc5f03b7 100644 --- a/tests/test_packages/test_skills_integration/__init__.py +++ b/tests/test_packages/test_skills_integration/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills_integration/test_aries_demo.py b/tests/test_packages/test_skills_integration/test_aries_demo.py index e11bea27c6..faa5d09eab 100644 --- a/tests/test_packages/test_skills_integration/test_aries_demo.py +++ b/tests/test_packages/test_skills_integration/test_aries_demo.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages/test_skills_integration/test_carpark.py b/tests/test_packages/test_skills_integration/test_carpark.py index 9d9b63f0e8..c33aff64a7 100644 --- a/tests/test_packages/test_skills_integration/test_carpark.py +++ b/tests/test_packages/test_skills_integration/test_carpark.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -52,8 +52,8 @@ def test_carpark(self): self.create_agents(carpark_aea_name, carpark_client_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -64,11 +64,11 @@ def test_carpark(self): # Setup agent one self.set_agent_context(carpark_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/carpark_detection:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/carpark_detection:0.27.6") setting_path = ( "vendor.fetchai.skills.carpark_detection.models.strategy.args.is_ledger_tx" ) @@ -102,11 +102,11 @@ def test_carpark(self): # Setup agent two self.set_agent_context(carpark_client_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/carpark_client:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/carpark_client:0.27.6") setting_path = ( "vendor.fetchai.skills.carpark_client.models.strategy.args.is_ledger_tx" ) @@ -232,8 +232,8 @@ def test_carpark(self): self.create_agents(carpark_aea_name, carpark_client_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -244,17 +244,17 @@ def test_carpark(self): # Setup agent one self.set_agent_context(carpark_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/carpark_detection:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/carpark_detection:0.27.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/car_detector:0.32.4", carpark_aea_name + "fetchai/car_detector:0.32.5", carpark_aea_name ) assert ( diff == [] @@ -285,17 +285,17 @@ def test_carpark(self): # Setup agent two self.set_agent_context(carpark_client_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/carpark_client:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/carpark_client:0.27.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/car_data_buyer:0.33.4", carpark_client_aea_name + "fetchai/car_data_buyer:0.33.5", carpark_client_aea_name ) assert ( diff == [] diff --git a/tests/test_packages/test_skills_integration/test_coin_price.py b/tests/test_packages/test_skills_integration/test_coin_price.py index fe0eed4101..31238799c7 100644 --- a/tests/test_packages/test_skills_integration/test_coin_price.py +++ b/tests/test_packages/test_skills_integration/test_coin_price.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -49,15 +49,15 @@ def test_coin_price(self): self.generate_private_key() self.add_private_key() - self.add_item("connection", "fetchai/http_client:0.24.5") - self.add_item("connection", "fetchai/http_server:0.23.5") - self.add_item("connection", "fetchai/prometheus:0.9.5") - self.add_item("skill", "fetchai/advanced_data_request:0.7.5") - self.set_config("agent.default_connection", "fetchai/http_server:0.23.5") + self.add_item("connection", "fetchai/http_client:0.24.6") + self.add_item("connection", "fetchai/http_server:0.23.6") + self.add_item("connection", "fetchai/prometheus:0.9.6") + self.add_item("skill", "fetchai/advanced_data_request:0.7.6") + self.set_config("agent.default_connection", "fetchai/http_server:0.23.6") default_routing = { - "fetchai/http:1.1.6": "fetchai/http_client:0.24.5", - "fetchai/prometheus:1.1.6": "fetchai/prometheus:0.9.5", + "fetchai/http:1.1.7": "fetchai/http_client:0.24.6", + "fetchai/prometheus:1.1.7": "fetchai/prometheus:0.9.6", } setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) @@ -69,7 +69,7 @@ def test_coin_price(self): ) self.set_config( "vendor.fetchai.connections.http_server.config.target_skill_id", - "fetchai/advanced_data_request:0.7.5", + "fetchai/advanced_data_request:0.7.6", ) self.set_config( "vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.use_http_server", @@ -88,7 +88,7 @@ def test_coin_price(self): ) diff = self.difference_to_fetched_agent( - "fetchai/coin_price_feed:0.15.4", coin_price_feed_aea_name + "fetchai/coin_price_feed:0.15.5", coin_price_feed_aea_name ) assert ( diff == [] diff --git a/tests/test_packages/test_skills_integration/test_erc1155.py b/tests/test_packages/test_skills_integration/test_erc1155.py index 7668da20b0..59e6c2796d 100644 --- a/tests/test_packages/test_skills_integration/test_erc1155.py +++ b/tests/test_packages/test_skills_integration/test_erc1155.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -57,9 +57,9 @@ def test_generic(self): # add ethereum ledger in both configuration files default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -70,10 +70,10 @@ def test_generic(self): # add packages for agent one self.set_agent_context(deploy_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") self.set_config("agent.default_ledger", EthereumCrypto.identifier) self.nested_set_config( "agent.required_ledgers", @@ -81,7 +81,7 @@ def test_generic(self): ) setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) - self.add_item("skill", "fetchai/erc1155_deploy:0.31.5") + self.add_item("skill", "fetchai/erc1155_deploy:0.31.6") self.generate_private_key(EthereumCrypto.identifier) self.add_private_key(EthereumCrypto.identifier, ETHEREUM_PRIVATE_KEY_FILE) @@ -125,7 +125,7 @@ def test_generic(self): self.nested_set_config(setting_path, location) diff = self.difference_to_fetched_agent( - "fetchai/erc1155_deployer:0.34.4", deploy_aea_name + "fetchai/erc1155_deployer:0.34.5", deploy_aea_name ) assert ( diff == [] @@ -133,10 +133,10 @@ def test_generic(self): # add packages for agent two self.set_agent_context(client_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") self.set_config("agent.default_ledger", EthereumCrypto.identifier) self.nested_set_config( "agent.required_ledgers", @@ -144,7 +144,7 @@ def test_generic(self): ) setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) - self.add_item("skill", "fetchai/erc1155_client:0.29.5") + self.add_item("skill", "fetchai/erc1155_client:0.29.6") self.generate_private_key(EthereumCrypto.identifier) self.add_private_key(EthereumCrypto.identifier, ETHEREUM_PRIVATE_KEY_FILE) @@ -187,7 +187,7 @@ def test_generic(self): self.nested_set_config(setting_path, location) diff = self.difference_to_fetched_agent( - "fetchai/erc1155_client:0.34.4", client_aea_name + "fetchai/erc1155_client:0.34.5", client_aea_name ) assert ( diff == [] diff --git a/tests/test_packages/test_skills_integration/test_fetch_block.py b/tests/test_packages/test_skills_integration/test_fetch_block.py index 258df10249..069542babb 100644 --- a/tests/test_packages/test_skills_integration/test_fetch_block.py +++ b/tests/test_packages/test_skills_integration/test_fetch_block.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -32,9 +32,9 @@ def test_fetch_block(self): """Run the fetch block skill sequence.""" self.generate_private_key() self.add_private_key() - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/fetch_block:0.12.5") - self.set_config("agent.default_connection", "fetchai/ledger:0.21.4") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/fetch_block:0.12.6") + self.set_config("agent.default_connection", "fetchai/ledger:0.21.5") self.run_install() diff --git a/tests/test_packages/test_skills_integration/test_generic.py b/tests/test_packages/test_skills_integration/test_generic.py index 2c4f0aeba8..dd4c0098c9 100644 --- a/tests/test_packages/test_skills_integration/test_generic.py +++ b/tests/test_packages/test_skills_integration/test_generic.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -53,8 +53,8 @@ def test_generic(self, pytestconfig): self.create_agents(seller_aea_name, buyer_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -65,11 +65,11 @@ def test_generic(self, pytestconfig): # prepare seller agent self.set_agent_context(seller_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/generic_seller:0.28.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/generic_seller:0.28.6") setting_path = ( "vendor.fetchai.skills.generic_seller.models.strategy.args.is_ledger_tx" ) @@ -107,11 +107,11 @@ def test_generic(self, pytestconfig): # prepare buyer agent self.set_agent_context(buyer_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/generic_buyer:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/generic_buyer:0.27.6") setting_path = ( "vendor.fetchai.skills.generic_buyer.models.strategy.args.is_ledger_tx" ) @@ -242,8 +242,8 @@ def test_generic(self, pytestconfig): self.create_agents(seller_aea_name, buyer_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -254,17 +254,17 @@ def test_generic(self, pytestconfig): # prepare seller agent self.set_agent_context(seller_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/generic_seller:0.28.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/generic_seller:0.28.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/generic_seller:0.29.4", seller_aea_name + "fetchai/generic_seller:0.29.5", seller_aea_name ) assert ( diff == [] @@ -299,18 +299,18 @@ def test_generic(self, pytestconfig): # prepare buyer agent self.set_agent_context(buyer_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/generic_buyer:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/generic_buyer:0.27.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/generic_buyer:0.30.4", buyer_aea_name + "fetchai/generic_buyer:0.30.5", buyer_aea_name ) assert ( diff == [] diff --git a/tests/test_packages/test_skills_integration/test_gym.py b/tests/test_packages/test_skills_integration/test_gym.py index 5b8aea23e5..726503ea7c 100644 --- a/tests/test_packages/test_skills_integration/test_gym.py +++ b/tests/test_packages/test_skills_integration/test_gym.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -34,15 +34,15 @@ def test_gym(self): """Run the gym skill sequence.""" self.generate_private_key() self.add_private_key() - self.add_item("skill", "fetchai/gym:0.21.5") + self.add_item("skill", "fetchai/gym:0.21.6") self.run_install() # change default connection setting_path = "agent.default_connection" - self.set_config(setting_path, "fetchai/gym:0.20.5") + self.set_config(setting_path, "fetchai/gym:0.20.6") diff = self.difference_to_fetched_agent( - "fetchai/gym_aea:0.26.4", self.agent_name + "fetchai/gym_aea:0.26.5", self.agent_name ) assert ( diff == [] diff --git a/tests/test_packages/test_skills_integration/test_ml_skills.py b/tests/test_packages/test_skills_integration/test_ml_skills.py index 42dfffa18b..41537289f2 100644 --- a/tests/test_packages/test_skills_integration/test_ml_skills.py +++ b/tests/test_packages/test_skills_integration/test_ml_skills.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -64,8 +64,8 @@ def test_ml_skills(self, pytestconfig): self.create_agents(data_provider_aea_name, model_trainer_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -76,11 +76,11 @@ def test_ml_skills(self, pytestconfig): # prepare data provider agent self.set_agent_context(data_provider_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/ml_data_provider:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/ml_data_provider:0.27.6") setting_path = ( "vendor.fetchai.skills.ml_data_provider.models.strategy.args.is_ledger_tx" ) @@ -115,11 +115,11 @@ def test_ml_skills(self, pytestconfig): # prepare model trainer agent self.set_agent_context(model_trainer_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/ml_train:0.29.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/ml_train:0.29.6") setting_path = ( "vendor.fetchai.skills.ml_train.models.strategy.args.is_ledger_tx" ) @@ -249,8 +249,8 @@ def test_ml_skills(self, pytestconfig): self.create_agents(data_provider_aea_name, model_trainer_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -261,17 +261,17 @@ def test_ml_skills(self, pytestconfig): # prepare data provider agent self.set_agent_context(data_provider_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/ml_data_provider:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/ml_data_provider:0.27.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/ml_data_provider:0.32.4", data_provider_aea_name + "fetchai/ml_data_provider:0.32.5", data_provider_aea_name ) assert ( diff == [] @@ -303,17 +303,17 @@ def test_ml_skills(self, pytestconfig): # prepare model trainer agent self.set_agent_context(model_trainer_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/ml_train:0.29.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/ml_train:0.29.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/ml_model_trainer:0.33.4", model_trainer_aea_name + "fetchai/ml_model_trainer:0.33.5", model_trainer_aea_name ) assert ( diff == [] diff --git a/tests/test_packages/test_skills_integration/test_simple_aggregation.py b/tests/test_packages/test_skills_integration/test_simple_aggregation.py index 91176ba567..94f6cbd370 100644 --- a/tests/test_packages/test_skills_integration/test_simple_aggregation.py +++ b/tests/test_packages/test_skills_integration/test_simple_aggregation.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -71,18 +71,18 @@ def test_simple_aggregation(self): for (i, agent) in enumerate(agents): # add packages for agent self.set_agent_context(agent) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/http_client:0.24.5") - self.add_item("connection", "fetchai/http_server:0.23.5") - self.add_item("connection", "fetchai/soef:0.27.5") - self.add_item("connection", "fetchai/prometheus:0.9.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/http_client:0.24.6") + self.add_item("connection", "fetchai/http_server:0.23.6") + self.add_item("connection", "fetchai/soef:0.27.6") + self.add_item("connection", "fetchai/prometheus:0.9.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") self.nested_set_config( "agent.required_ledgers", [FetchAICrypto.identifier], ) - self.add_item("skill", "fetchai/advanced_data_request:0.7.5") - self.add_item("skill", "fetchai/simple_aggregation:0.3.5") + self.add_item("skill", "fetchai/advanced_data_request:0.7.6") + self.add_item("skill", "fetchai/simple_aggregation:0.3.6") self.set_config( "vendor.fetchai.skills.advanced_data_request.models.advanced_data_request_model.args.decimals", @@ -97,7 +97,7 @@ def test_simple_aggregation(self): setting_path = ( "vendor.fetchai.connections.http_server.config.target_skill_id" ) - self.set_config(setting_path, "fetchai/advanced_data_request:0.7.5") + self.set_config(setting_path, "fetchai/advanced_data_request:0.7.6") self.set_config( "vendor.fetchai.skills.simple_aggregation.models.strategy.args.quantity_name", "price", @@ -146,7 +146,7 @@ def test_simple_aggregation(self): if i == 0: diff = self.difference_to_fetched_agent( - "fetchai/simple_aggregator:0.5.4", agent + "fetchai/simple_aggregator:0.5.5", agent ) assert ( diff == [] diff --git a/tests/test_packages/test_skills_integration/test_simple_oracle.py b/tests/test_packages/test_skills_integration/test_simple_oracle.py index 83d4a99f21..d029667fa4 100644 --- a/tests/test_packages/test_skills_integration/test_simple_oracle.py +++ b/tests/test_packages/test_skills_integration/test_simple_oracle.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -71,18 +71,18 @@ def test_oracle( self.create_agents(oracle_agent_name, client_agent_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/http:1.1.6": "fetchai/http_client:0.24.5", - "fetchai/prometheus:1.1.6": "fetchai/prometheus:0.9.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/http:1.1.7": "fetchai/http_client:0.24.6", + "fetchai/prometheus:1.1.7": "fetchai/prometheus:0.9.6", } # add packages for oracle agent self.set_agent_context(oracle_agent_name) - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("connection", "fetchai/http_client:0.24.5") - self.add_item("connection", "fetchai/prometheus:0.9.5") - self.set_config("agent.default_connection", "fetchai/ledger:0.21.4") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("connection", "fetchai/http_client:0.24.6") + self.add_item("connection", "fetchai/prometheus:0.9.6") + self.set_config("agent.default_connection", "fetchai/ledger:0.21.5") self.set_config("agent.default_ledger", ledger_id) self.nested_set_config( "agent.required_ledgers", @@ -90,9 +90,9 @@ def test_oracle( ) setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) - self.add_item("skill", "fetchai/advanced_data_request:0.7.5") - self.add_item("contract", "fetchai/oracle:0.12.2") - self.add_item("skill", "fetchai/simple_oracle:0.16.4") + self.add_item("skill", "fetchai/advanced_data_request:0.7.6") + self.add_item("contract", "fetchai/oracle:0.12.3") + self.add_item("skill", "fetchai/simple_oracle:0.16.5") # set up data request skill to fetch coin price self.set_config( @@ -129,7 +129,7 @@ def test_oracle( self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/coin_price_oracle:0.17.5", oracle_agent_name + "fetchai/coin_price_oracle:0.17.6", oracle_agent_name ) assert ( diff == [] @@ -157,9 +157,9 @@ def test_oracle( # add packages for oracle client agent self.set_agent_context(client_agent_name) - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("connection", "fetchai/http_client:0.24.5") - self.set_config("agent.default_connection", "fetchai/ledger:0.21.4") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("connection", "fetchai/http_client:0.24.6") + self.set_config("agent.default_connection", "fetchai/ledger:0.21.5") self.set_config("agent.default_ledger", ledger_id) self.nested_set_config( "agent.required_ledgers", @@ -167,15 +167,15 @@ def test_oracle( ) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/http:1.1.6": "fetchai/http_client:0.24.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/http:1.1.7": "fetchai/http_client:0.24.6", } setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) - self.add_item("contract", "fetchai/oracle_client:0.11.2") - self.add_item("contract", "fetchai/fet_erc20:0.9.1") - self.add_item("skill", "fetchai/simple_oracle_client:0.13.4") + self.add_item("contract", "fetchai/oracle_client:0.11.3") + self.add_item("contract", "fetchai/fet_erc20:0.9.2") + self.add_item("skill", "fetchai/simple_oracle_client:0.13.5") self.generate_private_key(ledger_id) self.add_private_key(ledger_id, private_key_file) @@ -186,7 +186,7 @@ def test_oracle( self.set_config(setting_path, query_function) diff = self.difference_to_fetched_agent( - "fetchai/coin_price_oracle_client:0.12.5", client_agent_name + "fetchai/coin_price_oracle_client:0.12.6", client_agent_name ) assert ( diff == [] @@ -303,18 +303,18 @@ def test_oracle( self.create_agents(oracle_agent_name, client_agent_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/http:1.1.6": "fetchai/http_client:0.24.5", - "fetchai/prometheus:1.1.6": "fetchai/prometheus:0.9.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/http:1.1.7": "fetchai/http_client:0.24.6", + "fetchai/prometheus:1.1.7": "fetchai/prometheus:0.9.6", } # add packages for oracle agent self.set_agent_context(oracle_agent_name) - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("connection", "fetchai/http_client:0.24.5") - self.add_item("connection", "fetchai/prometheus:0.9.5") - self.set_config("agent.default_connection", "fetchai/ledger:0.21.4") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("connection", "fetchai/http_client:0.24.6") + self.add_item("connection", "fetchai/prometheus:0.9.6") + self.set_config("agent.default_connection", "fetchai/ledger:0.21.5") self.set_config("agent.default_ledger", ledger_id) self.nested_set_config( "agent.required_ledgers", @@ -322,9 +322,9 @@ def test_oracle( ) setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) - self.add_item("skill", "fetchai/advanced_data_request:0.7.5") - self.add_item("contract", "fetchai/oracle:0.12.2") - self.add_item("skill", "fetchai/simple_oracle:0.16.4") + self.add_item("skill", "fetchai/advanced_data_request:0.7.6") + self.add_item("contract", "fetchai/oracle:0.12.3") + self.add_item("skill", "fetchai/simple_oracle:0.16.5") # set up data request skill to fetch coin price self.set_config( @@ -373,9 +373,9 @@ def test_oracle( # add packages for oracle client agent self.set_agent_context(client_agent_name) - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("connection", "fetchai/http_client:0.24.5") - self.set_config("agent.default_connection", "fetchai/ledger:0.21.4") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("connection", "fetchai/http_client:0.24.6") + self.set_config("agent.default_connection", "fetchai/ledger:0.21.5") self.set_config("agent.default_ledger", ledger_id) self.nested_set_config( "agent.required_ledgers", @@ -383,15 +383,15 @@ def test_oracle( ) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/http:1.1.6": "fetchai/http_client:0.24.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/http:1.1.7": "fetchai/http_client:0.24.6", } setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) - self.add_item("contract", "fetchai/oracle_client:0.11.2") - self.add_item("contract", "fetchai/fet_erc20:0.9.1") - self.add_item("skill", "fetchai/simple_oracle_client:0.13.4") + self.add_item("contract", "fetchai/oracle_client:0.11.3") + self.add_item("contract", "fetchai/fet_erc20:0.9.2") + self.add_item("skill", "fetchai/simple_oracle_client:0.13.5") self.generate_private_key(ledger_id) self.add_private_key(ledger_id, private_key_file) diff --git a/tests/test_packages/test_skills_integration/test_tac.py b/tests/test_packages/test_skills_integration/test_tac.py index bff8a4a258..b020d2f642 100644 --- a/tests/test_packages/test_skills_integration/test_tac.py +++ b/tests/test_packages/test_skills_integration/test_tac.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -80,7 +80,7 @@ def test_tac(self): ) default_routing = { - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -95,17 +95,17 @@ def test_tac(self): # prepare tac controller for test self.set_agent_context(tac_controller_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.add_item("skill", "fetchai/tac_control:0.25.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.add_item("skill", "fetchai/tac_control:0.25.6") self.set_config("agent.default_ledger", FetchAICrypto.identifier) setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/tac_controller:0.30.4", tac_controller_name + "fetchai/tac_controller:0.30.5", tac_controller_name ) assert ( diff == [] @@ -142,8 +142,8 @@ def test_tac(self): self.nested_set_config(setting_path, data) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } self.run_cli_command("build", cwd=self._get_cwd()) @@ -155,12 +155,12 @@ def test_tac(self): (tac_aea_two, NON_GENESIS_CONFIG_TWO), ): self.set_agent_context(agent_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/tac_participation:0.25.5") - self.add_item("skill", "fetchai/tac_negotiation:0.29.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/tac_participation:0.25.6") + self.add_item("skill", "fetchai/tac_negotiation:0.29.6") self.set_config("agent.default_ledger", FetchAICrypto.identifier) setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) @@ -173,7 +173,7 @@ def test_tac(self): self.nested_set_config(setting_path, data) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/tac_participant:0.32.4", agent_name + "fetchai/tac_participant:0.32.5", agent_name ) assert ( diff == [] @@ -359,9 +359,9 @@ def test_tac(self): # default routing (both for controller and participants) default_routing = { - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -376,11 +376,11 @@ def test_tac(self): # prepare tac controller for test self.set_agent_context(tac_controller_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/tac_control_contract:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/tac_control_contract:0.27.6") self.set_config("agent.default_ledger", FetchAICrypto.identifier) self.nested_set_config( "agent.required_ledgers", @@ -457,7 +457,7 @@ def test_tac(self): # check manually built agent is the same as the fetched one diff = self.difference_to_fetched_agent( - "fetchai/tac_controller_contract:0.32.4", tac_controller_name + "fetchai/tac_controller_contract:0.32.5", tac_controller_name ) assert ( diff == [] @@ -503,14 +503,14 @@ def test_tac(self): self.set_agent_context(agent_name) # add items - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/tac_participation:0.25.5") - self.add_item("skill", "fetchai/tac_negotiation:0.29.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/tac_participation:0.25.6") + self.add_item("skill", "fetchai/tac_negotiation:0.29.6") # set AEA config (no component overrides) - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") self.set_config("agent.default_ledger", FetchAICrypto.identifier) self.nested_set_config( "agent.required_ledgers", @@ -611,7 +611,7 @@ def test_tac(self): self.nested_set_config(setting_path, data) diff = self.difference_to_fetched_agent( - "fetchai/tac_participant_contract:0.22.4", agent_name + "fetchai/tac_participant_contract:0.22.5", agent_name ) assert ( diff == [] @@ -784,8 +784,8 @@ def test_tac(self): "received match_accept_w_inform from", "sending propose to", "sending accept to", - "requesting batch transaction hash, sending get_raw_message to fetchai/erc1155:0.23.2, message=", - "requesting batch atomic swap transaction, sending get_raw_transaction to fetchai/erc1155:0.23.2, message=", + "requesting batch transaction hash, sending get_raw_message to fetchai/erc1155:0.23.3, message=", + "requesting batch atomic swap transaction, sending get_raw_transaction to fetchai/erc1155:0.23.3, message=", "received raw transaction=", "received raw message=", "proposing the transaction to the decision maker. Waiting for confirmation ...", @@ -819,8 +819,8 @@ def test_tac(self): "received match_accept_w_inform from", "sending propose to", "sending accept to", - "requesting batch transaction hash, sending get_raw_message to fetchai/erc1155:0.23.2, message=", - "requesting batch atomic swap transaction, sending get_raw_transaction to fetchai/erc1155:0.23.2, message=", + "requesting batch transaction hash, sending get_raw_message to fetchai/erc1155:0.23.3, message=", + "requesting batch atomic swap transaction, sending get_raw_transaction to fetchai/erc1155:0.23.3, message=", "received raw transaction=", "received raw message=", "proposing the transaction to the decision maker. Waiting for confirmation ...", @@ -872,9 +872,9 @@ def test_tac(self): # default routing (both for controller and participants) default_routing = { - "fetchai/contract_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/contract_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -889,11 +889,11 @@ def test_tac(self): # prepare tac controller for test self.set_agent_context(tac_controller_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/tac_control_contract:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/tac_control_contract:0.27.6") self.set_config("agent.default_ledger", FetchAICrypto.identifier) self.nested_set_config( "agent.required_ledgers", @@ -973,7 +973,7 @@ def test_tac(self): # check manually built agent is the same as the fetched one diff = self.difference_to_fetched_agent( - "fetchai/tac_controller_contract:0.32.4", tac_controller_name + "fetchai/tac_controller_contract:0.32.5", tac_controller_name ) assert ( diff == [] @@ -1012,14 +1012,14 @@ def test_tac(self): self.set_agent_context(agent_name) # add items - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/tac_participation:0.25.5") - self.add_item("skill", "fetchai/tac_negotiation:0.29.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/tac_participation:0.25.6") + self.add_item("skill", "fetchai/tac_negotiation:0.29.6") # set AEA config (no component overrides) - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") self.set_config("agent.default_ledger", FetchAICrypto.identifier) self.nested_set_config( "agent.required_ledgers", @@ -1125,7 +1125,7 @@ def test_tac(self): self.nested_set_config(setting_path, data) diff = self.difference_to_fetched_agent( - "fetchai/tac_participant_contract:0.22.4", agent_name + "fetchai/tac_participant_contract:0.22.5", agent_name ) assert ( diff == [] @@ -1293,7 +1293,7 @@ def test_tac(self): "sending propose to", "sending accept to", "sending match_accept_w_inform to", - "requesting batch atomic swap transaction, sending get_raw_transaction to fetchai/erc1155:0.23.2, message=", + "requesting batch atomic swap transaction, sending get_raw_transaction to fetchai/erc1155:0.23.3, message=", "received raw transaction=", "proposing the transaction to the decision maker. Waiting for confirmation ...", "received signed_transaction from decision_maker, message=", @@ -1327,7 +1327,7 @@ def test_tac(self): "sending propose to", "sending accept to", "sending match_accept_w_inform to", - "requesting batch atomic swap transaction, sending get_raw_transaction to fetchai/erc1155:0.23.2, message=", + "requesting batch atomic swap transaction, sending get_raw_transaction to fetchai/erc1155:0.23.3, message=", "received raw transaction=", "proposing the transaction to the decision maker. Waiting for confirmation ...", "received signed_transaction from decision_maker, message=", diff --git a/tests/test_packages/test_skills_integration/test_thermometer.py b/tests/test_packages/test_skills_integration/test_thermometer.py index f391c768dc..b2563d56e9 100644 --- a/tests/test_packages/test_skills_integration/test_thermometer.py +++ b/tests/test_packages/test_skills_integration/test_thermometer.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -52,8 +52,8 @@ def test_thermometer(self): self.create_agents(thermometer_aea_name, thermometer_client_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -64,8 +64,8 @@ def test_thermometer(self): # add packages for agent one and run it self.set_agent_context(thermometer_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") self.set_config( "agent.dependencies", '{\ @@ -73,9 +73,9 @@ def test_thermometer(self): }', type_="dict", ) - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/thermometer:0.27.5") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/thermometer:0.27.6") setting_path = ( "vendor.fetchai.skills.thermometer.models.strategy.args.is_ledger_tx" ) @@ -107,8 +107,8 @@ def test_thermometer(self): # add packages for agent two and run it self.set_agent_context(thermometer_client_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") self.set_config( "agent.dependencies", '{\ @@ -116,9 +116,9 @@ def test_thermometer(self): }', type_="dict", ) - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/thermometer_client:0.26.5") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/thermometer_client:0.26.6") setting_path = ( "vendor.fetchai.skills.thermometer_client.models.strategy.args.is_ledger_tx" ) @@ -250,8 +250,8 @@ def test_thermometer(self): self.create_agents(thermometer_aea_name, thermometer_client_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -262,8 +262,8 @@ def test_thermometer(self): # add packages for agent one and run it self.set_agent_context(thermometer_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") self.set_config( "agent.dependencies", '{\ @@ -271,15 +271,15 @@ def test_thermometer(self): }', type_="dict", ) - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/thermometer:0.27.5") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/thermometer:0.27.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/thermometer_aea:0.30.4", thermometer_aea_name + "fetchai/thermometer_aea:0.30.5", thermometer_aea_name ) assert ( diff == [] @@ -308,8 +308,8 @@ def test_thermometer(self): # add packages for agent two and run it self.set_agent_context(thermometer_client_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") self.set_config( "agent.dependencies", '{\ @@ -317,15 +317,15 @@ def test_thermometer(self): }', type_="dict", ) - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/thermometer_client:0.26.5") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/thermometer_client:0.26.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/thermometer_client:0.32.4", thermometer_client_aea_name + "fetchai/thermometer_client:0.32.5", thermometer_client_aea_name ) assert ( diff == [] diff --git a/tests/test_packages/test_skills_integration/test_weather.py b/tests/test_packages/test_skills_integration/test_weather.py index 023c5d24e4..622fcff1f2 100644 --- a/tests/test_packages/test_skills_integration/test_weather.py +++ b/tests/test_packages/test_skills_integration/test_weather.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -51,8 +51,8 @@ def test_weather(self): self.create_agents(weather_station_aea_name, weather_client_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -63,8 +63,8 @@ def test_weather(self): # prepare agent one (weather station) self.set_agent_context(weather_station_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") self.set_config( "agent.dependencies", '{\ @@ -72,9 +72,9 @@ def test_weather(self): }', type_="dict", ) - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/weather_station:0.27.5") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/weather_station:0.27.6") dotted_path = ( "vendor.fetchai.skills.weather_station.models.strategy.args.is_ledger_tx" ) @@ -108,8 +108,8 @@ def test_weather(self): # prepare agent two (weather client) self.set_agent_context(weather_client_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") self.set_config( "agent.dependencies", '{\ @@ -117,10 +117,10 @@ def test_weather(self): }', type_="dict", ) - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/weather_client:0.26.5") - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/weather_client:0.26.6") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") dotted_path = ( "vendor.fetchai.skills.weather_client.models.strategy.args.is_ledger_tx" ) @@ -247,8 +247,8 @@ def test_weather(self): self.create_agents(weather_station_aea_name, weather_client_aea_name) default_routing = { - "fetchai/ledger_api:1.1.6": "fetchai/ledger:0.21.4", - "fetchai/oef_search:1.1.6": "fetchai/soef:0.27.5", + "fetchai/ledger_api:1.1.7": "fetchai/ledger:0.21.5", + "fetchai/oef_search:1.1.7": "fetchai/soef:0.27.6", } # generate random location @@ -259,8 +259,8 @@ def test_weather(self): # add packages for agent one self.set_agent_context(weather_station_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") self.set_config( "agent.dependencies", '{\ @@ -268,15 +268,15 @@ def test_weather(self): }', type_="dict", ) - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/weather_station:0.27.5") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/weather_station:0.27.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/weather_station:0.32.4", weather_station_aea_name + "fetchai/weather_station:0.32.5", weather_station_aea_name ) assert ( diff == [] @@ -307,8 +307,8 @@ def test_weather(self): # add packages for agent two self.set_agent_context(weather_client_aea_name) - self.add_item("connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/soef:0.27.5") + self.add_item("connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/soef:0.27.6") self.set_config( "agent.dependencies", '{\ @@ -316,15 +316,15 @@ def test_weather(self): }', type_="dict", ) - self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.4") - self.add_item("connection", "fetchai/ledger:0.21.4") - self.add_item("skill", "fetchai/weather_client:0.26.5") + self.set_config("agent.default_connection", "fetchai/p2p_libp2p:0.27.5") + self.add_item("connection", "fetchai/ledger:0.21.5") + self.add_item("skill", "fetchai/weather_client:0.26.6") setting_path = "agent.default_routing" self.nested_set_config(setting_path, default_routing) self.run_install() diff = self.difference_to_fetched_agent( - "fetchai/weather_client:0.33.4", weather_client_aea_name + "fetchai/weather_client:0.33.5", weather_client_aea_name ) assert ( diff == [] diff --git a/tests/test_packages_for_aea_tests/__init__.py b/tests/test_packages_for_aea_tests/__init__.py index 558b6b2daf..6a7bc6bda6 100644 --- a/tests/test_packages_for_aea_tests/__init__.py +++ b/tests/test_packages_for_aea_tests/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/__init__.py b/tests/test_packages_for_aea_tests/test_connections/__init__.py index b4e227a56f..063b37c825 100644 --- a/tests/test_packages_for_aea_tests/test_connections/__init__.py +++ b/tests/test_packages_for_aea_tests/test_connections/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_gym/__init__.py b/tests/test_packages_for_aea_tests/test_connections/test_gym/__init__.py index 68f02c2b44..49780e50aa 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_gym/__init__.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_gym/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_gym/test_gym.py b/tests/test_packages_for_aea_tests/test_connections/test_gym/test_gym.py index de0a4d2a9d..fba802b4ba 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_gym/test_gym.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_gym/test_gym.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_local/__init__.py b/tests/test_packages_for_aea_tests/test_connections/test_local/__init__.py index 6533651ec6..98b7f123f3 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_local/__init__.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_local/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_local/test_misc.py b/tests/test_packages_for_aea_tests/test_connections/test_local/test_misc.py index 09705b2930..2b8a1b9a32 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_local/test_misc.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_local/test_misc.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_local/test_search_services.py b/tests/test_packages_for_aea_tests/test_connections/test_local/test_search_services.py index 834097a004..86ed6f4eee 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_local/test_search_services.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_local/test_search_services.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_oef/__init__.py b/tests/test_packages_for_aea_tests/test_connections/test_oef/__init__.py index 1e5fa9487c..a944feac58 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_oef/__init__.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_oef/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_oef/test_communication.py b/tests/test_packages_for_aea_tests/test_connections/test_oef/test_communication.py index 6c9dc380d9..be081997ef 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_oef/test_communication.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_oef/test_communication.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_oef/test_models.py b/tests/test_packages_for_aea_tests/test_connections/test_oef/test_models.py index 79f9de2dc1..5ba7ec53e0 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_oef/test_models.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_oef/test_models.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_oef/test_oef_serializer.py b/tests/test_packages_for_aea_tests/test_connections/test_oef/test_oef_serializer.py index 61b264a397..5a36461d30 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_oef/test_oef_serializer.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_oef/test_oef_serializer.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/__init__.py b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/__init__.py index 939cb30143..76c0a3c3de 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/__init__.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_aea_cli.py b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_aea_cli.py index 3d3836d290..47fb0deec4 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_aea_cli.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_aea_cli.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_communication.py b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_communication.py index 507fe2743d..52d96ce1ed 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_communication.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_communication.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_errors.py b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_errors.py index 3ff05342d0..fc34efda32 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_errors.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_client/test_errors.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/__init__.py b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/__init__.py index 939cb30143..76c0a3c3de 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/__init__.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_aea_cli.py b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_aea_cli.py index 4c1875d88a..2018a47e33 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_aea_cli.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_aea_cli.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_communication.py b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_communication.py index 316e7022df..9f66a33200 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_communication.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_communication.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_errors.py b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_errors.py index 0f0a8ed293..d0ddbfbab2 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_errors.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_errors.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_mailbox_service.py b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_mailbox_service.py index da91a7a0bc..d443225f73 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_mailbox_service.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_p2p_libp2p_mailbox/test_mailbox_service.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_p2p_stub/__init__.py b/tests/test_packages_for_aea_tests/test_connections/test_p2p_stub/__init__.py index ebb86374a4..688ddd319b 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_p2p_stub/__init__.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_p2p_stub/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_p2p_stub/test_p2p_stub.py b/tests/test_packages_for_aea_tests/test_connections/test_p2p_stub/test_p2p_stub.py index 025e82dddf..ced4db8bdc 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_p2p_stub/test_p2p_stub.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_p2p_stub/test_p2p_stub.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_soef/__init__.py b/tests/test_packages_for_aea_tests/test_connections/test_soef/__init__.py index 813f053c2e..eff44678dd 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_soef/__init__.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_soef/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_soef/models.py b/tests/test_packages_for_aea_tests/test_connections/test_soef/models.py index 8e1a99fa20..efe6b2a6e7 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_soef/models.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_soef/models.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_soef/test_soef.py b/tests/test_packages_for_aea_tests/test_connections/test_soef/test_soef.py index 4b31d39046..203289df9c 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_soef/test_soef.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_soef/test_soef.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_soef/test_soef_integration.py b/tests/test_packages_for_aea_tests/test_connections/test_soef/test_soef_integration.py index a9742abf04..a94da0b59b 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_soef/test_soef_integration.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_soef/test_soef_integration.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_stub/__init__.py b/tests/test_packages_for_aea_tests/test_connections/test_stub/__init__.py index 163c7eef0f..53db0fc39b 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_stub/__init__.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_stub/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_stub/test_stub.py b/tests/test_packages_for_aea_tests/test_connections/test_stub/test_stub.py index 0da3572fe4..19cb0bf0fa 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_stub/test_stub.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_stub/test_stub.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_tcp/__init__.py b/tests/test_packages_for_aea_tests/test_connections/test_tcp/__init__.py index ca1feef416..c9ee2fe04d 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_tcp/__init__.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_tcp/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_tcp/test_base.py b/tests/test_packages_for_aea_tests/test_connections/test_tcp/test_base.py index 4f928caa7d..a7879aabb6 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_tcp/test_base.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_tcp/test_base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_connections/test_tcp/test_communication.py b/tests/test_packages_for_aea_tests/test_connections/test_tcp/test_communication.py index aae1bfb2dd..707e479b56 100644 --- a/tests/test_packages_for_aea_tests/test_connections/test_tcp/test_communication.py +++ b/tests/test_packages_for_aea_tests/test_connections/test_tcp/test_communication.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_acn.py b/tests/test_packages_for_aea_tests/test_protocols/test_acn.py index 7f18b57549..ac0a28287a 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_acn.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_acn.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_contract_api.py b/tests/test_packages_for_aea_tests/test_protocols/test_contract_api.py index b36f755849..59ebe93ab1 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_contract_api.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_contract_api.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_default.py b/tests/test_packages_for_aea_tests/test_protocols/test_default.py index 1f229e4e4a..c16bc7df4e 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_default.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_default.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_fipa.py b/tests/test_packages_for_aea_tests/test_protocols/test_fipa.py index 4a18de37d3..63552e65dd 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_fipa.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_fipa.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_gym.py b/tests/test_packages_for_aea_tests/test_protocols/test_gym.py index c0ef4d02a2..fed53d3de1 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_gym.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_gym.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_http.py b/tests/test_packages_for_aea_tests/test_protocols/test_http.py index c58158afdc..0bb9348f99 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_http.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_http.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_ledger_api.py b/tests/test_packages_for_aea_tests/test_protocols/test_ledger_api.py index 06663050ff..b231595af3 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_ledger_api.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_ledger_api.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_oef_search.py b/tests/test_packages_for_aea_tests/test_protocols/test_oef_search.py index 7d0335e5f0..d37645e414 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_oef_search.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_oef_search.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_register.py b/tests/test_packages_for_aea_tests/test_protocols/test_register.py index 3d442b0fb3..94b239341d 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_register.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_register.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_signing.py b/tests/test_packages_for_aea_tests/test_protocols/test_signing.py index 6cafc71115..b2c5ead7a8 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_signing.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_signing.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_state_update.py b/tests/test_packages_for_aea_tests/test_protocols/test_state_update.py index 338b7abcb7..2e0104e052 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_state_update.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_state_update.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_protocols/test_tac.py b/tests/test_packages_for_aea_tests/test_protocols/test_tac.py index 9838997398..78d3950a5e 100644 --- a/tests/test_packages_for_aea_tests/test_protocols/test_tac.py +++ b/tests/test_packages_for_aea_tests/test_protocols/test_tac.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/__init__.py b/tests/test_packages_for_aea_tests/test_skills/__init__.py index 9b03f5e132..2f4cc8fbc5 100644 --- a/tests/test_packages_for_aea_tests/test_skills/__init__.py +++ b/tests/test_packages_for_aea_tests/test_skills/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_echo/__init__.py b/tests/test_packages_for_aea_tests/test_skills/test_echo/__init__.py index 4afaab7c37..68930397c4 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_echo/__init__.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_echo/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_echo/test_behaviours.py b/tests/test_packages_for_aea_tests/test_skills/test_echo/test_behaviours.py index 57567c2232..8a8256ef3d 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_echo/test_behaviours.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_echo/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_echo/test_dialogues.py b/tests/test_packages_for_aea_tests/test_skills/test_echo/test_dialogues.py index 4d568689c4..6f425f7d2f 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_echo/test_dialogues.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_echo/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_echo/test_handlers.py b/tests/test_packages_for_aea_tests/test_skills/test_echo/test_handlers.py index 59c69d023f..22bed4e53e 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_echo/test_handlers.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_echo/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/__init__.py b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/__init__.py index c56c597acd..85f446e6b1 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/__init__.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/intermediate_class.py b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/intermediate_class.py index f0bb97c7ee..ec49b1601c 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/intermediate_class.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/intermediate_class.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_behaviours.py b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_behaviours.py index ad358d74bf..4e07298eb7 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_behaviours.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_dialogues.py b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_dialogues.py index b0b5ff1333..44ce1118f7 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_dialogues.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_handlers.py b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_handlers.py index 98bf9b3331..a084ee4f19 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_handlers.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_strategy.py b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_strategy.py index 4a9aff0d32..a865f35978 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_strategy.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_erc1155_client/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/__init__.py b/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/__init__.py index 55d5a2e035..1a1028e2aa 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/__init__.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_behaviours.py b/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_behaviours.py index 7eed7c5e2e..9aed1fd6f4 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_behaviours.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_dialogues.py b/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_dialogues.py index 1f0512a993..3de2575a8a 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_dialogues.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_handlers.py b/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_handlers.py index db771d0f1b..7da5b1a20a 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_handlers.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_models.py b/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_models.py index 306f597876..09e06b143b 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_models.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_generic_buyer/test_models.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/__init__.py b/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/__init__.py index 295a7bbd86..1d18f82aab 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/__init__.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_behaviours.py b/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_behaviours.py index da59f32a49..a1ecb707bb 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_behaviours.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_behaviours.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_dialogues.py b/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_dialogues.py index 026c7e07db..b756dbcee3 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_dialogues.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_handlers.py b/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_handlers.py index 5eba1a2f61..5719c9f0e9 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_handlers.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_models.py b/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_models.py index f2c068e97a..0111af20c5 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_models.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_generic_seller/test_models.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_gym/__init__.py b/tests/test_packages_for_aea_tests/test_skills/test_gym/__init__.py index b26e5ee68b..8c98973ccd 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_gym/__init__.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_gym/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_gym/helpers.py b/tests/test_packages_for_aea_tests/test_skills/test_gym/helpers.py index 5d39402280..94060c108a 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_gym/helpers.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_gym/helpers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_gym/intermediate_class.py b/tests/test_packages_for_aea_tests/test_skills/test_gym/intermediate_class.py index c4e4be8f81..17c4aa19d9 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_gym/intermediate_class.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_gym/intermediate_class.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_gym/test_dialogues.py b/tests/test_packages_for_aea_tests/test_skills/test_gym/test_dialogues.py index 524bcbebc2..378f3d771d 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_gym/test_dialogues.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_gym/test_dialogues.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_gym/test_handlers.py b/tests/test_packages_for_aea_tests/test_skills/test_gym/test_handlers.py index 0ac89c517e..0e89f36be4 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_gym/test_handlers.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_gym/test_handlers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_gym/test_helpers.py b/tests/test_packages_for_aea_tests/test_skills/test_gym/test_helpers.py index 49eb0b94e6..6ddc949c25 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_gym/test_helpers.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_gym/test_helpers.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_gym/test_rl_agent.py b/tests/test_packages_for_aea_tests/test_skills/test_gym/test_rl_agent.py index e8598ea742..0fd05d9442 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_gym/test_rl_agent.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_gym/test_rl_agent.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_gym/test_task.py b/tests/test_packages_for_aea_tests/test_skills/test_gym/test_task.py index aa80258917..55898c2b3c 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_gym/test_task.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_gym/test_task.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_weather_station/__init__.py b/tests/test_packages_for_aea_tests/test_skills/test_weather_station/__init__.py index e5abde4730..60de665104 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_weather_station/__init__.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_weather_station/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_dummy_weather_station_data.py b/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_dummy_weather_station_data.py index 1b4164ff65..a25322ef9d 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_dummy_weather_station_data.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_dummy_weather_station_data.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_registration_db.py b/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_registration_db.py index 2492f3a2c7..5af118a315 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_registration_db.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_registration_db.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_strategy.py b/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_strategy.py index 8f18930b75..e43fd032fa 100644 --- a/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_strategy.py +++ b/tests/test_packages_for_aea_tests/test_skills/test_weather_station/test_strategy.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # ------------------------------------------------------------------------------ # -# Copyright 2018-2022 Fetch.AI Limited +# Copyright 2018-2023 Fetch.AI Limited # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/tox.ini b/tox.ini index 38ef9b50af..e90fbf0c1f 100644 --- a/tox.ini +++ b/tox.ini @@ -11,8 +11,9 @@ isolated_build = True [testenv] basepython = python3 -whitelist_externals = +allowlist_externals = /bin/sh + make passenv = * extras = all deps = poetry @@ -79,7 +80,7 @@ commands = [testenv:check_plugins_code_consistency] skipsdist = True skip_install = True -whitelist_externals = +allowlist_externals = diff commands = make plugin-diffs @@ -87,7 +88,7 @@ commands = [testenv:check_go_code_consistency] skipsdist = True skip_install = True -whitelist_externals = +allowlist_externals = diff commands = make libp2p-diffs @@ -182,7 +183,6 @@ commands = make mypy [testenv:pylint] -whitelist_externals = /bin/sh skipsdist = True commands = poetry run python ./install_packages.py pylint pytest gitpython @@ -233,6 +233,8 @@ commands = [testenv:spell_check] skipsdist = True usedevelop = True +allowlist_externals = + **/spell-check.sh deps = commands = {toxinidir}/scripts/spell-check.sh @@ -251,7 +253,8 @@ skip_install = True passenv = * deps = .[all] -whitelist_externals = /bin/sh +allowlist_externals = + **/sh commands = - /bin/sh -c "rm -fr ./*private_key.txt" {posargs} diff --git a/user-image/README.md b/user-image/README.md index 5caf7df12b..c2d6978b37 100644 --- a/user-image/README.md +++ b/user-image/README.md @@ -14,6 +14,6 @@ First, ./user-image/scripts/docker-publish-img.sh -And then, in `docker-env.sh`, uncomment `DOCKER_IMAGE_TAG=fetchai/aea-user:latest` and comment the alternative line, then run the publish command again: +And then, in `docker-env.sh`, uncomment `DOCKER_IMAGE_TAG=fetchai/aea-user:latest` and comment the alternative line, then run the publish command again: ./user-image/scripts/docker-publish-img.sh diff --git a/user-image/scripts b/user-image/scripts deleted file mode 120000 index 179f9f57c9..0000000000 --- a/user-image/scripts +++ /dev/null @@ -1 +0,0 @@ -../docker-images/scripts \ No newline at end of file diff --git a/user-image/scripts/docker-build-img.sh b/user-image/scripts/docker-build-img.sh new file mode 100644 index 0000000000..3629c267bf --- /dev/null +++ b/user-image/scripts/docker-build-img.sh @@ -0,0 +1,41 @@ +#!/bin/bash -e +# Usage: +# ./docker-build-img.sh -- +# Where: +# * resulting docker build commandline will be: +# docker build $IMMEDIATE_PARAMS -t $DOCKER_IMAGE_TAG $TAIL_PARAMS $DOCKER_BUILD_CONTEXT_DIR +# * DOCKER_IMAGE_TAG and DOCKER_BUILD_CONTEXT_DIR variables are defined in the `docker-env.sh` and/or `docker-env-common.sh` +# +# Examples: +# * the following example provides the `--cpus 4 --compress` parameters to `docker build` command as IMMEDIATE_PARAMS, **ommiting** the TAIL_PARAMS: +# +# ./docker-build-img.sh --cpus 4 ---compress -- +# # the the resulting docker process commandline will be: +# # docker build --cpus 4 --compress -t $DOCKER_IMAGE_TAG $TAIL_PARAMS $DOCKER_BUILD_CONTEXT_DIR +# +# * the following example provides the `--squash` parameters to `docker build` command as IMMEDIATE_PARAMS, and `../../` parameter as TAIL_PARAMS (what corresponds to the context directory, what also means that DOCKER_BUILD_CONTEXT_DIR variable needs to be unset or set to empty string in the `docker-env.sh`): +# +# ./docker-build-img.sh --squash -- ../../ +# # the the resulting docker process commandline will be: +# # docker build --squash -t $DOCKER_IMAGE_TAG ../../ $DOCKER_BUILD_CONTEXT_DIR +# # the `DOCKER_BUILD_CONTEXT_DIR` shall be set to empty string in `docker-env.sh` file. +# NOTE: For more details, please see description for the `split_params()` shell function in the `docker-common.sh` script. + +SCRIPTS_DIR=${0%/*} +. "$SCRIPTS_DIR"/docker-env-common.sh + +docker_build_callback() { + local IMMEDIATE_PARAMS="$1" + local TAIL_PARAMS="$2" + + if [ -n "${DOCKERFILE}" ]; then + TAIL_PARAMS="-f $DOCKERFILE $TAIL_PARAMS" + fi + + local COMMAND="docker build $IMMEDIATE_PARAMS -t $DOCKER_IMAGE_TAG $TAIL_PARAMS $DOCKER_BUILD_CONTEXT_DIR" + + echo $COMMAND + $COMMAND +} + +split_params docker_build_callback "$@" diff --git a/user-image/scripts/docker-publish-img.sh b/user-image/scripts/docker-publish-img.sh new file mode 100644 index 0000000000..4f9dab93db --- /dev/null +++ b/user-image/scripts/docker-publish-img.sh @@ -0,0 +1,13 @@ +#!/bin/bash -e +# NOTE: First docker needs to be authorized to push image to container registry. +# Normally this is done using 'docker login ', where the +# 'registry_url' value is set in the $DOCKER_CONTAINER_REGISTRY environment +# variable which is defined in the 'docker-env-common.sh' script file. +# If you are using the Google cloud docker registry, please run the +# 'gcloud auth configure-docker' instead. + +SCRIPTS_DIR=${0%/*} +. "$SCRIPTS_DIR"/docker-env-common.sh + +docker tag "$DOCKER_IMAGE_TAG" "$REGISTRY_DOCKER_IMAGE_TAG" +docker push "$REGISTRY_DOCKER_IMAGE_TAG"